溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ORA-00600[kluinit:new add column in directpath 2]

發布時間:2020-08-08 18:16:03 來源:ITPUB博客 閱讀:214 作者:chenoracle 欄目:關系型數據庫

ORA-00600[kluinit:new add column in directpath 2]

環境說明:

DB:Oracle 11.2.0.1.0

OS:Windows Server 2012

問題說明:

---alert_cjcorcl.log( 告警日志)

早上數據庫巡檢時發現報錯如下:

ORA-00600: internal error code, arguments: [kluinit:new add column in directpath 2]

--- cjcorcl_dw00_7236.trc(TRACE 日志)

查看對應的trace 日志發現該報錯和expdp 自動備份有關;

----CHENJCH_expdp_20181203213000.log(expdp 備份日志)

在查詢expdp 備份日志,發現是在備份T_XXX_CJC 表時觸發的ORA-00600 報錯,報錯如下:

ORA-31693: Table data object "CHENJCH"."T_XXX_CJC" failed to load/unload and is being skipped due to error:

ORA-02354: error in exporting/importing data

ORA-00600: internal error code, arguments: [kluinit:new add column in directpath 2], [], [], [], [],

問題分析:

通過報錯信息懷疑在進行expdp 備份時,T_XXX_CJC 表在進行添加列操作,從而觸發了ORA-00600 錯誤;

通過MOS 可以查看到該報錯詳細說明:

ORA-00600 [kluinit:new add column in directpath 2] While Running Expdp ( 文檔 ID 1298313.1)

適用:

Oracle Database - Enterprise Edition - Version 11.1.0.6 to 11.2.0.4 [Release 11.1 to 11.2]
Information in this document applies to any platform.

問題原因:

在通過expdp 備份時,同時某一張表正在新增帶有default 值的列;

A column with "DEFAULT n NOT NULL" is added while the data pump export is running in direct path mode, e.g:
SQL> alter table TAB1 add (COL7 NUMBER(1,0) DEFAULT 0 NOT NULL)

The error has been investigated in  Bug 10209354 : ORA-600[KLUINIT:NEW ADD COLUMN IN DIRECTPATH 2] OCCURS IN EXPDP, closed as not a bug. 
The exception is added intentionally to prevent the table to export in  inconsistent state. It is not advisable to alter the table when the direct path export is running.

解決方案:

direct path export 時,盡量避免進行新加列的操作;

Do not add new column when the direct path export is running. 
From 
Bug 10209354 , it is not advisable to alter the table when the direct path export is running.

新加哪個列導致的問題呢?

通過logmnr 分析問題時間段的歸檔文件:

(1) 查看時間點為2018/12/3 21:36:19 附近的歸檔;

---LAST_DDL_TIME 2018/12/3 21:36:19

select * from user_objects where object_name = 'T_XXX_CJC' ;  

(2)查看問題時間段歸檔原文件已經刪除了;

select name , sequence# , first_time from v$archived_log order by first_change# desc ;

ORA-00600[kluinit:new add column in directpath 2]

需要通過歸檔的備份文件恢復出需要的歸檔文件;

異機恢復:

恢復歸檔備份、logmnr 分析操作都不能在正式環境進行,需要把文件拷貝到測試服務器上在進行操作;

將歸檔備份日志、歸檔備份文件、正式數據庫參數文件、正式數據庫控制文件、正式數據庫dict數據字典上傳到測試服務器上:

C:\Users\Administrator>sqlplus / as sysdba

SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dict20181214.cjcorcldic',dictionary_location => 'E:\backup\dict');

PL/SQL 過程已成功完成。

(1)通過rman備份日志找到需要的歸檔備份文件名稱

---rman_full_2018-12-04.log

段句柄=E:\BACKUP\RMAN\RMAN_ARC_CJCORCL_20181204_7FTJT4QA_1_1.BAK 標記=ARCH_ORCL 注釋=NONE

(2)上傳歸檔備份日志,歸檔備份文件,正式數據庫參數文件,正式數據庫控制文件,正式數據庫dict數據字典到測試服務器上;

(3)參數文件更改目錄位置,并將控制文件放到指定目錄,掛載數據庫;

(4)在測試服務器上,將歸檔目錄,歸檔備份文件目錄重新指定,并還原出需要的歸檔文件;

RMAN >

run{

catalog backuppiece 'E:\arch\backup\RMAN_ARC_CJCORCL_20181204_7FTJT4QA_1_1.BAK' ;

set archivelog destination to 'E:\arch' ;

restore archivelog   sequence between 48306 and 48310 ;

}

ORA-00600[kluinit:new add column in directpath 2]

(5)測試服務器上

SQL > EXECUTE DBMS_LOGMNR.ADD_LOGFILE ( LogFileName => 'E:\arch\CJCORCL_1_48306_954797105.ARC' , Options => dbms_logmnr.new );

SQL > EXECUTE DBMS_LOGMNR.ADD_LOGFILE ( LogFileName => 'E:\arch\CJCORCL_1_48307_954797105.ARC' , Options => dbms_logmnr.addfile );

SQL > EXECUTE DBMS_LOGMNR.ADD_LOGFILE ( LogFileName => 'E:\arch\CJCORCL_1_48308_954797105.ARC' , Options => dbms_logmnr.addfile );

SQL > EXECUTE DBMS_LOGMNR.ADD_LOGFILE ( LogFileName => 'E:\arch\CJCORCL_1_48309_954797105.ARC' , Options => dbms_logmnr.addfile );

SQL > EXECUTE DBMS_LOGMNR.ADD_LOGFILE ( LogFileName => 'E:\arch\CJCORCL_1_48310_954797105.ARC' , Options => dbms_logmnr.addfile );

SQL > EXECUTE dbms_logmnr.start_logmnr ( dictfilename => 'E:\arch\backup\dict20181214.cjcorcldic' );

PL / SQL procedure successfully completed

SQL > create table log_20181205 as select * from v$logmnr_contents ;

Table created

SQL > EXECUTE dbms_logmnr.end_logmnr ;

PL / SQL procedure successfully completed

(6)查詢

SQL >

select scn , timestamp , sql_redo , sql_undo

  from log_20181205

  where upper ( sql_redo ) like '%T_XXX_CJC%'

   and upper ( sql_redo ) like '%ALTER%'

  order by 2 ;  

ORA-00600[kluinit:new add column in directpath 2]

結論: 是如下SQL在expdp備份時觸發了ORA-00600: [kluinit:new add column in directpath 2]錯誤,建議在expdp時盡量避免增加列的操作;

ALTER TABLE T_XXX_CJC ADD (COLXXX1 NUMBER (10) DEFAULT 1 NOT NULL);

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長?。?!

ORA-00600[kluinit:new add column in directpath 2]

ORA-00600[kluinit:new add column in directpath 2]


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女