备份控制文件包括三种方法:
(1)通过操作系统命令在数据库关闭时对控制文件进行COPY;
(2)利用ALTER DATABASE BACKUP CONTROLFILE TO命令将控制文件备份到二进制文件;
SQL> alter database backup controlfile to 'E:/oracle/product/10.2.0/orcl/controlfile01.bak';
数据库已更改。
(3)利用ALTER DATABASE BACKUP CONTROLFILE TO TRACE命令将重建控制文件备份的脚本备份到后台trace文件中。
SQL> alter database backup controlfile to trace;
数据库已更改。
Oracle推荐使用第二种方式来备份控制文件。第一种方式备份的控制文件,一般用于全库一致性恢复。而第三种方式备份控制文件会丢失归档日志历史等许多信息。在重建控制文件时,只读表空间和脱机的数据文件的处理相对比较复杂。
恢复利用alter database backup controlfile to trace;备份的控制文件
1 关闭数据库,重命名控制文件,模拟控制文件丢失
2 打开数据库,连接如下:
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 5月 15 19:23:57 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn sys/admin as sysdba
已连接。
SQL> conn system/manager
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
警告: 您不再连接到 ORACLE。
SQL> conn scott/tiger
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
3 SQL> conn sys/admin as sysdba
已连接。
修改由alter database backup controlfile to trace备份控制文件时产生的脚本,去掉多余的注释
在E:/oracle/product/10.2.0/admin/orcl/udump的orcl_ora_668.trc找到创建控制文件的脚本
执行如下语句:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG' SIZE 50M,
GROUP 2 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG' SIZE 50M,
GROUP 3 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG' SIZE 50M
DATAFILE
'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF',
'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF',
'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF'
CHARACTER SET ZHS16GBK
;
RECOVER DATABASE
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP
ADD TEMPFILE 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TEMP01.DBF'
SIZE 20971520 REUSE AUTOEXTEND OFF;
问题:-----------------利用alter database backup controlfile to filename备份的控制文件,如何恢复?太糟糕了。。。。。。。。