如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
适用于:
Oracle Database – Enterprise Edition – 版本10.2.0.1 及以上
本文信息适用于任何平台。
目的
强调控制文件的重要性和在重建它之前你需要考虑的问题。
故障排除步骤
在重建控制文件前…
控制文件对于数据库非常重要。一些信息仅被存储在控制文件,而不是数据字典中。元数据包括闪回日志,块更改跟踪,RMAN备份和数据文件的位置。经常有可用的解决方法或解决方案,所以控制文件并不需要被重建。
如果你真的必须重建控制文件,或者当Oracle指示时,请考虑以下…
1. 无法访问/脱机的数据文件
首先如果所有的数据文件不在磁盘上,你将无法重新控制文件。
如果数据文件在磁盘上,确保没有脱机的数据文件:
select distinct(status) from v$datafile where status not in (‘ONLINE’,’SYSTEM’);
select name, ts#, online$, contents$ from ts$ where online$ =2;
否则,一旦使用resetlogs重建了控制文件,所有脱机的数据文件无法被添加回数据库。你可能遇到以下错误:
RMAN> sql ‘alter database datafile 6 online’;
sql statement: alter database datafile 6 online
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of sql command on default channel at 07/29/2012 11:07:07
RMAN-11003: failure during parse/execution of SQL statement: alter database datafile 6 online
ORA-01190: control file or data file 6 is from before the last RESETLOGS
ORA-01110: data file 6: ‘/opt/app/oracle/oradata/ORA112/leng_ts.dbf’
2. 闪回数据库
当控制文件被重建时,所有闪回信息 – 正常还原点,保障还原点guaranteed restore point和闪回数据库将会被关闭,即使使用NORESETLOGS。在磁盘上的所有闪回日志无法被重新catalog会控制文件。如果尝试catalog闪回日志,你会遇到该错误:
File Name: /opt/app/oracle/fra/ORA112/flashback/o1_mf_85zttw61_.flb
RMAN-07529: Reason: catalog is not supported for this file type
你需要重新启用闪回数据库。所有较旧的闪回日志将不再可用,且应当从磁盘中被手动删除。
3. 使用闪回恢复区Flash Recovery Area Usage
一旦控制文件被重建,视图v$flash_recovery_area_usage 可能不反映真正的磁盘用量。所以你可能需要运行以下命令来将一切catalog到控制文件中。
RMAN> catalog recovery area;
4. 备份元数据
如果你不使用RMAN恢复目录,你需要将所有备份片catalog到控制文件中。此外,9i之前无法catalog备份片。
控制文件对于备份和还原过程是很重要的。你的确可以catalog所有备份片回控制文件,但首先你必须有一个控制文件使用。如果你丢失了整个系统,只有备份片可使用,你至少应有一个控制文件来catalog这些备份片。此外,当磁盘上没有任何数据文件时,你不能重建控制文件。
备份当前控制文件
在重建控制文件之前,你至少应对当前控制文件进行备份。
如果在open/mounted 模式:
RMAN> backup current controlfile;
SYS> alter database backup controlfile to ‘/tmp/control01.bk’;
如果数据库已被关闭,首先进行操作系统备份:
例如:
SYS@ORA112.SQL> show parameter control_files
NAME TYPE VALUE
———————————— ——————– ——————————
control_files string /opt/app/oracle/oradata/ORA112
/control1.ctl, /opt/app/oracle
/oradata/ORA112/control2.ctl
$ cp /opt/app/oracle/oradata/ORA112/control1.ctl /opt/app/oracle/oradata/ORA112/control1.ctl.old
$ cp /opt/app/oracle/oradata/ORA112/control2.ctl /opt/app/oracle/oradata/ORA112/control2.ctl.old
注意二进制备份与ASCII备份不同!
这生成一个ASCII 命令,使你重建控制文件。
这其实不是当前控制文件的备份。
SQL> alter database backup controlfile to trace;
建议
1) 在不同存储中multiplex你的控制文件
你至少要有两个控制文件副本在不同存储上。如果媒体损坏,你至少还能使用另一个副本。
所以数据库参数文件(pfile 或spfile) 应至少指向两个位置:
control_files=’location1/file1′,’location2/file2′
2) 打开自动备份
这将确保在每个备份结束时对控制文件进行备份:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
按需更改位置:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’; # default
参考
NOTE:735106.1 – How to Recreate a Controlfile
Comment