聊聊Oracle Data Recovery Advisor(DRA)(上)
對DBA而言,資料備份、還原是日常工作的基本功。Oracle發展到今天,自動化、智慧化是一個重要的發展方向。資料庫可以自動的診斷問題故障,並且解決修復錯誤,可能離我們並不遙遠。
資料備份和還原,在Oracle DBA學習過程中,佔到了很大的篇幅。從冷備份到熱備份,從完全恢復到非完全恢復,這個過程中涉及了很多的技術細節和知識點。一些DBA初始接觸這些概念和操作,容易被弄亂。Oracle 11g推出的Data Recovery Advisor,就是提供給我們一個自動診斷、修復資料庫的選擇。
1、Advisor
從9i和10g開始,我們就開始接觸各種的Advisor。從記憶體大小,例如SGA、Buffer Cache和PGA,到儲存段結構Segment Space Advisor和SQL Tuning Advisor,Oracle在試圖構建起一個Advisor Framework。
Oracle的Advisor大都是有“後臺執行、自動建議”的特點。這些Advisor往往是和Oracle自動後臺作業繫結,由一個或者多個後臺程式進行自動資訊收集診斷,並且最後生成診斷建議。
應該說,Advisor是Oracle邁向自動化、智慧化的一個重要戰略步驟。本篇介紹的Data Recovery Advisor就是應用於資料恢復領域的一個重要Advisor元件。
Data Recovery Advisor(以下簡稱DRA)是Oracle的一個內建(Build-In)工具,用於進行資料錯誤、損壞的報告和修復建議。比如,DRA能夠自動發現當前存在壞塊,並且檢視備份資料庫(RMAN),給出修復建議和語句。DRA甚至可以做到“一鍵式”的恢復,敲一個修復命令,就自動執行修復指令碼,將錯誤解除。
DRA是和Oracle經典備份還原工具RMAN繫結使用的。DRA是自動在後臺進行資料庫狀態檢查和資料收集,一旦發現錯誤,就會自動的進行修復建議的提示。DRA目前可以在兩種方式下進行工作,一個是資料庫啟動障礙,比如啟動過程報錯。另一個是執行過程障礙,例如執行中資料庫異常損壞(如資料檔案被後臺刪除)。
目前DRA可以支援User介面和命令列兩種方式工作。在OEM中,我們點選修復連結,檢視或者直接解決問題。在命令列中,我們可以使用RMAN的命令進行處理。
2、環境準備
所謂,“巧婦難為無米之炊”。應該注意:DRA是一個自動輔助工具,對DBA而言,是一個規範操作的輔助者,而不是“點石成金”的“萬靈藥”。DRA進行資料恢復所依據的,也是Oracle原有的備份還原體系,並沒有引入什麼特殊功能。換句話說,一個非歸檔、無備份、無冗餘配置的資料庫,有致命錯誤發生的時候,DRA也是無能為力的。
這也就是說,備份還是要做。我們首先在實驗前,進行一個完整備份。選擇Oracle 11g進行實驗,開啟歸檔模式。
[oracle@bspdev ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 6 06:09:29 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 849530880 bytes
(篇幅原因,有省略……)
Redo Buffers 5132288 bytes
Database mounted.
--檢視是否歸檔模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 172
Next log sequence to archive 174
Current log sequence 174
使用RMAN進行一個全備份。
SQL> alter database open;
Database altered.
[oracle@bspdev ~]$ rman nocatalog
Recovery Manager: Release 11.2.0.1.0 - Production on Fri Sep 6 06:14:28 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
RMAN> connect target /
connected to target database: WILSON (DBID=3906514064)
using target database control file instead of recovery catalog
RMAN> backup database plus archivelog delete input;
Starting backup at 06-SEP-13
current log archived
(略過細節......)
在RMAN中,我們可以使用list failure all;的DRA命令來檢視當前存在的錯誤列表。
RMAN> list failure all;
no failures found that match specification
下面,我們分別選擇啟動過程和執行過程兩個場景進行恢復演示。
3、啟動過程資料庫故障演示
在啟動過程出現資料庫錯誤佔到了資料庫錯誤的相當比例。DRA是可以在這個過程中幫助我們解決問題的。
首先,我們先製造一個問題。當前存在兩個控制檔案,互為備份。
SQL> col name for a100;
SQL> select name from v$controlfile;
NAME
---------------------------------------------------------------
/u01/oradata/WILSON/controlfile/o1_mf_7xt44jkr_.ctl
/u01/flash_recovery_area/WILSON/controlfile/o1_mf_7xt44kbv_.ctl
意外中斷系統,刪除一個控制檔案。
SQL> conn / as sysdba
Connected.
SQL> shutdown abort;
ORACLE instance shut down.
[oracle@bspdev ~]$ cd /u01/oradata/WILSON/controlfile/
[oracle@bspdev controlfile]$ ls -l
total 9856
-rw-r----- 1 oracle oinstall 10076160 Sep 6 06:36 o1_mf_7xt44jkr_.ctl
[oracle@bspdev controlfile]$ mv o1_mf_7xt44jkr_.ctl o1_mf_7xt44jkr_.ctl.bak
[oracle@bspdev controlfile]$ ls -l
total 9856
-rw-r----- 1 oracle oinstall 10076160 Sep 6 06:36 o1_mf_7xt44jkr_.ctl.bak
再次啟動的時候,資料庫必然會有一個報錯的動作。
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 849530880 bytes
Fixed Size 1339824 bytes
Variable Size 616566352 bytes
Database Buffers 226492416 bytes
Redo Buffers 5132288 bytes
ORA-00205: error in identifying control file, check alert log for more info
定位控制檔案失敗,從alert log中找到內容。
MMNL started with pid=16, OS id=4418
starting up 1 shared server(s) ...
ORACLE_BASE from environment = /u01
Fri Sep 06 07:06:42 2013
ALTER DATABASE MOUNT
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o1_mf_7xt44jkr_.ctl'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-205 signalled during: ALTER DATABASE MOUNT...
Fri Sep 06 07:06:44 2013
Checker run found 1 new persistent data failures
在進入mount階段的時候,Oracle發現control file不能讀取的問題。注意alert log片段的最後一行,Oracle說:我引入的checker不斷在進行輪詢過程,發現這個問題還存在。這個時候,熟練的DBA是可以繼續工作的,或者用備份進行恢復,或者複製一個完全版本。但是在DRA時代,我們還可以“問問Oracle Advisor怎麼辦?”。
此時,我們使用rman,來檢視資訊。
RMAN> list failure ;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
3842 CRITICAL OPEN 06-SEP-13 Control file /u01/oradata/WILSON/controlfile/o1_mf_7xt44jkr_.ctl is missing
資訊非常詳細,Oracle給這個錯誤一個編號,並且分了級別,有了說明資訊。明確說明問題在哪兒。
List failure命令是將所有的錯誤失敗顯示出來,我們還可以針對一個failure id進行資訊顯示。
RMAN> list failure 3842 detail;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
3842 CRITICAL OPEN 06-SEP-13 Control file /u01/oradata/WILSON/controlfile/o1_mf_7xt44jkr_.ctl is missing
Impact: Database cannot be mounted
List failure是第一個DRA命令。Advise failure是問問Oracle怎麼辦?
RMAN> advise failure;
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
3842 CRITICAL OPEN 06-SEP-13 Control file /u01/oradata/WILSON/controlfile/o1_mf_7xt44jkr_.ctl is missing
Impact: Database cannot be mounted
analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
analyzing automatic repair options complete
Mandatory Manual Actions
========================
no manual actions available
Optional Manual Actions
=======================
no manual actions available
Automated Repair Options
========================
Option Repair Description –可用的修復措施
------ ------------------
1 Use a multiplexed copy to restore control file /u01/oradata/WILSON/controlfile/o1_mf_7xt44jkr_.ctl
Strategy: The repair includes complete media recovery with no data loss
Repair script. /u01/diag/rdbms/wilson/wilson/hm/reco_148645850.hm
Oracle DRA說,我們可以使用Control File的另一個冗餘複製進行恢復。並且給出了一個repair script。
[oracle@bspdev controlfile]$ cat cat /u01/diag/rdbms/wilson/wilson/hm/reco_148645850.hm
cat: cat: No such file or directory
# restore control file using multiplexed copy
restore controlfile from '/u01/flash_recovery_area/WILSON/controlfile/o1_mf_7xt44kbv_.ctl';
sql 'alter database mount';
兩條語句,都是要求在rman下面執行。一個是使用當前映象檔案進行恢復,另一個是啟動資料庫。
我們聽從DRA的指令,手工執行一下指令碼命令。此時,資料庫處在一箇中間啟動狀態。
--例項已經啟動
[oracle@bspdev controlfile]$ ps -ef | grep pmon
oracle 4360 1 0 07:06 ? 00:00:00 ora_pmon_wilson
oracle 4551 3270 0 07:15 pts/0 00:00:00 grep pmon
SQL> select status from v$instance;
STATUS
------------
STARTED
RMAN中執行程式指令碼。
--執行指令碼命令
RMAN> restore controlfile from '/u01/flash_recovery_area/WILSON/controlfile/o1_mf_7xt44kbv_.ctl';
Starting restore at 06-SEP-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=/u01/oradata/WILSON/controlfile/o1_mf_7xt44jkr_.ctl
output file name=/u01/flash_recovery_area/WILSON/controlfile/o1_mf_7xt44kbv_.ctl
Finished restore at 06-SEP-13
RMAN> sql 'alter database mount';
sql statement: alter database mount
released channel: ORA_DISK_1
此時,資料庫可以順利的open,並且原來的list failure錯誤資訊消失。
--進入open狀態
SQL> conn / as sysdba
Connected.
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database open;
Database altered.
[oracle@bspdev controlfile]$ ls -l
total 19712
-rw-r----- 1 oracle oinstall 10076160 Sep 6 07:21 o1_mf_7xt44jkr_.ctl
-rw-r----- 1 oracle oinstall 10076160 Sep 6 06:36 o1_mf_7xt44jkr_.ctl.bak
RMAN> list failure all;
no failures found that match specification
這個案例告訴我們,RMAN中的DRA可以做到在啟動過程中,不斷診斷發現問題,提供解決方案。更重要的是還可以提供狀態修改的指令碼語句。
下面,我們進行一個Open狀態故障的診斷,並且看看怎麼在DRA如何實現“一鍵式”系統修復。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2147716/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle優化案例-關閉auto space advisor和sql tuning advisor(十九)Oracle優化SQL
- Oracle SQL優化之sql tuning advisorOracleSQL優化
- 資料恢復:FonePaw Data Recovery for Mac資料恢復Mac
- Oracle 11 sql tuning advisor sql access advisor關閉以及job檢視與停止OracleSQL
- John Deere Service Advisor EDL V3 Electronic Data Link Diagnostic Kit
- oracle SQL最佳化器SQL Tuning Advisor (STA)OracleSQL
- 硬碟資料恢復工具:Eassiy Data Recovery for mac硬碟資料恢復Mac
- Joyoshare iPhone Data Recovery MaciPhone資料恢復工具iPhoneMac資料恢復
- iPhone資料恢復工具:TunesKit iPhone Data Recovery for MaciPhone資料恢復Mac
- EaseUS Data Recovery Wizard Mac資料恢復軟體Mac資料恢復
- SQL Access Advisor、SQL Tuning Advisor 測試SQL
- Macos專業資料恢復工具:Aiseesoft Data Recovery for MacMac資料恢復AI
- Bitwar Data Recovery-最快的資料救援解決方案
- AOP - Advisor
- Oracle data link建立Oracle
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 安卓資料恢復工具:Mac FoneLab Android Data Recovery for Mac安卓資料恢復MacAndroid
- 資料恢復軟體:FonePaw Data Recovery mac中文版資料恢復Mac
- 4.1.6 Oracle Restart 與 Oracle Data Guard 整合OracleREST
- Oracle Data Guard Broker元件Oracle元件
- Oracle Data Guard簡介Oracle
- 資料恢復:FonePaw Data Recovery for Mac v3.6.0啟用版資料恢復Mac
- Do Your Data Recovery 安全可靠的資料恢復軟體資料恢復
- FonePaw Data Recovery for Mac(資料恢復) v2.6.0啟用版Mac資料恢復
- Oracle RAC 重置db_recovery_file_dest_size引數Oracle
- Oracle10g釋放flash_recovery_area(轉)Oracle
- 1 關於 Oracle Data GuardOracle
- 2 Oracle Data Guard 安裝Oracle
- 1 Oracle Data Guard Broker 概念Oracle
- Oracle Data Guard和Broker概述Oracle
- SQL Access Advisor(zt)SQL
- Macos專業資料恢復工具:Aiseesoft Data Recovery for Mac中文版Mac資料恢復AI
- 安卓手機資料恢復軟體:FonePaw Android Data Recovery for Mac安卓資料恢復AndroidMac
- AnyMP4 iPhone Data Recovery for Mac iOS Toolkit資料恢復軟體iPhoneMaciOS資料恢復
- Do Your Data Recovery for Mac安全可靠的資料恢復軟體Mac資料恢復
- Oracle資料泵(Oracle Data Pump) 19cOracle
- 【ASK_ORACLE】Oracle Data Guard(一)DG架構Oracle架構
- Oracle自帶工具sql優化集-SQL Tuning Advisor (使用心得體會)OracleSQL優化
- ORACLE SELECT INTO NO_DATA_FOUND問題Oracle