duplicate 分为 2 种模式,1.直接从 active 状态的库直接复制;2.从目标库的备份文件来复制;
Oracle Duplicate database
现在两种方法都介绍下,直接上干货。
试验环境(2 台机器):
target db:TESTA
aux db:TESTA(db_name 可修改)
一、备份方式复制
步骤:1.检查是否为 archivelog 模式(mount 状态下 alter database archivelog)。
2.切换日志(alter system switch logfile;)。
3.RMAN 备份数据库及归档日志,生成备份文件(这里要在 rman 中把
控制文件自动备份功能开启,不然要就在备份雨中加上备份控制文件的
子句)。
4.copy target db 的 pfile 和备份文件到 aux 机器上(并修改 pfile 的中参数,如
db_name 或文件路径不一致时)。
5.aux 库设置 ORACLE_SID 参数。
6.aux 创建密码文件。
7.aux 创建 spfile 并 startup nomount。
8.rman duplicate database。
实施:
1.检查是否为 archivelog 模式
这里可以看到是 archive mode 的。
2.切换日志
3.备份
可以看到这里生成了 4 个文件。
4.复制 target db 的 pfile 和备份文件到 aux db 上
我这里 aux 的实例名和路径都是一样的,所以不用修改参数文件(如果不一样则修改 pfile
中的 db_name 或用 db_file_name_convert 和 log_file_name_convert 参数进行修改)
5.aux 库设置 ORACLE_SID 参数
6.在 aux 库创建密码文件(sys 密码最好与 target 库的保持一致)
7.aux 创建 spfile 并 startup nomount
8.rman duplicate database。
这是 aux db 已经复制完成,检查状态。
二、active 模式复制
步骤同一种大致一样,
1. 不同的部分为第三步的备份动作不需要,改成配置 tnsnames.ora 文件。
文径$ORACLE_HOME/network/admin/tnsnames.ora
红色涂改部分为 target db 和 aux db 主机的 IP。target 和 aux 报纸 tnsnames.ora 一样即可。
2.duplicate 语句不同,改为
duplicate target database to TESTA from active database;
PS:一定要注意 ORACLE_SID 变量的值,数据文件所在的路径目录是否都存在等