rman clone NID 新创建数据文件从0开始恢复

How to clone/duplicate a database with added datafile with no backup


Oracle Database - Enterprise Edition - Version 9.2.0.1 to 10.2.0.4 [Release 9.2 to 10.2]
Information in this document applies to any platform.

GOAL

How can I clone/duplicate a database and change it's name if a datafile backup is missing. Archivelog files are available for recreating the datafile using 'alter database create datafile'.

I.e., a datafile was added to the database, but not yet backed up. Archive files are available to recreate this datafile. How can a clone/duplicate database be created in this scenario?

Issues to consider:

1. The RMAN duplicate command will want to create a new controlfile. However, the new datafile will not be added to the controlfile.
2. If a new controlfile is created with a database name change, the datafile cannot be added after the fact.
3. You cannot create a datafile (using alter database) if that datafile is not listed in the controlfile.

SOLUTION

You will not be able to use the RMAN duplicate in this scenario.  The RMAN duplicate command would fail with errors on the newly added datafile, like:

ORA-01503: CREATE CONTROLFILE failed
ORA-01565: error in identifying file '/<path>/<filename>'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.

Another possibility would be errors like:

RMAN-03002: failure of Duplicate Db command at 03/22/2007 10:16:22
RMAN-03015: error occurred in stored script Memory Script
ORA-00283: recovery session canceled due to errors
RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile '/<path>/<archivelog_name>'
ORA-00283: recovery session canceled due to errors
ORA-01244: unnamed datafile(s) added to controlfile by media recovery
ORA-01110: data file 93: '/<path>/<filename>'

NOTE:  In Oracle10g, RMAN will create the datafiles on recovery, so this may not be an issue. 

NOTE:  The same issue can apply to creating a duplicate database for standby, when datafiles are added to the primary after the backup. 

Instead, you MUST use a current controlfile of the target database, to create the clone. Then the database name/DBID can be changed using the NID utility.

STEPS:

NOTE: Target database must be shutdown if the clone is created on the same server.

1. copy production controlfile in the clone location.
2. startup mount clone database
3. select name from v$datafile
-- issue 'alter database rename file .... to .....; /* this renames the datafile location. It is
must be issued for every datafile existing - thus missing datafile will not be included in this
rename.
4. select name from v$logfile
-- issue ''alter database rename file .... to .....; /* this rename will place the redo log files
in the proper location when clone database is opened.
5. issue:
alter database create datafile AS;

6. Restore the database
7. recover database using backup controlfile until cancel;
-- apply all archives you have
8. alter database open resetlogs;
9. shutdown database
10. startup mount
11. exit sql and issue at the operating system:
-- nid TARGET=SYS/<PASSWORD> DBNAME SETNAME=YES
/* NOTE: If you plan to register this database in RMAN the dbid must also be changed using the NID utility */
12. shutdown database
13. edit init.ora changing db_name parameter
14. startup cloned database
15. verify name change:
select name from v$database
show parameter db_name

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值