本篇文章給大家分享的是有關Online Redo Log損壞處理的示例分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)主營洪江管理區(qū)網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App定制開發(fā),洪江管理區(qū)h5微信小程序開發(fā)搭建,洪江管理區(qū)網(wǎng)站營銷推廣歡迎洪江管理區(qū)等地區(qū)企業(yè)咨詢
我們一起來看一下非一致性關閉條件下當前日志組刪除的處理。
6、非一致性關閉當前日志組處理
我們回到10g Windows版本進行實驗。
SQL> select group#, archived, status, first_change#,sequence# from v$log;
GROUP# ARCHIVED STATUS FIRST_CHANGE# SEQUENCE#
---------- -------- ---------------- ------------- ----------
1 NO CURRENT 605509 8
2 YES ACTIVE 604411 7
3 YES INACTIVE 604371 6
SQL> shutdown abort;
ORACLE例程已經(jīng)關閉。
SQL>
E:\oracle\product\10.2.0\oradata\orcl>rename REDO01B.LOG REDO01B.LOG_bak
E:\oracle\product\10.2.0\oradata\orcl>rename REDO01A.LOG REDO01A.LOG_bak
SQL> startup
ORACLE例程已經(jīng)啟動。
Total System Global Area 603979776 bytes
Fixed Size 1250380 bytes
Variable Size 218106804 bytes
Database Buffers 377487360 bytes
Redo Buffers 7135232 bytes
數(shù)據(jù)庫裝載完畢。
ORA-00313:無法打開日志組 1 (用于線程 1)的成員
ORA-00312:聯(lián)機日志 1線程 1:
'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ONLINELOG\O1_MF_1_85TNYSWS_.L
OG'
ORA-27041:無法打開文件
OSD-04002:???????
O/S-Error: (OS 2)????????????????
ORA-00312:聯(lián)機日志 1線程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_1_85TNYS8S_.LOG'
ORA-27041:無法打開文件
OSD-04002:???????
O/S-Error: (OS 2)????????????????
之后,使用常規(guī)方法很難打開數(shù)據(jù)庫。
SQL> recover database until cancel;
ORA-00279:更改 605036 (在 09/23/2012 09:01:03生成)對于線程 1是必需的
ORA-00289:建議:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2012_09_23\O1_MF_1_
7_%U_.ARC
ORA-00280:更改 605036 (用于線程 1)在序列 #7中
指定日志: {
auto
ORA-00279:更改 605509 (在 09/23/2012 09:02:53生成)對于線程 1是必需的
ORA-00289:建議:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2012_09_23\O1_MF_1_
8_%U_.ARC
ORA-00280:更改 605509 (用于線程 1)在序列 #8中
ORA-00278:此恢復不再需要日志文件
'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2012_09_23\O1_MF_1
_7_85WQXX8S_.ARC'
ORA-00308:無法打開歸檔日志
'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2012_09_23\O1_MF_1
_8_%U_.ARC'
ORA-27041:無法打開文件
OSD-04002:???????
O/S-Error: (OS 2)????????????????
ORA-01547:警告: RECOVER成功但 OPEN RESETLOGS將出現(xiàn)如下錯誤
ORA-01194:文件 1需要更多的恢復來保持一致性
ORA-01110:數(shù)據(jù)文件 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_SYSTEM_85TSQFJM_.DBF'
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1行出現(xiàn)錯誤:
ORA-01194:文件 1需要更多的恢復來保持一致性
ORA-01110:數(shù)據(jù)文件 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_SYSTEM_85TSQFJM_.DBF'
在處理這個問題上,處理上節(jié)介紹的備份還原的手段,我們沒有太多很好的選擇。但是,如果沒有備份的時候,我們就需要進行冒險操作。
之所以我們無法從mount進入open狀態(tài),主要是源于無法通過文件頭完整性檢驗步驟。在Oracle中,我們可以利用一些后門來讓Oracle不進行檢查,通過open階段。下面我們就需要在參數(shù)中添加這些配置。
SQL> shutdown abort;
ORACLE例程已經(jīng)關閉。
SQL> startup nomount;
ORACLE例程已經(jīng)啟動。
Total System Global Area 603979776 bytes
Fixed Size 1250380 bytes
Variable Size 218106804 bytes
Database Buffers 377487360 bytes
Redo Buffers 7135232 bytes
SQL>
--生成PFILE
SQL> create pfile='d:\pfile.ora' from spfile;
文件已創(chuàng)建。
隱含參數(shù)_allow_resetlogs_corruption可以讓我們避開一致性檢查。在pfile中加入?yún)?shù)行。
(參數(shù)文件內容)
_allow_resetlogs_corruption=TRUE
orcl.__db_cache_size=377487360
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=209715200
orcl.__streams_pool_size=0
之后,嘗試打開數(shù)據(jù)庫。
SQL> shutdown abort
ORACLE例程已經(jīng)關閉。
SQL> startup pfile='d:\pfile.ora';
ORACLE例程已經(jīng)啟動。
Total System Global Area 603979776 bytes
Fixed Size 1250380 bytes
Variable Size 218106804 bytes
Database Buffers 377487360 bytes
Redo Buffers 7135232 bytes
數(shù)據(jù)庫裝載完畢。
ORA-01589:要打開數(shù)據(jù)庫則必須使用 RESETLOGS或 NORESETLOGS選項
SQL> alter database open resetlogs;
數(shù)據(jù)庫已更改。
SQL> conn sys/oracle@orcl as sysdba
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
SQL> select group#, archived, status, first_change#,sequence# from v$log;
GROUP# ARCHIVED STATUS FIRST_CHANGE# SEQUENCE#
---------- -------- ---------------- ------------- ----------
1 NO CURRENT 605510 1
2 YES UNUSED 0 0
3 YES UNUSED 0 0
注意:這種方法是有很多的問題的。加入?yún)?shù)可以讓我們繞開一致性驗證,但是很多場景下,特別是文件損壞的場景下,啟動可能還會遇到其他錯誤信息。一旦我們打開數(shù)據(jù)庫,要明白這個庫是處在危險之中,我們能做的就是將重要數(shù)據(jù)盡快的備份出來。
無論發(fā)生何種類型的錯誤,可用、完整的備份都是我們的救命草。要制定完備的備份策略,經(jīng)常性的檢查備份有效性,防患于未燃。
以上就是Online Redo Log損壞處理的示例分析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。