首先
1.duplicate daabase干什么的
快速复制一个数据库。通常用在系统迁移、测试系统搭建。
使用active方式复制,可以不需要有备份文件的情况下,直接复制数据库到新的地方。
如果有备份系统,我是不建议从生产直接duplicate数据库的。因为直接操作生产系统还是有些风险的,比如你搞错源和目标了,删库跑路了。
那么开搞吧
1.新的数据库一定要使用使用新的dbname有别于生产
因为如果使用了相同的名字,你将在最后的时候发现新的数据库无法OPEN。
*.audit_file_dest='/data/app/oracle/admin/gtmstt/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='/data/app/oracle/oradata/gtmstt/control01.ctl','/data/app/oracle/fast_recovery_area/gtmstt/control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='gtmstt' *.db_recovery_file_dest='/data/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=4385144832 *.diagnostic_dest='/data/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=gtmsttXDB)' *.open_cursors=300 *.pga_aggregate_target=2434793472 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=4293918720 *.undo_tablespace='UNDOTBS1' *.log_file_name_convert='/data/app/oracle/oradata/gtmsdb','/data/app/oracle/oradata/gtmstt' *.db_file_name_convert='/data/app/oracle/oradata/gtmsdb','/data/app/oracle/oradata/gtmstt','/data/app/oracle/oradata','/data/app/oracle/oradata/gtmstt'
2.创建新的路径
mkdir -p /data/app/oracle/admin/gtmstt/adump
mkdir -p /data/app/oracle/oradata/gtmstt
mkdir -p /data/app/oracle/fast_recovery_area/gtmstt
3.新库要在listener中静态注册
listenser.ora 和 tnsnames.ora文件中的 行缩进是不能省略的。否则你会遇到奇奇怪怪的问题。
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.3)(PORT = 1521)) ) )
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = gtmstt) (ORACLE_HOME = /data/app/oracle/product/11.2.0/dbhome_1) ) )
ADR_BASE_LISTENER = /data/app/oracle
[oracle@gtmstestdb ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 07-NOV-2020 17:13:54
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date 07-NOV-2020 16:57:03 Uptime 0 days 0 hr. 16 min. 50 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /data/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File /data/app/oracle/diag/tnslsnr/gtmstestdb/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.1.3)(PORT=1521))) Services Summary... Service "gtmstt" has 2 instance(s). Instance "gtmstt", status UNKNOWN, has 1 handler(s) for this service... 这个UNKNOWN 就是静态注册上的意思。 The command completed successfully
4.一定要检查防火墙是否关闭
[root@gtmstestdb ~]$ /bin/systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
Nov 05 17:22:39 gtmstestdb systemd[1]: Starting firewalld - dynamic firewall daemon... Nov 05 17:22:39 gtmstestdb systemd[1]: Started firewalld - dynamic firewall daemon. Nov 06 16:11:54 gtmstestdb systemd[1]: Stopping firewalld - dynamic firewall daemon... Nov 06 16:11:54 gtmstestdb systemd[1]: Stopped firewalld - dynamic firewall daemon.
5.配置源库tnsnames.ora 或者配置 测试库tnsnames.ora均可,取决于你想在哪一边进行操作
gtmsdb_du = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.3)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME= gtmsdb) ) )gtmsdb= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.2)(PORT=1521)) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=gtmsdb) ) )
5.开始duplicate在哪一端操作均可以,命令是一样的
target 后面加源库 auxiliary 后面加新库
rman target sys/oracle@gtmsdb auxiliary sys/oracle@gtmsdb_du
run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; allocate channel c4 type disk; allocate AUXILIARY channel c5 type disk; allocate AUXILIARY channel c6 type disk; allocate AUXILIARY channel c7 type disk; allocate AUXILIARY channel c8 type disk; duplicate target database to gtmstt from active database nofilenamecheck ; release channel c1; release channel c2; release channel c3; release channel c4; release channel c5; release channel c6; release channel c7; release channel c8;
}
