一、前言
有时候我们需要快速搭建出一套测试环境,可能往往的手段是进行导数或者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 <
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
米乐app官网下载 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 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」 关注作者 【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。 评论