oracle 在重建控制文件前要考虑的事

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]

 

 

适用于:

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’;

如果数据库已被关闭,首先进行操作系统备份:

例如:

[email protected]> 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


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *