【原】ORA-31626問題小計


作者:david_zhang@sh 【轉載時請以超鏈接形式標明文章】

鏈接:http://www.cnblogs.com/david-zhang-index/archive/2012/08/04/2622442.html

首先看數據庫版本

 1 SQL> select * from v$version;
 2 
 3 BANNER -------------------------------------------------------------------------------- 
 4 
 5 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 
 6 
 7 PL/SQL Release 11.2.0.1.0 - Production 
 8 
 9 CORE    11.2.0.1.0      Production 
10 
11 TNS for Linux: Version 11.2.0.1.0 - Production 
12 
13 NLSRTL Version 11.2.0.1.0 - Production

先說一下背景,目的是將A庫中的bond schema用戶數據導入到B庫中,采用expdp和impdp方式進行導出和導入,數據庫版本一直,當在B庫進行導入的時候出現如下報錯,這個問題比較有意思,注意看下面代碼第2行

猜測1.B庫system表空間沒有自動擴展,空間不足導致,導致問題?

猜測2.從下面代碼第2行猜測,導出的數據中包含A庫system空間的數據(操作人可能用system用戶將bond數據導出,而且忘記加上參數sechems=bond),當在B庫用bond用戶導入的時候就出現2行問題?

猜測3.expdp和impdp相關的數據字典出了問題

1 ORA-31626: job does not exist
2 ORA-31637: cannot create job SYS_IMPORT_SCHEMA_01 for user SYSTEM
3 ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
4 ORA-06512: at "SYS.KUPV$FT_INT", line 798
5 ORA-39244: Event to disable dropping null bit image header during relational select
6 ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
7 ORA-06512: at "SYS.KUPC$QUE_INT", line 1825
8 ORA-01658: unable to create INITIAL extent for

先看問題1.查詢下系統表空間是否自動擴展,這里提示一下,表空間是個邏輯概念,並不真正存在,我們要看的是里面的數據文件是否自動擴展

 1 SQL> desc dba_data_files
 2  Name                                      Null?    Type
 3  ----------------------------------------- -------- ----------------------------
 4  FILE_NAME                                          VARCHAR2(513)
 5  FILE_ID                                            NUMBER
 6  TABLESPACE_NAME                                    VARCHAR2(30)
 7  BYTES                                              NUMBER
 8  BLOCKS                                             NUMBER
 9  STATUS                                             VARCHAR2(9)
10  RELATIVE_FNO                                       NUMBER
11  AUTOEXTENSIBLE                                     VARCHAR2(3)
12  MAXBYTES                                           NUMBER
13  MAXBLOCKS                                          NUMBER
14  INCREMENT_BY                                       NUMBER
15  USER_BYTES                                         NUMBER
16  USER_BLOCKS                                        NUMBER
17  ONLINE_STATUS                                      VARCHAR2(7)
 1 SQL> select TABLESPACE_NAME ,FILE_NAME ,AUTOEXTENSIBLE from dba_data_files;
 2 
 3 TABLESPACE FILE_NAME                                          AUT
 4 ---------- -------------------------------------------------- ---
 5 USERS      /u01/app/oracle/oradata/oracle/users01.dbf         YES
 6 UNDOTBS1   /u01/app/oracle/oradata/oracle/undotbs01.dbf       YES
 7 SYSAUX     /u01/app/oracle/oradata/oracle/sysaux01.dbf        YES
 8 SYSTEM     /u01/app/oracle/oradata/oracle/system01.dbf        YES
 9 DATA01     /u01/app/oracle/oradata/oracle/data01.dbf          NO
10 SP         /u01/app/oracle/oradata/oracle/sp01.dbf            NO

可以看出系統表空間為自動擴展
如果不為自動擴展,可以采用如下語句將表空間改為自動擴展,這里拿DATA01表空間為例:

1 SQL> alter database datafile '/u01/app/oracle/oradata/oracle/data01.dbf' autoextend on maxsize unlimited;
2 
3 Database altered.
 1 SQL> select TABLESPACE_NAME ,FILE_NAME ,AUTOEXTENSIBLE from dba_data_files;
 2 
 3 TABLESPACE FILE_NAME                                          AUT
 4 ---------- -------------------------------------------------- ---
 5 USERS      /u01/app/oracle/oradata/oracle/users01.dbf         YES
 6 UNDOTBS1   /u01/app/oracle/oradata/oracle/undotbs01.dbf       YES
 7 SYSAUX     /u01/app/oracle/oradata/oracle/sysaux01.dbf        YES
 8 SYSTEM     /u01/app/oracle/oradata/oracle/system01.dbf        YES
 9 DATA01     /u01/app/oracle/oradata/oracle/data01.dbf          YES
10 SP         /u01/app/oracle/oradata/oracle/sp01.dbf            NO

題外話,增加數據文件方法:

 1 SQL> alter tablespace DATA01 add datafile '/u01/app/oracle/oradata/oracle/data02.dbf' size 50m;
 2 
 3 Tablespace altered.
 4 
 5 SQL> select TABLESPACE_NAME ,FILE_NAME ,AUTOEXTENSIBLE from dba_data_files;
 6 
 7 TABLESPACE FILE_NAME                                          AUT
 8 ---------- -------------------------------------------------- ---
 9 USERS      /u01/app/oracle/oradata/oracle/users01.dbf         YES
10 UNDOTBS1   /u01/app/oracle/oradata/oracle/undotbs01.dbf       YES
11 SYSAUX     /u01/app/oracle/oradata/oracle/sysaux01.dbf        YES
12 SYSTEM     /u01/app/oracle/oradata/oracle/system01.dbf        YES
13 DATA01     /u01/app/oracle/oradata/oracle/data01.dbf          YES
14 SP         /u01/app/oracle/oradata/oracle/sp01.dbf            NO
15 DATA01     /u01/app/oracle/oradata/oracle/data02.dbf          NO

再看問題2.問題2個人認為人為原因很多,要與操作人確認,當時的操作語言是否正確,甚至查看到當時操作的語句進行核對。

再看問題3.重建數據字典,執行catalog.sql and catproc.sql來配置后台數據字典,system用戶登錄執行:

1 sql>@?/rdbms/admin/catalog.sql
2 sql>@?/rdbms/admin/catproc.sql

總結:數據庫改動前先要先backup,另提供根據錯誤號定位問題方法: oerr ora 31637


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM