ORACLE-資料恢復

taotao_number1發表於2008-04-28
  oracle:9.2.0.1.0
  sid:xianhe
  
  一:準備工作
  
  把資料庫改為歸檔模式
  
  SQL> startup mount
  ORACLE 例程已經啟動。
  
  Total System Global Area 126950220 bytes
  Fixed Size          453452 bytes
  Variable Size       109051904 bytes
  Database Buffers      16777216 bytes
  Redo Buffers         667648 bytes
  資料庫裝載完畢。
  SQL> alter database archivelog;
  
  資料庫已更改。
  
  SQL> alter database open;
  
  資料庫已更改。
  
  SQL>
  
  設定成自動歸檔
  SQL> alter system set log_archive_start = true scope=spfile;
  
  系統已更改。
  
  確定資料庫在歸檔模式下並是自動存檔的
  SQL> archive log list
  資料庫日誌模式      存檔模式
  自動存檔       啟用
  存檔終點      D:oracleora92RDBMS
  最早的概要日誌序列   2
  下一個存檔日誌序列  4
  當前日誌序列      4
  SQL>
  
  乾淨的關閉資料庫,做一個完全的冷備份。
  
  二:開始實驗
  
  實驗1:描述如下。
  
  資料庫系統資料檔案和回退段遭破壞的情況下的恢復。此時資料庫的狀態是關閉的。
  
  先啟動資料庫,用scott使用者建立test表,並插入兩條資料。
  
  SQL> create table scott.test
   2 (id int);
  
  表已建立。
  
  SQL> insert into scott.test values(1);
  
  已建立 1 行。
  
  SQL> insert into scott.test values(2);
  
  已建立 1 行。
  
  SQL> commit;
  
  提交完成。
  
  假設資料庫遭意外被迫關閉,並且系統資料檔案丟失。
  
  SQL> shutdown abort
  ORACLE 例程已經關閉。
  
  把oracle服務停掉,刪除SYSTEM01.dbf和UNDOTBS01.DBF檔案
  
  啟動服務
  
  啟動資料庫, 提示如下錯誤
  SQL> startup
  ORACLE 例程已經啟動。
  
  Total System Global Area 126950220 bytes
  Fixed Size          453452 bytes
  Variable Size       109051904 bytes
  Database Buffers      16777216 bytes
  Redo Buffers         667648 bytes
  
  資料庫裝載完畢。
  
  ORA-01157: 無法標識/鎖定資料檔案 1 - 請參閱 DBWR 跟蹤檔案
  ORA-01110: 資料檔案 1: 'D:ORACLEORADATAXINAHESYSTEM01.DBF'
  
  把備份的SYSTEM01.dbf檔案還原回去
  
  然後recover database 或 recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF'
  
  SQL> recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF';
  完成介質恢復
  
  開啟資料庫有提示
  SQL> alter database open;
  alter database open
  *
  ERROR 位於第 1 行:
  ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案
  ORA-01110: 資料檔案 2: 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
  
  把備份的UNDOTBS01.DBF檔案還原回去,執行recover database 或 recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
  
  SQL> recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF';
  完成介質恢復
  
  然後就可以開啟資料庫,檢視scott使用者的test表。
  
  SQL> alter database open;
  
  資料庫已更改。
  
  SQL> select * from scott.test;
  
      ID
  ----------
       1
       2
  
  SQL>
  完成。
  
  實驗2:描述如下
  
      資料庫是開啟的,這是損壞的檔案是使用者的資料檔案而不是system和undo檔案。
  
  用scott使用者在users表空間建立test1表
  
  SQL> create table scott.test1(id int)
   2 tablespace users;
  
  表已建立。
  
  插入兩條資料
  
  SQL> insert into scott.test1 values(1);
  
  已建立 1 行。
  
  SQL> insert into scott.test1 values(2);
  
  已建立 1 行。
  
  SQL> commit;
  
  提交完成。
  
  當前日誌歸檔
  
  SQL> alter system archive log current;
  
  系統已更改。
  
  現在破壞users表空間,使其離線,然後刪除users01.dbf
  
  SQL> alter tablespace users offline;
  
  表空間已更改。
  
  SQL> alter tablespace users online;
  alter tablespace users online
  *
  ERROR 位於第 1 行:
  ORA-01157: 無法標識/鎖定資料檔案 9 - 請參閱 DBWR 跟蹤檔案
  ORA-01110: 資料檔案 9: 'D:ORACLEORADATAXINAHEUSERS01.DBF'
  
  此時出現錯誤,users表空間不能線上了。這時把備份的users01.DBF還原回去。
  然後
  
  SQL> recover tablespace users;
  ORA-00279: 更改 292331 (在 03/18/2005 16:36:05 生成) 對於執行緒 1 是必需的
  ORA-00289: 建議: D:ORACLEORA92RDBMSARC00004.001
  ORA-00280: 更改 292331 對於執行緒 1 是按序列 # 4 進行的
  
  
  指定日誌: {=suggested | filename | AUTO | CANCEL}
  auto
  ORA-00279: 更改 292907 (在 03/18/2005 16:45:43 生成) 對於執行緒 1 是必需的
  ORA-00289: 建議: D:ORACLEORA92RDBMSARC00005.001
  ORA-00280: 更改 292907 對於執行緒 1 是按序列 # 5 進行的
  ORA-00278: 此恢復不再需要日誌檔案 'D:ORACLEORA92RDBMSARC00004.001'
  
  已應用的日誌。
  完成介質恢復
  SQL> alter tablespace users online;
  
  表空間已更改。
  
  SQL> select * from scott.test1;
  
      ID
  ----------
       1
       2
  完成。
  
  實驗3:描述如下
  
  資料檔案沒有備份(不能使system和undo檔案)的恢復
  
  建立表空間testspace
  
  SQL> create tablespace testspace
   2 datafile 'd:oracleoradataxinahetestspace.dbf' size 10m;
  
  表空間已建立。
  
  SQL> create table scott.test3(id int)
   2 tablespace testspace;
  
  表已建立。
  
  SQL> commit;
  
  提交完成。
  
  SQL> alter system switch logfile;
  
  系統已更改。
  
  SQL> insert into scott.test3 values(1);
  
  已建立 1 行。
  
  SQL> commit;
  
  提交完成。
  
  SQL> alter tablespace testspace offline;
  
  表空間已更改。
  
  SQL> select * from scott.test3;
  select * from scott.test3
            *
  ERROR 位於第 1 行:
  ORA-00376: 此時無法讀取檔案 11
  ORA-01110: 資料檔案 11: 'D:ORACLEORADATAXINAHETESTSPACE.DBF'
  
  由於沒有備份資料檔案,我重新建立一個
  
  SQL> alter database create datafile
   2 'D:ORACLEORADATAXINAHETESTSPACE.DBF';
  
  資料庫已更改。
  
  SQL> recover tablespace testspace;
  完成介質恢復
  SQL> alter tablespace testspace online;
  
  表空間已更改。
  
  SQL> select * from scott.test3;
  
      ID
  ----------
       1

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10069277/viewspace-255318/,如需轉載,請註明出處,否則將追究法律責任。

相關文章