代码之家  ›  专栏  ›  技术社区  ›  wadesworld

Oracle共享内存错误

  •  1
  • wadesworld  · 技术社区  · 15 年前

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

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

    得到了:

    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列的表,所以如果查询本身是问题的根源,我会感到惊讶。另外,蟾蜍可以显示我所有的DDL。

    我应该找什么东西?或者我应该将此错误发送给我的DBA并说“请修复?”

    1 回复  |  直到 15 年前
        1
  •  0
  •   Philip Schlump    15 年前

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