ORA-600(2662)錯誤的重現和解決(一)
前兩天同事在測試DATA GUARD的時候將主庫的ONLINE日誌意外覆蓋,造成資料庫無法開啟,採用隱含引數的方法開啟又碰到ORA-600錯誤,最後採用設定EVENTS的方式解決。
由於是在別人的機器上操作,而且很多操作都是摸索進行,因此沒有將操作記錄下來。現在打算重現一下問題並簡單記錄解決過程。
這篇首先嚐試重現問題。
現有環境,Oracle10.2.0.3 for windows資料庫。為了完全模擬問題的方式情況,首先建立STANDBY資料庫。
在建立STANDBY資料庫之前,首先對資料庫進行備份。這樣一旦測試出現問題,導致被損壞的資料庫無法恢復,也可以透過這個備份來恢復資料庫。
下面為建立STANDBY資料庫進行準備,這裡只列出操作就不詳細描述了:
SQL> ALTER DATABASE FORCE LOGGING;
資料庫已更改。
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ytk,ytks)';
系統已更改。
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=E:\oracle\oradata\YTK\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ytk';
系統已更改。
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ytks LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ytks';
系統已更改。
SQL> ALTER SYSTEM SET FAL_SERVER=ytks;
系統已更改。
SQL> ALTER SYSTEM SET FAL_CLIENT=ytk;
系統已更改。
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
系統已更改。
建立PFILE:
SQL> CREATE PFILE='E:\ORACLE\ORADATA\YTKS\INITYTKS.ORA' FROM SPFILE;
檔案已建立。
新增並修改下面的初始化引數:
*.audit_file_dest='E:\oracle\admin\ytks\adump'
*.background_dump_dest='E:\oracle\admin\ytks\bdump'
*.control_files='E:\ORACLE\ORADATA\YTK_S\CONTROLFILE\CONTROL01.CTL'
*.core_dump_dest='E:\oracle\admin\ytks\cdump'
*.user_dump_dest='E:\oracle\admin\ytks\udump'
*.fal_client='ytks'
*.fal_server='ytk'
*.log_archive_dest_1='LOCATION=E:\oracle\oradata\ytks\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ytks'
*.log_archive_dest_2='SERVICE=ytk LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ytk'
standby_archive_dest='LOCATION=E:\oracle\oradata\ytks\archivelog'
db_unique_name='ytks'
lock_name_space='ytks'
db_file_name_convert=('E:\oracle\oradata\ytk', 'E:\oracle\oradata\ytks')
log_file_name_convert=('E:\oradle\oradata\ytk', 'E:\oracle\oradata\ytks')
需要注意一點,LOG_FILE_NAME_CONVERT引數設定有誤,E:\oracle被寫成了E:\oraDle。這個錯誤意味著LOG_FILE_NAME_CONVERT引數失去了意義。且由於PRIMARY資料庫和STANDBY資料庫處於同一臺伺服器上,這樣STANDBY資料庫在啟動RESETLOG後,會將PRIMARY資料庫的LOGFILE清除掉。
關閉資料庫,採用冷備份的方式,將資料檔案複製到STANDBY資料庫的所在目錄:
SQL> SHUTDOWN IMMEDIATE
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
E:\>COPY E:\ORACLE\ORADATA\YTK\DATAFILE\* E:\ORACLE\ORADATA\YTKS\DATAFILE
E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_SYSAUX_1TDY3TRF_.DBF
E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_SYSTEM_1TDY2CXS_.DBF
E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_TEMP_1TDY49L2_.TMP
E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_UNDOTBS1_1TDY3GNZ_.DBF
E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_USERS_1TDY4JMK_.DBF
E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_YANGTK_1THCKSRW_.DBF
E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_YANGTK_22MWCD5C_.DBF
E:\ORACLE\ORADATA\YTK\DATAFILE\TEST01.DBF
已複製 8 個檔案。
E:\>COPY E:\ORACLE\ORADATA\YTK\ONLINELOG\* E:\ORACLE\ORADATA\YTKS\ONLINELOG
E:\ORACLE\ORADATA\YTK\ONLINELOG\REDO01.LOG
E:\ORACLE\ORADATA\YTK\ONLINELOG\REDO02.LOG
E:\ORACLE\ORADATA\YTK\ONLINELOG\REDO03.LOG
已複製 3 個檔案。
啟動PRIMARY資料庫建立STANDBY CONTROLFILE:
SQL> STARTUP
ORACLE 例程已經啟動。
Total System Global Area 251658240 bytes
Fixed Size 1290012 bytes
Variable Size 163578084 bytes
Database Buffers 79691776 bytes
Redo Buffers 7098368 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'E:\ORACLE\ORADATA\YTKS\CONTROLFILE\CONTROL01.CTL';
資料庫已更改。
E:\>COPY E:\ORACLE\10.2\DATABASE\PWDYTK.ORA E:\ORACLE\10.2\DATABASE\PWDYTKS.ORA
已複製 1 個檔案。
複製資料庫密碼檔案後,下面建立ORACLE的服務:
E:\>ORADIM -NEW -SID YTKS -STARTMODE MANUAL
例項已建立。
編輯tnsnames.ora和listener.ora檔案,新增STANDBY資料庫資訊,並重啟監聽。
下面啟動STANDBY資料庫到MOUNT狀態:
SQL> CONN /@YTKS AS SYSDBA
已連線到空閒例程。
SQL> CREATE SPFILE FROM PFILE='E:\ORACLE\ORADATA\YTKS\INITYTKS.ORA';
檔案已建立。
SQL> STARTUP MOUNT
ORACLE 例程已經啟動。
Total System Global Area 251658240 bytes
Fixed Size 1290012 bytes
Variable Size 83886308 bytes
Database Buffers 159383552 bytes
Redo Buffers 7098368 bytes
資料庫裝載完畢。
由於引數LOG_FILE_NAME_CONVERT設定有誤,將STANDBY資料庫置於接受歸檔狀態時,後覆蓋PRIMARY資料庫的日誌,從而導致PRIMARY資料庫出現錯誤。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
資料庫已更改。
下面關閉PRIMARY資料庫就會出現錯誤:
SQL> CONN /@YTK AS SYSDBA
已連線。
SQL> SHUTDOWN IMMEDIATE
ORA-03113: 通訊通道的檔案結束
SQL> CONN /@YTK AS SYSDBA
已連線到空閒例程。
SQL> STARTUP
ORA-03113: 通訊通道的檔案結束
檢查alert檔案已經出現了錯誤:
Errors in file e:\oracle\admin\ytk\bdump\ytk_lgwr_3588.trc:
ORA-00314: 日誌 1 (用於執行緒 1) 要求的序號 1333 與 0 不匹配
ORA-00312: 聯機日誌 1 執行緒 1: 'E:\ORACLE\ORADATA\YTK\ONLINELOG\REDO01.LOG'
Tue Dec 11 16:14:05 2007
Errors in file e:\oracle\admin\ytk\bdump\ytk_lgwr_3588.trc:
ORA-00314: 日誌 1 (用於執行緒 1) 要求的序號 1333 與 0 不匹配
ORA-00312: 聯機日誌 1 執行緒 1: 'E:\ORACLE\ORADATA\YTK\ONLINELOG\REDO01.LOG'
Tue Dec 11 16:14:05 2007
LGWR: terminating instance due to error 314
Instance terminated by LGWR, pid = 3588
至此,資料庫問題已經模擬出來。下一篇會介紹問題的解決。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2142149/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-600(2662)錯誤的重現和解決(二)
- 深入分析ora-600 2662錯誤系列一
- 解決ORA-600(16164)錯誤的過程(一)
- 伺服器出現500錯誤的原因和解決辦法伺服器
- ORA-600 [2662]故障處理
- ORA-600(17069)錯誤的解決過程
- sql出現結果集錯誤以及出現ora-600或者ora-7445錯誤的解決方法思路SQL
- ORA-04031錯誤分析和解決
- ORA-600(kffmXpGet)錯誤
- ora-371錯誤的原因和解決方法
- 解決了一例Shutdown時碰到Ora-600錯誤的問題
- 雲伺服器出現502錯誤的原因分析和解決方案伺服器
- 解決ORA-600(16164)錯誤的過程(二)
- 解決掉電導致的ORA-600(4194)錯誤
- 執行create table as 報ora-600的錯誤的解決方案
- svn的操作,報錯,和解決方案 一。
- 表空間正在熱備份時關閉例項重啟報錯的重現和解決
- php7 使用 phpunit 部分錯誤和解決方案PHP
- BlueHost SSH連線常見錯誤和解決方法
- ORA-600(kcbgcur_1)錯誤GC
- ORA-600 [ttcgcshnd-1 ]錯誤GC
- ORA-600(kclgclk_7)錯誤GC
- ORA-600(kcbnew_3)錯誤
- ORA-600(qersqCloseRem-2)錯誤REM
- ORA-600(qctopn1)錯誤
- ORA-600(kcblasm_1)錯誤ASM
- ORA-600(qkaffsindex5)錯誤Index
- ORA-600(kghuclientasp_03)錯誤client
- ORA-600(ttcgcshnd-2)錯誤GC
- ORA-600(kolaslGetLength-1)錯誤
- ORA-600(kghfremptyds)和ORA-600(kghasp1)錯誤REM
- ora-600內部錯誤的型別型別
- ORA-01502錯誤成因和解決方法
- Nginx502錯誤原因和解決方法總結Nginx
- 5個常見可用性錯誤和解決方案
- ORA-600[4000]/[4097]錯誤的處理
- ORA-600(kssadd: null parent)錯誤Null
- ORA-600(504)(row cache objects)錯誤Object