9i java_pool_size 設定不當 導致無法使用者exp 邏輯匯出

wengtf發表於2012-06-06

問題:

因為資料庫做遷移,新庫只做了share_pool和db_cache_size調整,做exp整庫匯出時出現如下錯誤:
連線到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出整個資料庫...
. 正在匯出表空間定義
. 正在匯出配置檔案
. 正在匯出使用者定義
. 正在匯出角色
. 正在匯出資源成本
. 正在匯出回退段定義
. 正在匯出資料庫連結
. 正在匯出序號
. 正在匯出目錄別名
. 正在匯出上下文名空間
. 正在匯出外部函式庫名稱
. 匯出 PUBLIC 型別同義詞
EXP-00008: 遇到 ORACLE 錯誤 4031
ORA-04031: 無法分配 4032 位元組的共享記憶體 ("shared pool","unknown object","joxs heap init","ioc_allocate_pal")
EXP-00000: 匯出終止失敗

分析:

1、看這表象第一是想到share pool大小是不是太小,故調整重啟後再次,錯誤依舊,檢視alert日誌,提示:Tue Jun 05 08:20:38 2012
Errors in file s:\stat\admin\udump\stat_ora_3760.trc:
ORA-04031: 無法分配 4032 位元組的共享記憶體 ("shared pool","unknown object","joxs heap init","ioc_allocate_pal")

2、再看stat_ora_3760.trc:
Dump file s:\stat\admin\udump\stat_ora_3760.trc
Tue Jun 05 08:20:38 2012
ORACLE V9.2.0.1.0 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Instance name: stat

Redo thread mounted by this instance: 1

Oracle process number: 27

Windows thread id: 3760, image: ORACLE.EXE


*** SESSION ID:(31.15805) 2012-06-05 08:20:38.000
ioc_allocate (size: 4096, heap name: *** SGA ***, flags: 9) caught 4031
*** 2012-06-05 08:20:38.000
ksedmp: internal or fatal error
ORA-04031: 無法分配 4032 位元組的共享記憶體 ("shared pool","unknown object","joxs heap init","ioc_allocate_pal")
Current SQL statement for this session:
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM2) SYNNAM2,             DBMS_JAVA.LONGNAME(SYNTAB) SYNTAB,             TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO      FROM   SYS.EXU9PTS      ORDER  BY SYNTIME
----- Call Stack Trace -----
calling              call     entry                argument values in hex     
location             type     point                (? means dubious value)    
-------------------- -------- -------------------- ----------------------------
_ksedmp+147          CALLrel  _ksedst+0           
_ksfdmp.108+e        CALLrel  _ksedmp+0            3
1003387C             CALLreg  00000000             72EB190 3
100EA9AB             CALLrel  10033630             805D5A8 23B77D74 1000 805C6BC
                                                   9
100323C0             CALLreg  00000000             805D5A8 805C670
10066030             CALLrel  10032310             805D5A8 100EA990 805C670 0
                                                   805C254 805C63C 805C640
                                                   FFFFFFFF
---這個dump提示有句sql語句看到沒:SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM2) SYNNAM2,             DBMS_JAVA.LONGNAME(SYNTAB) SYNTAB,             TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO      FROM   SYS.EXU9PTS      ORDER  BY SYNTIME
再用dbms_java的包查詢同義詞,有木有!莫非跟oralce裡面某個java的元件有關?遂檢視java_pool_size 發現為0,貌似有點頭緒了。

解決:

修改java_pool_size為適合大小,我改成10M,再次備份,問題修復!

---相關參考來至chinaunix

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22907091/viewspace-732015/,如需轉載,請註明出處,否則將追究法律責任。

相關文章