由drop datafile導致的oracle bug
今天碰到了一個dataguard在10gR2的bug,不管怎麼樣確實是在特定的時間做了特定的操作結果碰到了特定的問題。
這個問題是在10gR2的版本10.2.0.4.0的一個庫中出現的,在做巡檢的時候發現表空間使用率已經很高了,就準備加一些資料檔案把這個問題給修復了,按理說這也是一個常規操作,沒有什麼可圈圈點點的地方。
但是新增完資料檔案之後,過了一會,就收到報警說備庫出了點問題,自己還納悶到底是什麼原因導致的,帶著疑問使用dgmgrl來檢視了一下。
DGMGRL> show configuration;
Configuration
Name: test
Enabled: YES
Protection Mode: MaxPerformance
Fast-Start Failover: DISABLED
Databases:
test - Primary database
stest4 - Physical standby database
stest2 - Physical standby database
Current status for "test":
Warning: ORA-16607: one or more databases have failed
這個問題是在10gR2的版本10.2.0.4.0的一個庫中出現的,在做巡檢的時候發現表空間使用率已經很高了,就準備加一些資料檔案把這個問題給修復了,按理說這也是一個常規操作,沒有什麼可圈圈點點的地方。
但是新增完資料檔案之後,過了一會,就收到報警說備庫出了點問題,自己還納悶到底是什麼原因導致的,帶著疑問使用dgmgrl來檢視了一下。
DGMGRL> show configuration;
Configuration
Name: test
Enabled: YES
Protection Mode: MaxPerformance
Fast-Start Failover: DISABLED
Databases:
test - Primary database
stest4 - Physical standby database
stest2 - Physical standby database
Current status for "test":
Warning: ORA-16607: one or more databases have failed
透過這個,確實發現備庫出了些問題,趕快連線到備庫中,結果檢視資料日誌就發現原來MRP程式給停掉了。
Fri Sep 11 17:58:53 2015
Errors in file /U01/app/oracle/admin/test/bdump/test_mrp0_10953.trc:
ORA-00600: internal error code, arguments: [3689], [21], [], [], [], [], [], []
Errors with log /U01/app/oracle/flash_recovery_area/STEST4/archivelog/2015_09_11/o1_mf_1_7414_bz598mqc_.arc
MRP0: Background Media Recovery terminated with error 600
Fri Sep 11 17:58:55 2015
Errors in file /U01/app/oracle/admin/test/bdump/test_mrp0_10953.trc:
ORA-00600: internal error code, arguments: [3689], [21], [], [], [], [], [], []
Fri Sep 11 17:59:04 2015
Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Fri Sep 11 17:59:04 2015
Fri Sep 11 17:58:53 2015
Errors in file /U01/app/oracle/admin/test/bdump/test_mrp0_10953.trc:
ORA-00600: internal error code, arguments: [3689], [21], [], [], [], [], [], []
Errors with log /U01/app/oracle/flash_recovery_area/STEST4/archivelog/2015_09_11/o1_mf_1_7414_bz598mqc_.arc
MRP0: Background Media Recovery terminated with error 600
Fri Sep 11 17:58:55 2015
Errors in file /U01/app/oracle/admin/test/bdump/test_mrp0_10953.trc:
ORA-00600: internal error code, arguments: [3689], [21], [], [], [], [], [], []
Fri Sep 11 17:59:04 2015
Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Fri Sep 11 17:59:04 2015
看到這個錯誤,發現問題似乎還是有些奇怪,因為關聯的ora錯誤是ora-600
帶著這個疑問,首先想到的就是自己之前碰到過MRP無法啟動的問題,dataguard中MRP無法啟動的問題分析和解決
感興趣可以參考這個連結http://blog.itpub.net/23718752/viewspace-1715472/
結果自己按照當時的問題思路也進行相似的分析,結果還真發現了問題。
使用下面的語句檢視資料檔案。
在備庫檢視:
select file#,df.name,df.ts#,ts.name,df.RFILE# from v$datafile df,v$tablespace ts
where df.ts#=ts.ts#;
FILE# NAME TS# NAME
---------- ------------------------------------------------------------ ---------- --------------------
20 /U01/app/oracle/oradata/test/test_new_data04.dbf 9 TEST_NEW_DATA
21 /U01/app/oracle/oradata/test/test_new_index04.dbf 9 TEST_NEW_DATA
主庫檢視
當然在重建備庫這個繁重的工作之外我還想做一些嘗試。
既然資料字典中不同步,對於drop的操作不支援,我就直接使用alter database datafile ‘xxxxxx' offline drop來搞定這個問題,上次的MRP的問題在11g中就可以這麼解決。
SQL> alter database datafile '/U01/app/oracle/oradata/test/test_new_index04.dbf' offline drop;
Database altered.
---------- ------------------------------------------------------------ ---------- --------------------
20 /U01/app/oracle/oradata/test/test_new_data04.dbf 9 TEST_NEW_DATA
21 /U01/app/oracle/oradata/test/test_new_index04.dbf 9 TEST_NEW_DATA
再次嘗試recover managed standby database disconnect from session發現問題依舊,還是ora-600的錯誤。
這個時候想把database 啟動到read only時也出問題。
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16004: backup database requires recovery
ORA-01196: file 1 is inconsistent due to a failed media recovery session
ORA-01110: data file 1: '/U01/app/oracle/oradata/test/system01.dbf'
帶著這個疑問,首先想到的就是自己之前碰到過MRP無法啟動的問題,dataguard中MRP無法啟動的問題分析和解決
感興趣可以參考這個連結http://blog.itpub.net/23718752/viewspace-1715472/
結果自己按照當時的問題思路也進行相似的分析,結果還真發現了問題。
使用下面的語句檢視資料檔案。
在備庫檢視:
select file#,df.name,df.ts#,ts.name,df.RFILE# from v$datafile df,v$tablespace ts
where df.ts#=ts.ts#;
FILE# NAME TS# NAME
---------- ------------------------------------------------------------ ---------- --------------------
20 /U01/app/oracle/oradata/test/test_new_data04.dbf 9 TEST_NEW_DATA
21 /U01/app/oracle/oradata/test/test_new_index04.dbf 9 TEST_NEW_DATA
主庫檢視
FILE# NAME TS# NAME
---------- ------------------------------------------------------------ ---------- --------------------
20 /U01/app/oracle/oradata/test/test_new_data04.dbf 9 TEST_NEW_DATA
21 /U01/app/oracle/oradata/test/test_new_index04.dbf 10 TEST_NEW_INDEX
透過這個可以發現表空間的資料檔案在兩個庫中不一致。
這個時候聯絡起來ora600其實在錯誤裡面已經暗示出了21的含義
就使用alter tablespace test_new_data drop datafile 'xxxxx'的方式刪除了,然後又建立了一個新的資料檔案test_new_data04.dbf
這麼一個操作也沒有什麼非議之處,但是在10gR2 10.2.0.4.0裡就是不行,因為有一個bug
Bug 5623467 - Corrupt redo from ALTER TABLESPACE DROP DATAFILE (文件 ID 5623467.8)
這個bug,oracle也沒有給出其它可行的意見,除了升級打補丁外,建議就是不要使用drop datafile的命令,但是我已經執行了,你說怎麼辦,只能重建備庫了。---------- ------------------------------------------------------------ ---------- --------------------
20 /U01/app/oracle/oradata/test/test_new_data04.dbf 9 TEST_NEW_DATA
21 /U01/app/oracle/oradata/test/test_new_index04.dbf 10 TEST_NEW_INDEX
透過這個可以發現表空間的資料檔案在兩個庫中不一致。
這個時候聯絡起來ora600其實在錯誤裡面已經暗示出了21的含義
ORA-00600: internal error code, arguments: [3689], [21], [], [], [], [], [], []
這個時候自己就恍然大悟了,自己在給表空間TEST_NEW_DATA新增資料檔案的時候,不小心新增成了test_new_index04.dbf,結果建立好之後發現了這個問題,就使用alter tablespace test_new_data drop datafile 'xxxxx'的方式刪除了,然後又建立了一個新的資料檔案test_new_data04.dbf
這麼一個操作也沒有什麼非議之處,但是在10gR2 10.2.0.4.0裡就是不行,因為有一個bug
Bug 5623467 - Corrupt redo from ALTER TABLESPACE DROP DATAFILE (文件 ID 5623467.8)
當然在重建備庫這個繁重的工作之外我還想做一些嘗試。
既然資料字典中不同步,對於drop的操作不支援,我就直接使用alter database datafile ‘xxxxxx' offline drop來搞定這個問題,上次的MRP的問題在11g中就可以這麼解決。
SQL> alter database datafile '/U01/app/oracle/oradata/test/test_new_index04.dbf' offline drop;
Database altered.
命令執行成功了,但是檢視datafile還是沒有發生變化。
FILE# NAME TS# NAME ---------- ------------------------------------------------------------ ---------- --------------------
20 /U01/app/oracle/oradata/test/test_new_data04.dbf 9 TEST_NEW_DATA
21 /U01/app/oracle/oradata/test/test_new_index04.dbf 9 TEST_NEW_DATA
再次嘗試recover managed standby database disconnect from session發現問題依舊,還是ora-600的錯誤。
這個時候想把database 啟動到read only時也出問題。
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16004: backup database requires recovery
ORA-01196: file 1 is inconsistent due to a failed media recovery session
ORA-01110: data file 1: '/U01/app/oracle/oradata/test/system01.dbf'
所以沒有辦法了,重建備庫了,真是讓人無奈的選擇。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1797653/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle目錄由於TFA觸發bug導致jdb檔案未自動清理引起空間不足Oracle
- 淺複製導致的bug
- 當心ORACLE 12.2 RAC新特性引入的BUG導致ORA-4031Oracle
- Oracle 12.2 BUG :分割槽維護導致的 ORA-600 KKPOFPCD3Oracle
- java由於越界導致的報錯Java
- Containerd 的 Bug 導致容器被重建!如何避免?AI
- 由於無法分配ip而導致的FailedCreatePodSandBoxAI
- 由Nginx的DNS快取導致的訪問404NginxDNS快取
- 年年出妖事,一例由JSON解析導致的"薛定諤BUG"排查過程記錄JSON
- Oracle 12c因bug導致ORA-04031問題處理過程Oracle
- 記php-fpm重啟導致的一個bugPHP
- 12.2.0.1bug導致的Failed to register in OCRLOCAL group.錯誤AI
- MySQL8.0的一個bug導致複製延時MySql
- 【ASK_ORACLE】Oracle 12.2 Bug導致網路卡出現故障後RAC庫未向TCP註冊本地VIP監聽OracleTCP
- Oracle RAC啟動因CTSS導致的異常Oracle
- oracle兩節點RAC,由於gipc導致某節點crs無法啟動問題分析Oracle
- 一個導致JVM實體記憶體消耗大的BugJVM記憶體
- Laravel 多條件查詢時粗心導致的一個 BUGLaravel
- 【案例】Oracle報錯ORA-01194 ORA-01110 由於資料庫SCN不一致導致無法啟動Oracle資料庫
- RAC節點hang住, oracle bug導致了cpu過高,無法啟動叢集隔離Oracle
- spring boot 2.0.0由於版本不匹配導致的NoSuchMethodError問題解析Spring BootError
- Rename or Move a datafile In Oracle 19c RAC-20220117Oracle
- 【Not BUG】微軟Winform窗體中設計上的Bug,會導致程式編譯失敗?不,這不是BUG!微軟ORM編譯
- oracle 序列值導致的主鍵衝突問題Oracle
- openGauss 由於RemoveIPC未關閉導致資料庫crashREM資料庫
- ZooKeeper 避坑指南: ZooKeeper 3.6.4 版本 BUG 導致的資料不一致問題
- Asp.netcore中由於頁面編碼導致的中文亂碼ASP.NETNetCore
- SSL證書出錯是怎麼回事?是由哪些原因導致的?
- oracle的一個bugOracle
- MySQL5.7下面,誤操作導致的drop table db1.tb1; 的恢復方法:MySql
- MYSQL 5.7 升級 8.0 後的 由於字符集導致的大問題 ?MySql
- Oracle RAC日常運維-NetworkManager導致叢集故障Oracle運維
- UE floating pawn movement Bug Set location 導致速度異常發射
- BUG—Nuget包版本不一致導致程式行為與預期不符
- 深入解析 oracle drop table內部原理Oracle
- ORACLE 分割槽索引UNUSABLE導致的DML操作失敗引起的血案Oracle索引
- Oracle SYSAUX 表空間使用率100% 導致的DB 故障OracleUX
- GCC8 編譯最佳化 BUG 導致的記憶體洩漏GC編譯記憶體
- 伺服器由於防火牆問題導致埠不通解決方法伺服器防火牆