欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

基于 RMAN 的同机数据库克隆

程序员文章站 2022-04-07 09:10:00
...

Oracle数据库克隆,也叫着Oracle数据库复制,可以通过基于用户管理的方式来完成,也可以基于RMAN方式来实现。而且Oracle建议使用

Oracle数据库克隆,也叫着Oracle数据库复制,可以通过基于用户管理的方式来完成,也可以基于RMAN方式来实现。而且Oracle建议使用RMAN方式来实现,因为它简单易用,隐藏其复杂的逻辑,仅仅是执行一条duplicate命令就可以喝茶了。当然,前期的准备工作也是不可少滴,如创建相应的dump目录,准备参数文件,配置监听等等。本文描述了Oracle 11g下如何使用RMAN实现同机克隆数据库。

相关阅读:

RMAN 异机复制数据库

1、RMAN克隆的几种类型
a、利用RMAN备份克隆并访问目标数据库(也就是原数据库),也就是复制期间由Oracle net与目标数据库保持连接
b、利用RMAN备份克隆不访问目标数据库,比如网络不通阿,目标数据库不可用等等,总之是人为或故障使得与目标库失去连接
c、直接使用活动数据库(active)进行克隆,实时备份加克隆,够牛滴!

2、RMAN克隆做了什么?
RMAN克隆根据需要连接或不连接到目标数据库后,需要连接一个辅助实例。这个辅助实例也就是我们复制后的实例。
我们知道任何一个数据库至少有一个实例与之对应,,如果是RAC环境则可以多个实例对应一个数据库。
因此,我们在克隆数据库之前先建一个nomount状态的辅助实例用于分配内存等等一系列的后台进程啦。
有了实例就好办啦,RMAN为这个辅助实例生成控制文件,基于这个实例上还原数据库,恢复数据库等等不拉不拉的N多操作。
那这个N多操作靠谁呢,那就是发布命令: duplicate target databaseto aux_db
那RMAN如何连接到辅助实例呢? 与连接target或catalog方式类似,connect auxiliary name/pwd@tnsstring
通常情况下,对于磁盘备份还原操作,RMAN会自动创建及分配相应的通道,辅助实例也不例外,当然是自动分配辅助通道
而在磁带介质就麻烦一点了,需要手工来指定其通道,并行度等等。
下面简要描述一下RMAN克隆不同阶段都作了什么吧,关于克隆数据库时数据文件位置转换请参考: RMAN 数据库克隆文件位置转换方法
a、RMAN确定备份的属性,位置等等,也就备份存在性,可用等等了。
b、RMAN为辅助实例分配通道及辅助通道的参数设置
c、RMAN还原数据文件到辅助实例(此时使用了目标数据库控制文件)
d、RMAN构建辅助实例的控制文件
e、根据需要还原归档日志并进行相应的介质恢复
f、重置辅助实例的dbid,并使用open resetlog方式打开数据库,此时会创建相应的联机重做日志文件

3、RMAN克隆大致步骤
a、备份目标数据库(根据需要克隆类型而定,异机的话ftp一下,此步也可以置于步骤e之后,f之前)
b、创建相应的dump文件夹
c、配置辅助实例参数文件
d、生成辅助实例密码文件
e、配置辅助实例监听
f、实施数据库克隆(辅助实例启动到nomount状态后)
h、验证结果

4、RMAN同机克隆亲密接触

--环境:
--目标数据库: sybo3 /u01/database/sybo3
--辅助数据库: sybo5 /u01/database/sybo5
--说明:
--对于下面描述过程中,如创建参数文件,密码文件,监听等等有不甚了解的,可参考下面链接中有关文章的描述。其次本次演示使用了备份文件并连接到target db
-- (体系结构相关)
-- (网络配置相关)

[oracle@linux3 database]$ cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m

SQL> select * from v$version where rownum

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production


a、备份目标数据库
--生成后续验证克隆成功的测试数据
SQL> insert into t select 'Jackson','Transfer DB by rman' from dual;

SQL> commit;

SQL> select * from t;

NAME ACTION
---------- --------------------
Robinson Transfer DB
Jackson Transfer DB by rman

SQL> alter system archive log current;

[oracle@linux3 ~]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jul 25 08:39:42 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: SYBO3 (DBID=2347733014)

RMAN> backup database include current controlfile plus archivelog delete input;

piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/o1_mf_annnn_TAG20130725T083957_8z0wyy9n_.bkp
tag=TAG20130725T083957 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/o1_mf_nnndf_TAG20130725T083959_8z0wz06c_.bkp
tag=TAG20130725T083959 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:30
Finished backup at 2013/07/25 08:41:29

Starting Control File and SPFILE Autobackup at 2013/07/25 08:41:31
piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/autobackup/2013_07_25/o1_mf_s_821695291_8z0x1vsf_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2013/07/25 08:41:34


b、创建相应的dump文件夹
[oracle@linux3 database]$ more sybo5.sh
#!/bin/sh
mkdir -p /u01/database
mkdir -p /u01/database/sybo5/adump
mkdir -p /u01/database/sybo5/controlf
mkdir -p /u01/database/sybo5/flash_recovery_area
mkdir -p /u01/database/sybo5/oradata
mkdir -p /u01/database/sybo5/redo
mkdir -p /u01/database/sybo5/dpdump
mkdir -p /u01/database/sybo5/pfile
[oracle@linux3 database]$ ./sybo5.sh