一:注意事項:
1 指定reuse
表明被初始化參數CONTROL_FILES 識别的控制檔案能夠被覆寫使用。如果忽略該參數,任何已經存在的控制檔案被資料庫檢測到,則傳回一個報錯。
2 指定SET DATABASE
表明要更改資料庫的名字,名字長度能達到8個位元組。除此之外,你必須指定resetlogs語句,如果你想重新命名資料庫的名字,并保留已經存在的日志檔案,則建立控制檔案語句執行後
使用alter database recover using bakcup controlfile 語句執行一個完全資料庫恢複。
3 指定resetlogs
indicate 忽略日志檔案内容,或者日志檔案不存在。
指定datafile
除了隻讀表空間的檔案(可以之後添加)和臨時表空間的資料檔案,列出所有資料檔案,就算這些檔案需要進行恢複。
4 ARCHIVELOG | NOARCHIVELOG
如果忽略了ARCHIVELOG | NOARCHIVELOG oracle預設采用非歸檔模式。
二實驗步驟:
1 以noresetlogs方式建立控制檔案,控制檔案内容
[oracle@oracle backup]$ cat control.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "CRM" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oracle/CRM/redo01.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/oracle/CRM/redo02.log' SIZE 200M BLOCKSIZE 512,
GROUP 3 '/oracle/CRM/redo03.log' SIZE 200M BLOCKSIZE 512,
GROUP 4 '/oracle/CRM/redo02.dbf' SIZE 200M BLOCKSIZE 512
DATAFILE
'/oracle/CRM/system01.dbf',
'/oracle/CRM/sysaux01.dbf',
'/oracle/CRM/undotbs01.dbf',
'/backup/users01.dbf',
'/oracle/CRM/pos.dbf',
'/oracle/CRM/erp.dbf',
'/oracle/CRM/user01.dbf',
'/oracle/CRM/undotbs02.dbf'
CHARACTER SET ZHS16GBK
;
2 以resetlogs方式建立控制檔案,控制檔案内容
cat control.sql
CREATE CONTROLFILE REUSE DATABASE "CRM" RESETLOGS ARCHIVELOG
3 恢複過程
noresetlogs方式
SQL> @/backup/control.sql
ORACLE instance started.
Total System Global Area 1252663296 bytes
Fixed Size 2226072 bytes
Variable Size 1006635112 bytes
Database Buffers 234881024 bytes
Redo Buffers 8921088 bytes
Control file created.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
SQL> alter database open;
Database altered.
resetlogs方式
SQL> @/backup/control.sql
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
SQL> recover database using backup controlfile;
ORA-00279: change 2526007 generated at 08/26/2012 01:13:10 needed for thread 1
ORA-00289: suggestion : /oracle/archive/1_8_791790817.dbf
ORA-00280: change 2526007 for thread 1 is in sequence #8
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/oracle/archive/1_8_791790817.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL> recover database using backup controlfile until cancel;
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
READ WRITE
本文轉自 zhangxuwl 51CTO部落格,原文連結:http://blog.51cto.com/jiujian/982734,如需轉載請自行聯系原作者