对于dba来说,有时为了测试需要或者搭建dg环境时都需要对现有数据库环境做克隆,而手工完成这个任务又十分的繁琐,10g推出的rman duplicate特性很好的解决了这个问题,只要准备工作做得充分,一条命令就可以搞定这个复制的任务。接下来为大家演示最简单的复制环境(即target database与duplicate database目录结构完全一致)
1.环境描述
IP地址 数据库名 实例名 角色
10.1.101.19 wilson wilson target
10.1.101.13 newdb newdb auxiliary
2.创建axuliary实例的密码文件
[oracle@targetdb tmp]$ cd $ORACLE_HOME/dbs
[oracle@targetdb dbs]$ orapwd file=orapwnewdb password=oracle entires=5
3.建立到auxiliary实例的Oracle Net连接
3.1配置静态监听
[oracle@targetdb dbs]$ cd $ORACLE_HOME/network/admin
[oracle@targetdb admin]$ cat listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.101.13)(PORT = 1521))
)
)
1.环境描述
IP地址 数据库名 实例名 角色
10.1.101.19 wilson wilson target
10.1.101.13 newdb newdb auxiliary
2.创建axuliary实例的密码文件
[oracle@targetdb tmp]$ cd $ORACLE_HOME/dbs
[oracle@targetdb dbs]$ orapwd file=orapwnewdb password=oracle entires=5
3.建立到auxiliary实例的Oracle Net连接
3.1配置静态监听
[oracle@targetdb dbs]$ cd $ORACLE_HOME/network/admin
[oracle@targetdb admin]$ cat listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.101.13)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = newdb)
(ORACLE_HOME = /oracle/product/10.2/db_1)
(SID_NAME = newdb)
)
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = newdb)
(ORACLE_HOME = /oracle/product/10.2/db_1)
(SID_NAME = newdb)
)
)
3.2重启监听
[oracle@targetdb admin]$ lsnrctl stop
[oracle@targetdb admin]$ lsnrctl stop
[oracle@targetdb admin]$ lsnrctl start
3.3配置到target和auxiliary实例的网络服务名
3.3配置到target和auxiliary实例的网络服务名
[oracle@targetdb admin]$ cat tnsnames.ora
target =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.101.19)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = wilson)
)
)
target =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.101.19)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = wilson)
)
)
aux =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.101.13)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = newdb)
)
)
4.创建auxiliary实例的初始化文件
[oracle@targetdb admin]$ cd $ORACLE_HOME/dbs
[oracle@targetdb admin]$ cat initnewdb.ora
*.control_files='/oradata/wilson/control01.ctl','/oradata/wilson/control02.ctl','/oradata/wilson/control03.ctl'
*.db_block_size=8192
*.DB_NAME='newdb'
compatible='10.2.0.3.0'(该参数与target实例保持一致,在执行duplicate过程中曾报ORA-01130: database file version 10.2.0.3.0 incompatible with ORACLE version 10.2.0.0.0错误,添加此参数后错误解决)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.101.13)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = newdb)
)
)
4.创建auxiliary实例的初始化文件
[oracle@targetdb admin]$ cd $ORACLE_HOME/dbs
[oracle@targetdb admin]$ cat initnewdb.ora
*.control_files='/oradata/wilson/control01.ctl','/oradata/wilson/control02.ctl','/oradata/wilson/control03.ctl'
*.db_block_size=8192
*.DB_NAME='newdb'
compatible='10.2.0.3.0'(该参数与target实例保持一致,在执行duplicate过程中曾报ORA-01130: database file version 10.2.0.3.0 incompatible with ORACLE version 10.2.0.0.0错误,添加此参数后错误解决)
5.启动auxiliary实例
[oracle@targetdb dbs]$ export ORACLE_SID=newdb
[oracle@targetdb dbs]$ sqlplus / as sysdba
SQL> startup nomount
6.挂载或启动target实例
[oracle@sourcedb dbs]$ sqlplus sys/oracle as sysdba
SQL> startup
7.确认有可用的备份和归档日志
7.1备份target数据库
[oracle@sourcedb dbs]$ rman target sys/oracle
RMAN> backup database format '/tmp/dbf_%U' plus archivelog format '/tmp/arch_%U';
7.2将备份拷贝到auxiliary端
[oracle@sourcedb dbs]$ cd /tmp
[oracle@sourcedb tmp]$ scp arc* dbf* 10.1.101.13:/tmp
8.创建duplicate数据库
[oracle@targetdb tmp]$ rman target sys/oracle@target auxiliary sys/oracle@aux cmdfile=du.cmd log=du.log
7.确认有可用的备份和归档日志
7.1备份target数据库
[oracle@sourcedb dbs]$ rman target sys/oracle
RMAN> backup database format '/tmp/dbf_%U' plus archivelog format '/tmp/arch_%U';
7.2将备份拷贝到auxiliary端
[oracle@sourcedb dbs]$ cd /tmp
[oracle@sourcedb tmp]$ scp arc* dbf* 10.1.101.13:/tmp
8.创建duplicate数据库
[oracle@targetdb tmp]$ rman target sys/oracle@target auxiliary sys/oracle@aux cmdfile=du.cmd log=du.log
9.验证duplicate数据库
[oracle@targetdb tmp]$ export ORACLE_SID=newdb
[oracle@targetdb tmp]$ sqlplus scott/tiger
SQL> select count(*) from emp;
COUNT(*)
----------
13
OK,duplicate数据库创建成功!
----------
13
OK,duplicate数据库创建成功!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20801486/viewspace-754129/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20801486/viewspace-754129/