使用rman中的duplicate复制数据库

本文详细介绍如何在Oracle 10.2.0.1环境下通过RMAN工具进行数据库复制的过程,包括准备目标库与复制库环境、创建所需文件及目录、配置参数、备份目标库、配置归档模式等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标库和复制库环境: 
OS: Linux Red Hat AS 4 
DB Version: 10.2.0.1 
  
1.目标库和复制库信息 
Rman 中的目标库(target database)指的是被复制的库,复制库(duplicate database)是指复制后生成的新库.这里为了测试方便,复制库和目标库的SID设置相同,目录结构也设置相同. 
  
目标库: 
IP:192.168.30.37 
SID:oracl 
  
复制库: 
IP:192.168.30.43 
SID:oracl 
  
2.在复制库上的的操作步骤 
执行以下操作的前提是需要安装oracle软件(不创建数据库),需要创建oracle用户. 
  
2.1: 创建密码文件(注意linux下密码文件的命名格式是orapw+sid) 
[oracle@hxl01 dbs]$cd $ORACLE_HOME/dbs
[oracle@hxl01 dbs]$orapwd file=orapworacl password=oracle entries=10 force=y 
  
2.2:创建如下目录 
mkdir -p /u01/app/oracle/admin/oracl/adump
mkdir -p /u01/app/oracle/admin/oracl/bdump
mkdir -p /u01/app/oracle/admin/oracl/cdump
mkdir -p /u01/app/oracle/admin/oracl/dpdump
mkdir -p /u01/app/oracle/admin/oracl/pfile
mkdir -p /u01/app/oracle/admin/oracl/udump
mkdir -p /u01/app/oracle/oradata/oracl
mkdir -p /u01/app/oracle/flash_recovery_area 
  
2.3:创建spfile文件
将在target上创建的pfile(initoracl.ora,具体创建步骤参考3.1)拷贝到Duplicate,然后创建spfile. 
Sql>connect /as sysdba;
Sql>create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initoracl.ora'; 
  
2.4:启动数据库到nomount状态
Sql>startup nomount; 
2.5:创建监听
[oracle@hxl01 dbs]$netca 
2.6:配置tnsname
[oracle@hxl01 dbs]$netmgr 
注意要配置到复制duplicate库的连接和到目标target库的连接. 
  


3.在目标库上的的操作步骤 
3.1:创建pfile文件 
SQL>create pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initoracl.ora' from spfile; 
3.2:将数据库置于归档模式
Sql>shutdown immediate;
Sql>startup mount;
Sql>alter database archivelog;
sql>alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/duplicate' scope=both;
sql>alter database open; 
  
3.3:备份数据库(我的库有坏块,指定了maxcorrupt) 
Sql>alter system archive log current; 
$rman target /
Rman>run{
set maxcorrupt for datafile 5 to 20;
allocate channel c1 type disk;
backup full as compressed backupset format '/u01/app/oracle/duplicate/37full_%t_%s_%p' diskratio=0 database;
release channel c1;

3.4:手动归档当前日志文件 
Sql>alter system archive log current; 
  
3.5:传送文件 
将备份好的文件传送到复制库的/app/oracle/duplicate/下,将备份前到当前时间新产生的归档日志文件传送到复制库的/app/oracle/duplicate/下. 


4.复制数据库 
以下操作在复制库duplicate主机上执行. 
[oracle@hxl01 duplicate]$ rman target sys/sys@tar_oracl --(这里的tar_oracl是在连接到目标库的tnsname) 
RMAN>connect auxiliary sys/oracle@dup_oracl --(这里的dup_oracl是在连接到复制库的tnsname) 
  
RMAN>run{
duplicate target database to oracl nofilenamecheck
logfile group 1 ('/u01/app/oracle/oradata/oracl/redo1_1.log','/u01/app/oracle/oradata/oracl/redo1_2.log') size 512M,
group 2 ('/u01/app/oracle/oradata/oracl/redo2_1.log','/u01/app/oracle/oradata/oracl/redo2_2.log') size 512M,
group 3 ('/u01/app/oracle/oradata/oracl/redo3_1.log','/u01/app/oracle/oradata/oracl/redo3_2.log') size 512M;

-- 这里使用了nofilenamecheck,是因为复制库和目标库的各文件目录一致.


小插曲:
数据库打开后使用sysdba登陆提示ORA-01031: insufficient privileges,找了半天原因是密码文件命名问题, 之前创建密码文件名为orapwdoracl,将其修改为orapworacl,问题解决,注意在linux下密码文件的命名格式为orapw+sid.
SQL> connect sys/oracle@dup_oracl as sysdba
ERROR:
ORA-01031: insufficient privileges 
  
  
--The End-- 


文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/7_databases/oracle/oraclejs/20120215/565188.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值