2009-12-11 157 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池空間。