风影子
作者风影子·2011-02-23 11:54
数据库管理员·深圳

DBA备忘录:Data Guard之添加数据文件

字数 3063阅读 2240评论 0赞 0

今天在做数据库检查的时候,发现最近几天备份数据库都没有把数据同步过来,发现有很多日志没有应用,查到了原因是因为天主库给表空间增加了数据文件,因为是裸设备,备库没有创建,所以在备库当然也就无法应用归档日志了。在网上查了篇文档和我的情况一样,现记录一下,希望今天能把问题解决。

来源:http://bloggermap.org/rss/readblog/11433

                          DBA备忘录:Data Guard之添加数据文件


一般情况下,如果数据文件采用的是裸设备,为了便于管理,会在裸设备上创建soft link,这样在data guard环境中就有个问题,必须在主备库同时执行创建相同的link,否则备库是auto standby file management的话,会导致数据文件创建失败(前提是去掉了文件系统的写权限,否则会加到文件系统中去,这样麻烦更麻烦了)。

加入在主库创建了soft link,添加了datafile,而备库没有创建对应的link多话,则会遇到以下错误:
Errors in file /u01/oracle/admin/comm/bdump/comm_mrp0_2380526.trc:
ORA-01274: cannot add datafile '/u01/oracle/oradata/comm/test.dbf' - file could not be created
ORA-01119: error in creating database file '/u01/oracle/oradata/comm/test_66.dbf'
ORA-27040: skgfrcre: create error, unable to create file
IBM AIX RISC System/6000 Error: 13: Permission denied
Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
MRP0: Background Media Recovery process shutdown

由于备库无法创建相应的datafile,恢复进程终止。此时如果尝试重启恢复进程:
Errors in file /u01/oracle/admin/test/bdump/test_mrp0_602168.trc:
ORA-01111: name for data file 397 is unknown - rename to correct file
ORA-01110: data file 397: '/u01/oracle/product/9.2/dbs/UNNAMED00397'
ORA-01157: cannot identify/lock data file 397 - see DBWR trace file
ORA-01111: name for data file 397 is unknown - rename to correct file
ORA-01110: data file 397: '/u01/oracle/product/9.2/dbs/UNNAMED00397'
MRP0: Background Media Recovery process shutdown

根据alert文件的提示,执行rename操作:
SQL> alter database rename file '/u01/oracle/product/9.2/dbs/UNNAMED00397' to '/u01/oracle/oradata/test/test_66.dbf';
alter database rename file '/u01/oracle/product/9.2/dbs/UNNAMED00397' to '/u01/oracle/oradata/test/test_66.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01275: Operation RENAME is not allowed if standby file management is
automatic.

在备库执行数据/日志文件相关操作时,必须先将standby file management改成手动模式:
SQL> alter system set standby_file_management=manual;

System altered.

SQL> alter database rename file '/u01/oracle/product/9.2/dbs/UNNAMED00397' to '/u01/oracle/oradata/test/test_66.dbf';

Database altered.

SQL> alter system set standby_file_management=auto;

System altered.

Rename成功,再次启动恢复进程,发现还是有问题:
Errors in file /u01/oracle/admin/comm/bdump/test_mrp0_2359904.trc:
ORA-01110: data file 397: '/u01/oracle/oradata/test/test_66.dbf'
ORA-01122: database file 397 failed verification check
ORA-01110: data file 397: '/u01/oracle/oradata/test/test_66.dbf'
ORA-01251: Unknown File Header Version read for file number 397
MRP0: Background Media Recovery process shutdown

由于最开始创建文件失败,后面的rename操作实际上只是修改了数据字典的信息,对应的裸设备上并没有执行创建数据文件的初始化动作,自然没有正确的数据文件头信息,只需要执行create datafile as即可:
SQL> alter system set standby_file_management=manual;

System altered.

SQL> alter database create datafile 397 as '/u01/oracle/oradata/test/test_66.dbf';

Database altered.

SQL> alter system set standby_file_management=auto;

System altered.

SQL> recover managed standby database disconnect from session;
Media recovery complete.

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广