ARCHIVELOG模式下使用者管理的不完全恢復—基於備份控制檔案的不完全恢復
阿新 • • 發佈:2018-11-10
基於備份控制檔案的恢復只要適用於以下情況:表空間被意外刪除;所有控制檔案全部損壞。
先關閉資料庫,執行一次全庫冷備份。
[sql] view plain copy print ?- SQL> conn /as sysdba
- 已連線。
- SQL> shutdown immediate
- 資料庫已經關閉。
- 已經解除安裝資料庫。
- ORACLE 例程已經關閉。
- SQL> ! cp /u01/app/oracle/oradata/orcl/* /u01/app/oracle/backup/
SQL> conn /as sysdba 已連線。 SQL> shutdown immediate 資料庫已經關閉。 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> ! cp /u01/app/oracle/oradata/orcl/* /u01/app/oracle/backup/
現在已經有一個數據庫的冷備份了,裡面包含一個tb1表空間,現在模擬使用者誤刪除了tb1這個表空間
[sql] view plain copy print ?- SQL> conn /as sysdba
- 已連線到空閒例程。
- SQL> startup
- ORACLE 例程已經啟動。
-
- Total System Global Area 167772160 bytes
- Fixed Size 1266392 bytes
- Variable Size 62917928 bytes
- Database Buffers 100663296 bytes
- Redo Buffers 2924544 bytes
- 資料庫裝載完畢。
- 資料庫已經開啟。
- SQL> drop tablespace tb1 including contents;
- 表空間已刪除。
SQL> conn /as sysdba
已連線到空閒例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 167772160 bytes
Fixed Size 1266392 bytes
Variable Size 62917928 bytes
Database Buffers 100663296 bytes
Redo Buffers 2924544 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> drop tablespace tb1 including contents;
表空間已刪除。
而當前的控制檔案中已經不包含tb1表空間了,以前備份的控制檔案還包含。所以必須使用以前的控制檔案來恢復。
[sql] view plain copy print ?- SQL> conn /as sysdba
- 已連線。
- SQL> shutdown immediate
- 資料庫已經關閉。
- 已經解除安裝資料庫。
- ORACLE 例程已經關閉。
- SQL> ! rm -rf /u01/app/oracle/oradata/orcl/*.ctl
- SQL> ! rm -rf /u01/app/oracle/oradata/orcl/*.dbf
- SQL> ! cp /u01/app/oracle/backup/*.ctl /u01/app/oracle/oradata/orcl/
- SQL> ! cp /u01/app/oracle/backup/*.dbf /u01/app/oracle/oradata/orcl/
SQL> conn /as sysdba
已連線。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> ! rm -rf /u01/app/oracle/oradata/orcl/*.ctl
SQL> ! rm -rf /u01/app/oracle/oradata/orcl/*.dbf
SQL> ! cp /u01/app/oracle/backup/*.ctl /u01/app/oracle/oradata/orcl/
SQL> ! cp /u01/app/oracle/backup/*.dbf /u01/app/oracle/oradata/orcl/
使用控制檔案恢復
- SQL> conn /as sysdba
- 已連線到空閒例程。
- SQL> startup
- ORACLE 例程已經啟動。
- Total System Global Area 167772160 bytes
- Fixed Size 1266392 bytes
- Variable Size 62917928 bytes
- Database Buffers 100663296 bytes
- Redo Buffers 2924544 bytes
- 資料庫裝載完畢。
- ORA-00314: 日誌 1 (用於執行緒 1) 要求的 sequence# 與 不匹配
- ORA-00312: 聯機日誌 1 執行緒 1: '/u01/app/oracle/oradata/orcl/redo01.log'
- SQL> select status from v$instance;
- STATUS
- ------------
- MOUNTED
- SQL> recover database using backup controlfile until cancel;
- ORA-00279: 更改 474704 (在 10/09/2011 07:44:06 生成) 對於執行緒 1 是必需的
- ORA-00289: 建議: /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_09/o1_mf_1_12_%u_.arc
- ORA-00280: 更改 474704 (用於執行緒 1) 在序列 #12 中
- 指定日誌: {<RET>=suggested | filename | AUTO | CANCEL}
- cancel
- 介質恢復已取消。
- SQL> alter database open;
- alter database open
- *
- 第 1 行出現錯誤:
- ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
- SQL> alter database open resetlogs;
- 資料庫已更改。
- SQL> conn u1/u1
- 已連線。
- SQL> select * from t;
- ID VALUE
- ---------- ----------
- 1 a