LOGMINER當前日誌出現ORA-310和ORA-334錯誤
測試LOGMINER的時候出現了ORA-310和ORA-334錯誤。
測試程式碼如下:
SQL> SELECT GROUP# FROM V$LOG WHERE STATUS = 'CURRENT';
GROUP#
----------
2
SQL> SELECT MEMBER FROM V$LOGFILE WHERE GROUP# = 2;
MEMBER
--------------------------------------------------------------------
/oracle/oradata/orcl/redo02.log
SQL> EXEC DBMS_LOGMNR.ADD_LOGFILE('/oracle/oradata/orcl/redo02.log', DBMS_LOGMNR.NEW)
PL/SQL procedure successfully completed.
SQL> EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG)
PL/SQL procedure successfully completed.
SQL> CREATE TABLE T_BAK_LOGMNR
AS SELECT * FROM V$LOGMNR_CONTENTS;
CREATE TABLE T_BAK_LOGMNR AS SELECT * FROM V$LOGMNR_CONTENTS
*
ERROR at line 1:
ORA-00310: archived log contains sequence 98; sequence 95 required
ORA-00334: archived log: '/oracle/oradata/orcl/redo02.log'
SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.
SQL> EXEC DBMS_LOGMNR.END_LOGMNR
PL/SQL procedure successfully completed.
SQL> EXEC DBMS_LOGMNR.ADD_LOGFILE('/oracle/oradata/orcl/redo02.log', DBMS_LOGMNR.NEW)
PL/SQL procedure successfully completed.
SQL> EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG)
PL/SQL procedure successfully completed.
SQL> CREATE TABLE T_BAK_LOGMNR
AS SELECT * FROM V$LOGMNR_CONTENTS;
CREATE TABLE T_BAK_LOGMNR AS SELECT * FROM V$LOGMNR_CONTENTS
*
ERROR at line 1:
ORA-00310: archived log contains sequence 101; sequence 98 required
ORA-00334: archived log: '/oracle/oradata/orcl/redo02.log'
SQL> EXEC DBMS_LOGMNR.END_LOGMNR
PL/SQL procedure successfully completed.
SQL> SELECT GROUP# FROM V$LOG WHERE STATUS = 'CURRENT';
GROUP#
----------
2
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
Session altered.
SQL> SELECT GROUP#, SEQUENCE#, STATUS, FIRST_TIME, NEXT_TIME FROM V$LOG;
GROUP# SEQUENCE# STATUS FIRST_TIME NEXT_TIME
---------- ---------- ---------------- ------------------- -------------------
1 100 INACTIVE 2011-09-29 17:03:26 2011-09-29 17:03:51
2 101 CURRENT 2011-09-29 17:03:51
3 99 INACTIVE 2011-09-29 17:02:52 2011-09-29 17:03:26
第一次出現這個錯誤的時候,很快意識到自己犯了一個低階的錯誤,對當前日誌進行了LOGMINER,導致錯誤的產生。
但是SWITCH LOGFILE之後,問題居然仍然會出現。檢查當前的日誌,發現當前日誌居然又會到了GROUP 2,說明第二次進行LOGMINER的時候同樣是當前日誌。
仔細整理了一下思路,發現問題的原因。第一次導致錯誤的時候只是認為是由於LOGMINER當前日誌所致,並沒有仔細研究錯誤資訊。由於採用CREATE TABLE AS SELECT * FROM V$LOGMNR_CONTENTS的方法,且檢視中查詢的是當前日誌中的資訊,就會導致CREATE TABLE產生的日誌出現在V$LOGMNR_CONTENTS檢視中,而檢視中的記錄使得CREATE TABLE產生更多的內容,並最終導致了一個死迴圈。
當聯機日誌寫滿後,Oracle自動切換,但是LOGMINER並沒有結束,而是繼續抽取新的日誌,知道三個日誌都被寫滿,這是Oracle要切換的時候發現第一個日誌仍然被使用,於是出現了ORA-310和ORA-334的錯誤。而第二次開始前的切換,恰好使得聯機日誌切回第二個日誌,於是錯誤完全的重演了一次。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-708529/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20150705]LOGMINER分析當前日誌注意.txt
- 當前日誌損壞的案例
- 當前日誌損壞的案例(轉)
- Python 輸出當前日期和時間Python
- 增加日誌檔案,修改當前日誌檔案大小
- 當前日誌組全部損壞的恢復
- 丟失活動或當前日誌組的恢復
- 使用flashback快速解決當前日誌檔案丟失
- 當前日誌檔案壞了的處理辦法
- 使用JavaScript實現獲取當前日期JavaScript
- Jquery對當前日期的操作(格式化當前日期)jQuery
- 告警日誌出現skgpspawn failed category 27142錯誤AIGo
- GetDlgItem() 出現錯誤Git
- /initrd目錄的作用和當刪除時出現的錯誤解決方法(轉)
- 為什麼錯誤日誌裡面出現"httpd:couldnotsetsocketoptionTC(轉)httpd
- Opencv出現detecMultiScale錯誤OpenCV
- Oracle online redo log日誌 (當前或非當前日誌) 損壞之後的DB恢復Oracle
- SqlServer獲取當前日期SQLServer
- js獲取當前日期JS
- 當Ruby的model名字出錯時,在現實view時顯示錯誤的提示View
- Laravel 出現 419 錯誤Laravel
- AS打包出現app:transformClassesAndResourcesWithProguardForRelease錯誤APPORM
- 使用 sudo 命令出現錯誤
- FTP出現426錯誤FTP
- Logminer日誌挖掘
- LOGMINER日誌分析
- 排查錯誤日誌
- mysql慢查詢和錯誤日誌分析MySql
- Python獲取當前日期和日期差計算Python
- mysql 日誌之錯誤日誌MySql
- Flutter 最常出現的典型錯誤Flutter
- 配置nagios出現的錯誤iOS
- 執行Bex 出現 61704 錯誤
- Servlet訪問WebService出現錯誤ServletWeb
- apache出現 403 permission 和404 not fund錯誤(解決方法)Apache
- 動手為王——利用logminer挖掘日誌恢復誤操作
- log4j不輸出日誌錯誤分析
- logminer 日誌分析案例