您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關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
至此,數據庫問題已經模擬出來。
上述就是小編為大家分享的ORA-600 2662錯誤的重現以及解決方法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。