使用RMAN duplicate做GoldenGate实例化

63 篇文章 6 订阅
一、背景
  GoldenGate从源数据库的事务日志捕获数据,并应用到目标数据库,它提供了一种灵活的、松耦合的体系结构,可以被用于实现几乎所有复制的场景。最大的挑战之一就是为复制建立一个目标库,在目标数据库初始实例化后,应用改变的数据时,确保没有数据冲突,也没有数据丢失。GoldenGateton通过“CSN”(Commit Sequence Number)解决此问题。“CSN”并不是Oracle的“SCN”,虽然它们在功能上相似,但语法是不同的。GoldenGate使用此功能获得源数据库的读一致性映像进行目标数据库的实例化,并且对一致性映像的CSN保持跟踪。
  本文假设这样一个场景,源数据库是生产系统数据库,需要做到停机最小化,并且已有很大的数据量。现在需要用GoldenGate搭建一个复制环境。源和目标都已经安装配置好GoldenGate。

二、环境
两台Oracle VM VirtualBox虚拟机
host:master1、master2
IP:192.168.1.1、192.168.1.2
OS:Linux 2.6.32 
DB:Oracle 11.2.0.3,启用归档
OGG:ogg112101_fbo_ggs_Linux_x64_ora11g_64bit 2.2.3
master1上是源数据库,master2上建立auxiliary DB,其数据库名称和相关的目录结构都和源库一样

三、使用RMAN duplicate复制实例化目标库
  11g的RMAN duplicate 可以通过Active database duplicate和Backup-based duplicate两种方法实现。这里的测试使用的是Active database duplicate,因为Active database duplicate 功能强大,不需要先把目标数据库进行rman备份,只要目标数据库处于归档模式下即可直接通过网络对数据库进行copy,且copy完成后自动open数据库。这对于大数据特别是T级别的数据库来说优点非常明显,复制前不需要进行备份,减少了备份和传送备份的时间,同时节省备份空间。下面来进行具体的duplicate操作。

1. 开启源库的补充日志
在master1上:
alter database add supplemental log data;

2. 启动GoldenGate抽取进程
在master1上:
start manager
ADD EXTRACT pri_ext, TRANLOG, BEGIN NOW
ADD EXTTRAIL /home/oracle/ogg/dirdat/lt, EXTRACT pri_ext
ADD EXTRACT pum_ext, EXTTRAILSOURCE /home/oracle/ogg/dirdat/lt
ADD RMTTRAIL /home/oracle/ogg/dirdat/rt, EXTRACT pum_ext
START EXTRACT pri_ext
START EXTRACT pum_ext

3. 创建auxiliary DB参数文件,启动实例到nomount状态
在master1上执行
create pfile from spfile;
使用scp直接拷贝到master2的相关目录,或者在master2上直接编辑参数文件。
scp /u01/app/oracle/product/11.2.0/db_1/dbs/initmydb1.ora 192.168.1.2:/u01/app/oracle/product/11.2.0/db_1/dbs
如果有则删除掉这行*.local_listener='LISTENER_MYDB1'

4. 在master2上创建参数文件中的相关目录并修改所属
mkdir -p /u01/app/oracle/admin/mydb1
mkdir -p /u01/app/oracle/admin/mydb1/adump
mkdir -p /u01/app/oracle/oradata/mydb1
mkdir -p /u01/app/oracle/fast_recovery_area/
mkdir -p /u01/app/oracle/fast_recovery_area/mydb1

5. 在master2上启动实例到nomount状态
startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initmydb1.ora';
create spfile from pfile;

6. 创建密码文件,把master1上的orapwmydb1拷贝到master1的相应目录下
scp /u01/app/oracle/product/11.2.0/db_1/dbs/orapwmydb1 192.168.1.2:/u01/app/oracle/product/11.2.0/db_1/dbs

7. 配置网络
master1上:
修改listener.ora文件如下:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = mydb1)
    )         
  )
  
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
修改tnsnames.ora文件如下:
MYDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mydb1)
    )
  )

oradu =                 
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mydb1)
    )
  )
master2上:
修改listener.ora文件如下:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = mydb1)
    )         
  )
  
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
修改tnsnames.ora文件如下:
MYDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mydb1)
    )
  )

oradu =                 
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mydb1)
    )
  ) 
  
8. 在master1上启动复制
rman target sys/123456@mydb1 auxiliary sys/123456@oradu
RMAN> duplicate target database to mydb1 from active database nofilenamecheck;
  
9. 复制完成后,查看auxiliary DB上最后恢复到的最后SCN
在master2上查看alert log文件,查找RESETLOGS after incomplete recovery UNTIL CHANGE条目
vi /u01/app/oracle/diag/rdbms/mydb1/mydb1/trace/alert_mydb1.log
RESETLOGS after incomplete recovery UNTIL CHANGE 1474353

10. 重启auxiliary DB库
在master2上:
shutdown immediate;
create spfile from pfile;
startup;

11. 启动GoldenGate复制进程
在master2上:
-- 建立检查点表
start manager
DBLOGIN USERID ogg, PASSWORD 123456
# 源库上没有OGG的添加检查点表,所以目标库上要手工添加
ADD CHECKPOINTTABLE ogg.cpt
ADD REPLICAT rep, EXTTRAIL /home/oracle/ogg/dirdat/rt  
start replicat rep, aftercsn 1474353  

五、参考
Oracle GoldenGate Best Practices: Instantiation from an Oracle Source Database
Oracle Rman duplicate数据库复制
Oracle11gR2使用RMAN duplicate复制数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值