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.

  1. 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.

  1. issue:

alter database create datafile AS;

  1. Restore the database

  2. recover database using backup controlfile until cancel;

-- apply all archives you have

  1. alter database open resetlogs;

  2. shutdown database

  3. startup mount

  4. 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 */

  1. shutdown database

  2. edit init.ora changing db_name parameter

  3. startup cloned database

  4. verify name change:

select name from v$database

show parameter db_name

相关推荐
这个DBA有点耶22 分钟前
数据库数据同步解决方案怎么选?6款主流工具横向对比与信创选型指南
数据库·架构·dba
刃神太酷啦30 分钟前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
小雷信息医学31 分钟前
不会写复杂代码也能发 SCI?手把手教你用 InSpireR 交互系统一键提取、合并与导出临床科研宽表【第三章】
数据库
旺仔不是程序员1 小时前
复合索引最左前缀原则:PostgreSQL 的 WHERE 为什么必须命中第一列
数据库·后端·sql
旺仔不是程序员1 小时前
字段类型不一致:PostgreSQL 报错与索引失效的第一元凶
数据库·后端·sql
白远山1 小时前
货运跑腿搬家平台开发实战:从需求分析到落地部署指南
数据库·数据挖掘·需求分析
geovindu1 小时前
sql: Data Modeling Patterns
数据库·sql·设计模式·sqlserver
上海蓝色星球2 小时前
蓝色星球NG-AIOS新型AI工业操作系统重磅发布——以本体智能为内核,重构“AI+制造“新范式
大数据·数据库·人工智能·机器人
瀚高PG实验室2 小时前
瀚高数据库如何克隆表
数据库·sql·postgresql·瀚高数据库
雨辰AI2 小时前
信创多租户项目 9 大踩坑|数据隔离失效、权限越权终极解决(金仓 / 达梦 / 高斯全库适配)
java·大数据·数据库·后端