2009-12-11 160 views
1

以下查询生成低于10g中的错误:Oracle共享存储器错误

select DBMS_METADATA.GET_DDL('TABLE','TEST_TABLE','TEST') from dual; 

GOT:

ORA-04031: unable to allocate 128 bytes of shared memory ("shared pool","SELECT /*+rule*/ SYS_XMLGEN(...","sql area","qeeOpt: qeesCreateOpt") 
ORA-06512: at "SYS.DBMS_METADATA", line 1546 
ORA-06512: at "SYS.DBMS_METADATA", line 1583 
ORA-06512: at "SYS.DBMS_METADATA", line 1901 
ORA-06512: at "SYS.DBMS_METADATA", line 2792 
ORA-06512: at "SYS.DBMS_METADATA", line 4333 
ORA-06512: at line 1 

从一些阅读,看来此问题可以通过调节某些共享的方式解决Oracle的内存参数。

但是,任何人都可以提供一些额外的信息,可能的原因的错误?这只是一个没有大约10列的单个表格,所以如果查询本身是问题的根源,我会感到惊讶。另外,Toad可以显示我所有的DDL。

我在找什么东西?或者,我应该只是将这个错误发送给我的DBA,然后说“请修复?”

+0

发送给您的DBA。这就是为什么他们付给他们半价钱的原因。 – 2009-12-11 19:12:27

回答

0

DBMS_METADATA是一个非常大的PL/SQL包,它需要加载到共享池中。如果你希望它执行,那么你需要让DBA增加共享池。你也可能(在9i和10i上)需要增加Java池。在我看来,他们已经改变了DBMS_METADATA的内部,并且不再需要太多的Java池空间。