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

相关推荐
岳麓丹枫0012 小时前
PostgreSQL 中 pg_wal 目录里的 .ready .done .history 文件的生命周期
数据库·postgresql
陌上丨8 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56789 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw9 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30739 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道9 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
麦聪聊数据10 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务10 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
Goat恶霸詹姆斯12 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七12 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习