stream pool設定過小導致impdp失敗

myownstars發表於2011-03-31

資料泵匯入時候遇到以下問題,
[oracle@justin pump]$ impdp justin/*** directory=pump dumpfile=justin_20110316.dmp

Import: Release 11.2.0.1.0 - Production on Thu Mar 31 12:32:35 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

UDI-31623: operation generated ORACLE error 31623
ORA-31623: a job is not attached to this session via the specified handle
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3263
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4488
ORA-06512: at line 1

檢視metalink,有以下解釋
Cause
For submitting an export job with datapump utility, we use queues, streams and java objects.
SQL tracing confirms that.

If we see any component is not valid in the database, we will see these errors.
By querying dba_registry we find the different component and their status.

SELECT comp_name, status, version
FROM dba_registry;


Solution
We can validate different components in the database by running $ORACLE_HOME/rdbms/admin/catpatch.sql via SQL*Plus:


spool catpatch.log
connect / as sysdba
shutdown immediate
startup migrate
SELECT comp_name, version, status
FROM dba_registry;
spool off

If you are on 10g Release 2, then perform.:

connect / as sysdba
spool dictreload.log
startup restrict
alter system set shared_pool_size = 512M scope=spfile;
alter system set java_pool_size = 150M scope=spfile;
alter system set aq_tm_processes = 1 scope=spfile;
alter system set cluster_database = false scope=spfile; -- If on RAC
shutdown immediate
startup upgrade
spool off
alter system set cluster_database = true scope=spfile; -- If on RAC
shutdown immediate
startup


看了感覺完全不搭界,於是檢視alertlog,原來是streams pool設定過小造成的
ORA-04031: unable to allocate 56 bytes of shared memory ("streams pool","unknown object","streams pool","fixed allocation callback")
Incident details in: /oracle10g/diag/rdbms/justin/justin/incident/incdir_40167/justin_ora_10439_i40167.trc
檢視sga,只有最小的564M,該引數又不能直接透過alter命令修改
SQL> show parameter sga_ma

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 564M
SQL> ALTER SYSTEM set sga_max_size=1g;
ALTER SYSTEM set sga_max_size=1g
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

手工修改init檔案,將sga_max_size設定成2g,然後生成spfile,再次執行匯入成功

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

相關文章