一、前言
有时候我们需要快速搭建出一套测试环境,可能往往的手段是进行导数或者rman备份恢复,以上过程比较繁琐;
有没有更快的方式呢,答案是有的,可以利用Oracle本身的duplicate命令一步到位;当然还有更快速的方式且测试环境无需占用存储空间,无限量创建,则是利用CDM技术实现(这里先不展开);
duplicate大致构建过程是利用tns网络在线复制数据文件到目标库,通常是数据文件不落地的方式,但是会占用源库一定的IO,保险的方式是源库数据文件落地也就是进行一次全库备份,并拷贝备份集;复制完数据数据会自动复制所需的归档日志然后进行一个不完全恢复,并且自动resetlogs打开数据库。
下面进行实战演示duplicate命名如何快速的构建一个测试环境。(采用不落地的方式,直接在线复制,节省本地空间)
环境配置:
- 源库:11.2.0.4 RAC
- 目标库:11.2.0.4 单机
二、环境准备
1、配置环境变量
umask 022 export PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin export LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib export ORACLE_BASE=/oracle/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1 export ORACLE_SID=test export ORACLE_UNQNAME=test export LD_LIBRARY_PATH=$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH
复制
Note:这里可以自定义测试库名称,无需跟源库一致
2、配置TNS网络
目标库静态监听
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = test) (ORACLE_HOME = /oracle/app/oracle/product/11.2.0.4/dbhome_1) (SID_NAME = test) ) )
复制
note:静态监听的作用是方便sys用户进行实例的启动与关闭
TNS连接串配置
FWL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = fwl) ) ) TEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.12)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) ) )
复制
Note:源库也一定要进行配置,因为复制的过程源库需要连接到辅助库也就是目标库。
3、目标库参数配置
*.audit_file_dest='/oracle/app/oracle/admin/test/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='/oracle/app/oracle/oradata/test/control01.ctl' *.db_file_name_convert='+DATA/FWL/DATAFILE','/oracle/app/oracle/oradata/test','+DATA/PROD/TEMPFILE','/oracle/app/oracle/oradata/test' *.log_file_name_convert='+DATA/FWL/ONLINELOG','/oracle/app/oracle/oradata/test' *.db_block_size=8192 *.db_domain='' *.db_files=4000 *.db_name='test' *.db_recovery_file_dest='/oracle/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=2147483648000 *.diagnostic_dest='/oracle/app/oracle' *.dispatchers='' *.open_cursors=2000 *.pga_aggregate_target=6442450944 *.processes=2000 *.remote_login_passwordfile='EXCLUSIVE' *.sga_max_size=10737418240 *.sga_target=10737418240 *.undo_retention=14400 *.undo_tablespace='UNDOTBS01'
复制
Note:这里数据文件采用convert自动转换,当然也可以用OMF;
临时目录也一并需要转换;
dbname自行修改为规划的名称;
其他参数以源库为准,建议创建源库pfile进行修改,以上为参考示例。
4、相关目录和口令文件的创建
目录
mkdir /oracle/app/oracle/oradata/test mkdir -p /oracle/app/oracle/admin/test/adump
复制
口令文件
orapwd file=$ORACLE_HOME/dbs/orapwtest password=oracle force=y
复制
Note:口令文件也可以复制源库的进行修改名称。
三、开始克隆
1、目标库启动nomount
create spfile from pfile='/home/oracle/pfile.bak'; startup nomount
复制
2、目标库开始克隆
编写脚本
vi dbclone.sh #!/bin/bash DATE=`date +%Y%m%d%H` source /home/oracle/.bash_profile $ORACLE_HOME/bin/rman log=/home/oracle/dbclone_${DATE}.log <<EOF connect target sys/oracle@fwl connect auxiliary sys/oracle@test run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate AUXILIARY channel c3 type disk; allocate AUXILIARY channel c4 type disk; duplicate target database to "test" from active database; release channel c1; release channel c2; release channel c3; release channel c4; } exit; EOF exit
复制
Note:这里建议利用脚本进行后台运行,通道数量可以根据源库数据量大小自行定义;一定要进行TNS认证连接,不能进行本地验证。
3、检查结果
日志结果:
input datafile copy RECID=120 STAMP=1108974813 file name=/oracle/app/oracle/oradata/test/users.493.1099836701 Reenabling controlfile options for auxiliary database Executing: alter database force logging contents of Memory Script: { Alter clone database open resetlogs; } executing Memory Script database opened Finished Duplicate Db at 02-JUL-22 released channel: c1 released channel: c2 released channel: c3 released channel: c4 RMAN> Recovery Manager complete.
复制
note:这里截取了后面关键的信息,可看到数据库已经自动完成open。
实例状态
[oracle@fwltest ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Sat Jul 2 10:01:50 2022 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select instance_name,status from v$instance; INSTANCE_NAME STATUS ---------------- ------------ test OPEN SQL>
复制
自此数据库克隆完成,通过以上的步骤可以看到,克隆构建的过程是相当简单快捷。
最后修改时间:2022-07-09 11:17:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
山高自有可行路,
水深自有渡船人。
但行好事,莫问前程..
1年前

评论