一、核心概念
1. 基本定义
- 源数据库(source database):被复制的原始数据库
- 复制数据库(duplicate database):新创建的数据库副本
- 目录数据库(catalog database):存储rman备份元数据的数据库(可选)
2. 主要用途
- 测试环境:创建源数据库的完整副本用于测试
- 备用数据库:构建data guard环境,提供故障转移能力
3. 复制模式
- 活动数据库复制(active database duplication)
- 通过网络直接从源数据库复制
- 无需预先的rman备份
- 基于备份的复制(backup-based duplication)
- 使用现有的rman备份创建副本

- 使用现有的rman备份创建副本
二、关键要点
重要限制
- ❌ 不支持跨平台复制(如windows到linux)
- 🔑 active模式要求两端有相同的sysdba口令文件
- 🆔 测试副本有唯一dbid,standby副本通过db_unique_name区分
文件路径转换
-- 在spfile子句中指定路径映射 set db_file_name_convert '/old_path','/new_path' set log_file_name_convert '/old_path','/new_path'
三、实施步骤
通用流程
- 在目标主机安装oracle软件
- 创建与源库相同的口令文件(active模式)
- 配置网络连通性(静态监听)
- 创建辅助实例参数文件
- 以nomount模式启动辅助实例
- 确保源数据库处于mount或open状态
- 运行rman duplicate命令
- 使用resetlogs打开复制数据库
四、配置示例
例1:相同目录结构的活动复制
duplicate target database to dupdb from active database password file spfile nofilenamecheck;
例2:基于备份的复制
duplicate database to dupdb
until time "to_date('11/01/2025 14:00:00', 'mm/dd/yyyy hh24:mi:ss')"
spfile
backup location '/prod_backups'
nofilenamecheck;
例3:不同目录的standby数据库复制
duplicate target database
for standby
from active database
password file
spfile
parameter_value_convert '/disk1', '/disk2'
set db_unique_name 'dup1'
set db_file_name_convert '/disk1','/disk2'
set log_file_name_convert '/disk1','/disk2'
set sga_max_size 200m
set sga_target 125m;
五、实战案例:活动复制测试数据库
环境准备
- 源数据库:prod(192.168.1.88)
- 目标数据库:prod(192.168.1.99)
- 相同数据库名、实例名和目录结构
目标端配置
创建哑参数文件
echo "db_name='aaa'" > $oracle_home/dbs/dummy.ora
复制口令文件
scp 192.168.1.88:$oracle_home/dbs/orapwprod $oracle_home/dbs/
创建必要目录
/u01/admin/prod/adump/u01/flash_recovery_area/u01/arch/prod/u01/oradata/prod
网络配置
静态监听配置(listener.ora):
sid_list_listener =
(sid_list =
(sid_desc =
(global_dbname= prod)
(oracle_home = /u01/oracle)
(sid_name = prod)
)
)tns配置(tnsnames.ora):
vbox88 = (地址指向192.168.1.88) vbox99 = (地址指向192.168.1.99)
执行复制
- 启动两端监听
- 验证网络连通性
- 目标端启动实例到nomount状态
startup pfile=/u01/oracle/dbs/dummy.ora nomount;
- 执行rman复制
rman target sys/oracle@vbox88 auxiliary sys/oracle@vbox99
duplicate target database to prod from active database spfile nofilenamecheck;
总结
rman duplicate是创建数据库副本的强大工具,支持活动复制和基于备份的复制两种模式。通过合理配置网络和参数文件,可以快速构建测试环境或备用数据库,确保业务连续性和数据安全。
到此这篇关于oracle rman复制数据库(duplicate)详细指南的文章就介绍到这了,更多相关oracle rman复制数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论