非歸檔模式 無法用備份修復新建的表
非歸檔模式下,做一個冷備份。
然後建立一個新表。
刪除該表所在的資料檔案,然後用備份來修復
修復完後,該表依舊無法訪問
alert日誌裡的錯誤資訊
處理方法,用 dbms_repair 來跳過該壞塊
檢查有壞塊的物件
跳過該壞塊
現在,test表可以使用了,不過 131塊上的資料沒有了。
點選(此處)摺疊或開啟
-
RMAN> shutdown immediate;
-
-
database closed
-
database dismounted
-
Oracle instance shut down
-
-
RMAN> startup mount;
-
-
connected to target database (not started)
-
Oracle instance started
-
database mounted
-
-
Total System Global Area 1068937216 bytes
-
-
Fixed Size 2235208 bytes
-
Variable Size 616563896 bytes
-
Database Buffers 444596224 bytes
-
Redo Buffers 5541888 bytes
-
-
RMAN> backup database;
-
-
Starting backup at 31-JUL-14
-
allocated channel: ORA_DISK_1
-
channel ORA_DISK_1: SID=133 device type=DISK
-
channel ORA_DISK_1: starting full datafile backup set
-
channel ORA_DISK_1: specifying datafile(s) in backup set
-
input datafile file number=00004 name=/u02/oradata/proddb/users01.dbf
-
input datafile file number=00006 name=/u02/oradata/proddb/myundo01.dbf
-
input datafile file number=00001 name=/u02/oradata/proddb/system01.dbf
-
input datafile file number=00002 name=/u02/oradata/proddb/sysaux01.dbf
-
input datafile file number=00008 name=/u02/oradata/proddb/ts_small01.dbf
-
input datafile file number=00003 name=/u02/oradata/proddb/newts01.dbf
-
input datafile file number=00009 name=/u02/oradata/proddb/ts_small02.dbf
-
channel ORA_DISK_1: starting piece 1 at 31-JUL-14
-
channel ORA_DISK_1: finished piece 1 at 31-JUL-14
-
piece handle=/u02/backup/prod/PRODDB/backupset/2014_07_31/o1_mf_nnndf_TAG20140731T054048_9xn3s13c_.bkp tag=TAG20140731T054048 comment=NONE
-
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
-
channel ORA_DISK_1: starting full datafile backup set
-
channel ORA_DISK_1: specifying datafile(s) in backup set
-
including current control file in backup set
-
including current SPFILE in backup set
-
channel ORA_DISK_1: starting piece 1 at 31-JUL-14
-
channel ORA_DISK_1: finished piece 1 at 31-JUL-14
-
piece handle=/u02/backup/prod/PRODDB/backupset/2014_07_31/o1_mf_ncsnf_TAG20140731T054048_9xn3skmq_.bkp tag=TAG20140731T054048 comment=NONE
-
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
-
Finished backup at 31-JUL-14
-
-
RMAN> open database;
-
- database opened
點選(此處)摺疊或開啟
-
scott@PRODDB>create table test
-
2 tablespace newts
-
3 as select * from emp;
-
-
Table created.
-
-
scott@PRODDB>select empno, rowid, dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block#, dbms_rowid.rowid_row_number(rowid) row#
-
2 from test; -- 該表的資料都在 檔案3 的第 131塊中
-
-
EMPNO ROWID FILE# BLOCK# ROW#
-
---------- ------------------ ---------- ---------- ----------
-
7369 AAADaKAADAAAACDAAA 3 131 0
-
7499 AAADaKAADAAAACDAAB 3 131 1
-
7521 AAADaKAADAAAACDAAC 3 131 2
-
7566 AAADaKAADAAAACDAAD 3 131 3
-
7654 AAADaKAADAAAACDAAE 3 131 4
-
7698 AAADaKAADAAAACDAAF 3 131 5
-
7782 AAADaKAADAAAACDAAG 3 131 6
-
7788 AAADaKAADAAAACDAAH 3 131 7
-
7839 AAADaKAADAAAACDAAI 3 131 8
-
7844 AAADaKAADAAAACDAAJ 3 131 9
-
7876 AAADaKAADAAAACDAAK 3 131 10
-
7900 AAADaKAADAAAACDAAL 3 131 11
-
7902 AAADaKAADAAAACDAAM 3 131 12
-
7934 AAADaKAADAAAACDAAN 3 131 13
-
- 14 rows selected.
刪除該表所在的資料檔案,然後用備份來修復
點選(此處)摺疊或開啟
-
[oracle@Redhat55 ~]$ rm /u02/oradata/proddb/newts01.dbf
-
-
RMAN> restore datafile 3;
-
-
Starting restore at 31-JUL-14
-
allocated channel: ORA_DISK_1
-
channel ORA_DISK_1: SID=133 device type=DISK
-
-
channel ORA_DISK_1: starting datafile backup set restore
-
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
-
channel ORA_DISK_1: restoring datafile 00003 to /u02/oradata/proddb/newts01.dbf
-
channel ORA_DISK_1: reading from backup piece /u02/backup/prod/PRODDB/backupset/2014_07_31/o1_mf_nnndf_TAG20140731T054048_9xn3s13c_.bkp
-
channel ORA_DISK_1: piece handle=/u02/backup/prod/PRODDB/backupset/2014_07_31/o1_mf_nnndf_TAG20140731T054048_9xn3s13c_.bkp tag=TAG20140731T054048
-
channel ORA_DISK_1: restored backup piece 1
-
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
-
Finished restore at 31-JUL-14
-
-
RMAN> recover datafile 3;
-
-
Starting recover at 31-JUL-14
-
using channel ORA_DISK_1
-
-
starting media recovery
-
media recovery complete, elapsed time: 00:00:00
-
- Finished recover at 31-JUL-14
修復完後,該表依舊無法訪問
點選(此處)摺疊或開啟
-
scott@PRODDB>select * from test; -- 提示 該表的 資料塊 ( 檔案3 第131塊) 損壞
-
select * from test
-
*
-
ERROR at line 1:
-
ORA-01578: ORACLE data block corrupted (file # 3, block # 131)
-
ORA-01110: data file 3: \'/u02/oradata/proddb/newts01.dbf\'
- ORA-26040: Data block was loaded using the NOLOGGING option
alert日誌裡的錯誤資訊
點選(此處)摺疊或開啟
-
Thu Jul 31 05:55:02 2014
-
Errors in file /u01/app/oracle/diag/rdbms/proddb/Prod/trace/Prod_ora_7161.trc (incident=44604):
-
ORA-01578: ORACLE data block corrupted (file # 3, block # 131)
- ORA-01110: data file 3: \
處理方法,用 dbms_repair 來跳過該壞塊
點選(此處)摺疊或開啟
-
sys@PRODDB>BEGIN -- 建立修復的表 放在USERS表空間下
-
2 DBMS_REPAIR.ADMIN_TABLES (
-
3 TABLE_NAME => \'REPAIR_TABLE\',
-
4 TABLE_TYPE => dbms_repair.repair_table,
-
5 ACTION => dbms_repair.create_action,
-
6 TABLESPACE => \'USERS\');
-
7 END;
-
8 /
-
- PL/SQL procedure successfully completed.
檢查有壞塊的物件
點選(此處)摺疊或開啟
-
sys@PRODDB>DECLARE num_corrupt INT;
-
2 BEGIN
-
3 num_corrupt := 0;
-
4 DBMS_REPAIR.CHECK_OBJECT (
-
5 SCHEMA_NAME => \'SCOTT\',
-
6 OBJECT_NAME => \'TEST\',
-
7 REPAIR_TABLE_NAME => \'REPAIR_TABLE\',
-
8 corrupt_count => num_corrupt);
-
9 DBMS_OUTPUT.PUT_LINE(\'number corrupt: \' || TO_CHAR (num_corrupt));
-
10 END;
- 11 /
- sys@PRODDB>COL CORRUPT_DESCRIPTION FOR A20
- sys@PRODDB>select BLOCK_ID, CORRUPT_TYPE, CORRUPT_DESCRIPTION from REPAIR_TABLE; -- 檢視壞塊的塊號
-
- BLOCK_ID CORRUPT_TYPE CORRUPT_DESCRIPTION
- ---------- ------------ --------------------
-
131 6148
跳過該壞塊
點選(此處)摺疊或開啟
-
sys@PRODDB>DECLARE num_fix INT;
-
2 BEGIN
-
3 num_fix := 0;
-
4 DBMS_REPAIR.FIX_CORRUPT_BLOCKS (
-
5 SCHEMA_NAME => \'SCOTT\',
-
6 OBJECT_NAME=> \'TEST\',
-
7 OBJECT_TYPE => dbms_repair.table_object,
-
8 REPAIR_TABLE_NAME => \'REPAIR_TABLE\',
-
9 FIX_COUNT=> num_fix);
-
10 DBMS_OUTPUT.PUT_LINE(\'num fix: \' || to_char(num_fix));
-
11 END;
-
12 /
-
-
PL/SQL procedure successfully completed.
-
-
sys@PRODDB>BEGIN
-
2 DBMS_REPAIR.SKIP_CORRUPT_BLOCKS (
-
3 SCHEMA_NAME => \'SCOTT\',
-
4 OBJECT_NAME => \'TEST\',
-
5 OBJECT_TYPE => dbms_repair.table_object,
-
6 FLAGS => dbms_repair.SKIP_FLAG);
-
7 END;
-
8 /
-
- PL/SQL procedure successfully completed.
現在,test表可以使用了,不過 131塊上的資料沒有了。
點選(此處)摺疊或開啟
-
sys@PRODDB>select * from scott.test;
-
-
no rows selected
-
-
sys@PRODDB>set linesize 100
-
sys@PRODDB>desc scott.test
-
Name Null? Type
-
----------------------------------------------------- -------- ------------------------------------
-
EMPNO NUMBER(4)
-
ENAME VARCHAR2(10)
-
JOB VARCHAR2(9)
-
MGR NUMBER(4)
-
HIREDATE DATE
-
SAL NUMBER(7,2)
-
COMM NUMBER(7,2)
- DEPTNO NUMBER(2)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12238525/viewspace-1243391/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 無備份恢復(歸檔模式)模式
- 備份&恢復之四:非歸檔模式下的備份與恢復模式
- 非歸檔無備份下控制檔案丟失的恢復
- rman 非歸檔模式下停庫備份與恢復模式
- 非歸檔模式下的資料備份模式
- rman 非歸檔模式下open庫備份與mount恢復模式
- 基於非歸檔的冷備份恢復
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- 【備份恢復】非歸檔模式下丟失任意資料檔案 恢復操作模式
- 無備份恢復(歸檔模式)已刪除資料檔案模式
- 歸檔模式無備份丟失資料檔案後恢復模式
- 不完全恢復(資料檔案備份--新建表空間--控制檔案備份--日誌歸檔檔案)
- 無檔案備份、擁有所有歸檔的恢復
- 【備份恢復】無備份線上恢復非關鍵資料檔案
- 非歸檔模式下異常斷電導致的資料庫無法啟動的問題修復模式資料庫
- 歸檔模式下,offline表空間備份與恢復模式
- 恢復之非歸檔模式下資料庫非正常關閉的備份與恢復模式資料庫
- RMAN備份、恢復實驗室 之 備份篇 【歸檔模式】模式
- 歸檔模式,恢復沒有備份的資料檔案模式
- Oracle的奇葩設定之非歸檔模式與RMAN備份Oracle模式
- 恢復之非歸檔模式下的恢復模式
- RMAN備份及恢復歸檔日誌的語法
- 一次無備份、非歸檔資料庫斷電恢復的全過程資料庫
- Oracle11g物理STANDBY開啟模式應用歸檔時無法執行備份Oracle模式
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- 非歸檔資料庫RMAN備份資料庫
- rman恢復--歸檔模式有備份,丟失資料檔案的恢復模式
- 一次無備份、非歸檔資料庫斷電恢復的全過程 [轉]資料庫
- 非歸檔模式恢復資料庫模式資料庫
- 無新表空間資料檔案備份,歸檔都存在的還原與恢復
- rac歸檔模式/非歸檔模式下檔案建至本地儲存修復方法-ORA-01157模式
- 歸檔模式有備份丟失資料檔案後恢復模式
- Oracle歸檔模式和非歸檔模式Oracle模式
- 非歸檔模式改為歸檔模式模式
- 歸檔模式與非歸檔模式的切換模式
- 基於歸檔的冷備份恢復
- 冷備份+歸檔日誌的恢復
- 【備份恢復】歸檔模式下丟失系統關鍵資料檔案 利用RMAN備份恢復模式