Backup And Recovery User's Guide-從RMAN開始-恢復單個的資料塊
RMAN可以恢復單個的損壞的資料塊。
當RMAN為了備份而對檔案執行完全掃描之後,任何損壞的資料塊都會列在V$DATABASE_BLOCK__CORRUPTION中。
損壞也會在預警日誌、跟蹤檔案、SQL查詢的結果中報告。
練習:恢復資料塊步驟
--1. 獲得損壞的資料塊的塊號,首先獲得預警日誌檔案、跟蹤檔案的位置 sys@TESTDB11>select * from v$diag_info; NAME VALUE ------------------------- ---------------------------------------------------------------------- Diag Enabled TRUE ADR Base /u01/app/oracle ADR Home /u01/app/oracle/diag/rdbms/testdb12/TestDB12 Diag Trace /u01/app/oracle/diag/rdbms/testdb12/TestDB12/trace Diag Alert /u01/app/oracle/diag/rdbms/testdb12/TestDB12/alert Diag Incident /u01/app/oracle/diag/rdbms/testdb12/TestDB12/incident Diag Cdump /u01/app/oracle/diag/rdbms/testdb12/TestDB12/cdump Health Monitor /u01/app/oracle/diag/rdbms/testdb12/TestDB12/hm Default Trace File /u01/app/oracle/diag/rdbms/testdb12/TestDB12/trace/TestDB12_ora_5852.trc
Active Problem Count 0 Active Incident Count 0
11 rows selected. --2. 開啟RMAN連線到目標資料庫 --3. 執行RECOVER命令,恢復資料塊 --3.1 恢復所有損壞的資料塊 RMAN> RECOVER CORRUPTION LIST; --3.2 恢復單個的資料塊 RMAN> RECOVER DATAFILE 1 BLOCK 233, 235 DATAFILE 2 BLOCK 100 TO 200; |
# 1. 先對資料庫進行備份 # 2. 在/home/oracle目錄下建立檔案damage_datafile.sh
sqlplus -s system/system < set echo off set heading off set feed off set verify off
spool rowid.sh select min(dbms_rowid.rowid_block_number(rowid)) from scott.emp; spool off
spool blksize.sh select value from v\$parameter where name ='db_block_size'; spool off
spool file.sh select file_name from dba_data_files where tablespace_name = (select tablespace_name from dba_tables where table_name = 'EMP' and owner = 'SCOTT'); spool off exit stop
FILE=`cat file.sh` BLKSIZ=`cat blksize.sh` START1=`cat rowid.sh`; START2=`expr ${START1} + 1`
dd if=`echo ${FILE}` of=tab1 bs=`echo ${BLKSIZ}` count=`echo ${START1}` dd if=`echo ${FILE}` of=tab2 bs=`echo ${BLKSIZ}` count=1 dd if=`echo ${FILE}` of=tab3 bs=`echo ${BLKSIZ}` skip=${START2}
cat tab1 > file cat tab2 >> file cat tab3 >> file
cp file ${FILE}
# 3. 修改指令碼檔案的許可權並執行它,對資料檔案進行破壞 oracle@Redhat55.cuug.net:/home/oracle> chmod u+x damage_datafile.sh oracle@Redhat55.cuug.net:/home/oracle> ./damage_datafile.sh
151
8192
/u01/app/oracle/oradata/TestDB12/users001.dbf 151+0 records in 151+0 records out 1236992 bytes (1.2 MB) copied, 0.022293 seconds, 55.5 MB/s 1+0 records in 1+0 records out 8192 bytes (8.2 kB) copied, 3.3e-05 seconds, 248 MB/s 489+0 records in 489+0 records out 4005888 bytes (4.0 MB) copied, 0.044283 seconds, 90.5 MB/s
# 4. 再次檢視emp表,會提示資料檔案有壞塊 sys@TESTDB12>select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 rows selected. # 4.1 感覺好像沒有影響,因為資料來自於database buffer cache,所以對buffer cache清空 sys@TESTDB12>alter system flush buffer_cache;
System altered. # 4.2 提示有壞塊 sys@TESTDB12>select * from scott.emp * ERROR at line 1:
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1081183/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Backup And Recovery User's Guide-從RMAN開始-恢復整個資料庫GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-恢復表空間GUIIDE
- Backup And Recovery User's Guide-從RMAN開始-還原和恢復資料庫檔案GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-備份資料庫GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-使用資料恢復指導診斷和修復錯誤GUIIDE資料恢復
- Backup And Recovery User's Guide-從RMAN開始-指令碼化RMAN操作GUIIDE指令碼
- Backup And Recovery User's Guide-從RMAN開始-概覽RMAN環境GUIIDE
- Backup And Recovery User's Guide-從RMAN開始-開始使用RMAN並連線到資料庫GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-顯示預設的RMAN配置GUIIDE
- Backup And Recovery User's Guide-從RMAN開始-備份資料庫-增量備份GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-使用閃回資料庫來回退資料庫GUIIDE資料庫
- Backup And Recovery User's Guide-執行完全資料庫恢復GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-驗證資料庫檔案和備份GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-備份資料庫-典型的備份選項GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-RMAN操作報表-列表顯示備份GUIIDE
- Backup And Recovery User's Guide-從RMAN開始-練習:對資料庫進行增量備份GUIIDE資料庫
- Backup And Recovery User's Guide-恢復資料庫到祖先incarnationGUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-備份處於非歸檔模式的資料庫GUIIDE模式資料庫
- Backup And Recovery User's Guide-RMAN資料修復概念-RMAN介質恢復GUIIDE
- Backup And Recovery User's Guide-從RMAN開始-RMAN操作報表-資料庫檔案和備份報告GUIIDE資料庫
- Backup And Recovery User's Guide-恢復的取消(並行介質恢復)GUIIDE並行
- Backup And Recovery User's Guide-為完全資料庫恢復做準備GUIIDE資料庫
- Backup And Recovery User's Guide-執行不完全資料庫恢復GUIIDE資料庫
- Backup And Recovery User's Guide-執行資料庫時間點恢復GUIIDE資料庫
- Backup And Recovery User's Guide-允許恢復損壞塊:階段4GUIIDE
- Backup And Recovery User's Guide-執行完全資料庫恢復-執行開啟的資料庫的恢復GUIIDE資料庫
- Backup And Recovery User's Guide-執行完全資料庫恢復-執行整個資料庫的完全恢復GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-維護RMAN備份-cross-checking備份GUIIDEROS
- Backup And Recovery User's Guide-從RMAN開始-維護RMAN備份-刪除過期的備份GUIIDE
- Backup And Recovery User's Guide-執行完全資料庫恢復-關於完全資料庫恢復GUIIDE資料庫
- Backup And Recovery User's Guide-從RMAN開始-備份資料庫-備份處於歸檔模式的資料庫GUIIDE資料庫模式
- Backup And Recovery User's Guide-使用RECOVER命令的自動恢復GUIIDE
- Backup And Recovery User's Guide-恢復處於非歸檔模式的資料庫GUIIDE模式資料庫
- Backup And Recovery User's Guide-執行RMAN表空間時間點恢復(TSPIRT)GUIIDE
- Backup And Recovery User's Guide-RMAN資料修復概念GUIIDE
- Backup And Recovery User's Guide-執行完全資料庫恢復-執行關閉的資料庫的恢復GUIIDE資料庫
- Backup And Recovery User's Guide-介質恢復問題解決GUIIDE
- Backup And Recovery User's Guide-時間點恢復的基本概念GUIIDE