Oracle共享内存错误

时间:2009-12-11 19:08:21

标签: sql oracle plsql oracle10g

以下查询在10g中生成以下错误:

 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并说“请解决?”

1 个答案:

答案 0 :(得分:0)

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