Oracle RAC到RAC配置OGG单向同步

CentOS6.8 Oracle 12.2.0.1 RAC到CentOS7.6 Oracle 19c RAC单向同步

/* OGG数据迁总体规划参考文档 */
https://cloud.tencent.com/developer/news/694510

一、创建共享目录

RAC环境下,OGG安装目录需要处于全部节点的共享目录下,可以使用ACFS或NFS。ACFS用于挂载一个共享目录(用于安装OGG软件)2个节点,ACFS可以使用已经存在的磁盘组,也可以单独创建磁盘组。

**1、源端创建共享目录(NFS)**

-- 这里源端OS版本为CentOS6.8不支持数据库版本12.2.0.1的情况下安装ACFS,使用NFS创建共享目录
[root@lissen-n1 ~]# acfsdriverstate supported
ACFS-9459: ADVM/ACFS is not supported on this OS version: 'centos-release-6-8.el6.centos.12.3.x86_64
'
ACFS-9201: Not Supported

-- 一个做服务端,其他节点做客户端
一、服务端安装NFS相关依赖包

-- 查找相关依赖包,没有就安装
rpm -qa | grep nfs
rpm -qa | grep rpcbind
-- yum -y install nfs-utils rpcbind

chkconfig nfs on
chkconfig rpcbind on

-- 6.x
service nfs start
service nfs status
service rpcbind start
service rpcbind status

-- 7.x
systemctl start rpcbind
systemctl start nfs

**源端所有节点创建共享目录**

-- 服务端/客户端(源端所有节点)
mkdir -p /u01/app/ogg_src
chown -R oracle.oinstall /u01/app/ogg_src
chmod -R 755 /u01/app/ogg_src

**配置NFS**

echo "/u01/app/ogg_src 192.168.59.12(rw,no_root_squash,async)" >> /etc/exports
echo "/u01/app/ogg_src *(insecure,rw,async,no_root_squash)" >> /etc/exports

-- 立即生效
exportfs -a

-- 服务端显示共享的目录
[oracle@lissen-n1 ogg_src]$ showmount -e
Export list for lissen-n1:
/u01/app/ogg_src (everyone)

**客户端连接服务端**

mount -t nfs 192.168.59.12:/u01/app/ogg_src /u01/app/ogg_src

-- 报错
[root@lissen-n2 ~]# mount -t nfs 192.168.59.12:/u01/app/ogg_src /u01/app/ogg_src
mount.nfs: access denied by server while mounting 192.168.59.12:/u01/app/ogg_src

-- 服务端/etc/exports添加

echo "/u01/app/ogg_src *(insecure,rw,async,no_root_squash)" >> /etc/exports

-- 永久挂载
echo "/bin/mount -t nfs 192.168.59.12:/u01/app/ogg_src /u01/app/ogg_src" >> /etc/rc.local

-- 7.x使用上面办法不能实现自动挂载,写入到/etc/fstab
echo "192.168.59.4:/u01/app/ogg_tgt /u01/app/ogg_tgt nfs defaults 0 0" >> /etc/fstab


[root@lissen-n2 app]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg--root-lv_root
                       59G  6.9G   50G  13% /
tmpfs                 8.0G   72K  8.0G   1% /dev/shm
/dev/sda1             976M   39M  886M   5% /boot
/dev/mapper/vg--root-lv_home
                      9.8G   23M  9.2G   1% /home
/dev/mapper/vg--root-lv_tmp
                      9.8G   33M  9.2G   1% /tmp
/dev/mapper/vg--oracle--soft-lv_u01
                      178G   30G  139G  18% /u01
192.168.59.12:/u01/app/ogg_src
                      178G   31G  138G  18% /u01/app/ogg_src

**2、目标端创建共享目录(ACFS)**

...同上

二、 安装OGG软件

**1、 OGG系统要求**

一个 OGG 实例最多支持 300 个并发 extract 和 replicat 进程,每个进程需要 25-55M 内存。
	GGSCI,view report,找到 PROCESS VM AVAIL FROM OS,大约就是系统所需 要的 swap space 大小
磁盘空间每个实例 50-150M,外加 trail 等等,至少给 1G。trail 所需空间 的预估方法是:[log volume in one hour] x [number of hours downtime] * 0.4
/tmp 空间,默认是 dirtmp 目录,可以通过 CACHEMGR 参数的 CACHEDIRECTORY 选项指定
安装 OGG 的用户必须属于 ORACLE 数据库实例的组,通常就是 dba。
要想支持RAC里的RMAN log retention特性, 得在add extract之前安装patch BUGFIX 11879974

**2、OGG相关文档**

-- OGG各版本对数据的支持文档

https://www.oracle.com/middleware/technologies/fusion-certification.html

Oracle GoldenGate	19.1.0.0.4+	Linux on System Z	Red Hat Enterprise Linux 7	Update Level	0+	64	Oracle Database	11.2.0.4+; 12.1.0.2+; 12.2.0.1+; 18c; 19c	"Supports Local and Remote, Capture and Delivery for Standard and Enterprise editions
Supports Remote, non-Integrated Replicat Delivery to Oracle Autonomous Transaction Processing and Data Warehousing Cloud"

-- Oracle文档资源

http://docs.oracle.com

-- OGG官方文档

https://docs.oracle.com/en/middleware/goldengate/core/19.1/installing/installing-classic-architecture.html

-- acfs上安装ogg,acfs用来存放ogg的安装目录,便于集群件的共享,在10g上部署可以选择ocfs2或者使用NFS

**3、配置ORACLE OGG相关环境变量**

-- 各个OS的库环境变量

  

节点1[oracle@lissen-n1 ~]$ cat ogg_src
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH


umask 022
#export TMP=/tmp
#export TMPDIR=$TMP


export OGG_HOME=/u01/app/ogg_src

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0.0/dbhome_1
export ORACLE_SID=gggsrc1
export PATH=$OGG_HOME:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/lib:/usr/lib:$LD_LIBRARY_PATH
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

alias ggsci='rlwrap ggsci'


#export TMPDIR=/home/oracle/xtts


#export OGG_HOME=/u01/app/ogg_src




[oracle@lissen-n1 ~]$ cat ogg_dest
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH


umask 022
#export TMP=/tmp
#export TMPDIR=$TMP

export OGG_HOME=/u01/app/ogg_dest

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0.0/dbhome_2
export ORACLE_SID=gggdest1
export PATH=$OGG_HOME:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/lib:/usr/lib:$LD_LIBRARY_PATH
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

alias ggsci='rlwrap ggsci'


#export TMPDIR=/home/oracle/xtts

#export OGG_HOME=/u01/app/ogg_dest


节点2[oracle@lissen-n2 ~]$ cat ogg_src
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH


umask 022
#export TMP=/tmp
#export TMPDIR=$TMP

export OGG_HOME=/u01/app/ogg_src

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0.0/dbhome_1
export ORACLE_SID=gggsrc2
export PATH=$OGG_HOME:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/lib:/usr/lib:$LD_LIBRARY_PATH
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

alias ggsci='rlwrap ggsci'


#export TMPDIR=/home/oracle/xtts


#export OGG_HOME=/u01/app/ogg_src




[oracle@lissen-n2 ~]$ cat ogg_dest
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH


umask 022
#export TMP=/tmp
#export TMPDIR=$TMP


export OGG_HOME=/u01/app/ogg_dest

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0.0/dbhome_2
export ORACLE_SID=gggdest2
export PATH=$OGG_HOME:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/lib:/usr/lib:$LD_LIBRARY_PATH
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

alias ggsci='rlwrap ggsci'


#export TMPDIR=/home/oracle/xtts

#export OGG_HOME=/u01/app/ogg_dest

**4、 上传解压OGG软件**

unzip 191004_fbo_ggs_Linux_x64_shiphome.zip
chown -R oracle.oinstall fbo_ggs_Linux_x64_shiphome
[root@lissen-n1 soft]# ls -ld fbo_ggs_Linux_x64_shiphome
drwxr-xr-x 3 oracle oinstall 4096 Oct 18  2019 fbo_ggs_Linux_x64_shiphome

**5、源端静默安装(OGG推荐)**

同一台机子上安装OGG要指定不同的ORACLE_HOME(2个ORACLE SOFTWARE),默认管理端口(如果一台机子安装多个OGG则需要另外指定了),一台机子安装2个OGG需要重新执行管理端口并安装第2个数据库软件。

-- 默认端口为MANAGER_PORT=7809

cat > /home/oracle/oggcore.rsp <<EOF

oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v19_1_0
INSTALL_OPTION=ORA12c
SOFTWARE_LOCATION=/u01/app/ogg_src
START_MANAGER=false
MANAGER_PORT=7809
DATABASE_LOCATION=/u01/app/oracle/product/12.2.0.1/dbhome_1
INVENTORY_LOCATION=/u01/app/oraInventory
UNIX_GROUP_NAME=oinstall

EOF

./runInstaller -silent \
 -showProgress \
 -responseFile /home/oracle/oggcore.rsp

-- 创建子目录
cd $OGG_HOME
ggsci
create subdirs


**6、 目标端安装OGG**

cat > /home/oracle/oggcore.rsp <<EOF

oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v19_1_0
INSTALL_OPTION=ORA19c
SOFTWARE_LOCATION=/u01/app/ogg_tgt
START_MANAGER=false
MANAGER_PORT=7809
DATABASE_LOCATION=/u01/app/oracle/product/19.3.0.0/dbhome_1
INVENTORY_LOCATION=/u01/app/oraInventory

EOF

./runInstaller -silent \
 -showProgress \
 -responseFile /home/oracle/oggcore.rsp

cd $OGG_HOME
ggsci
create subdirs

三、 配置单向同步

**1、源端配置DB实例、ASM实例监听和TNS**

**配置DB实例、ASM监听**

-- S:
-- grid用户

[grid@lissen-n1 ~]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 15-JAN-2022 21:09:04

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                15-JAN-2022 20:56:11
Uptime                    0 days 0 hr. 12 min. 53 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/12.2.0.1/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/lissen-n1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.12)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.14)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_FRA" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_OCR" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "ggg" has 1 instance(s).
  Instance "ggg1", status READY, has 1 handler(s) for this service...
Service "gggXDB" has 1 instance(s).
  Instance "ggg1", status READY, has 1 handler(s) for this service...
The command completed successfully

-- 节点1:

LISTENER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL=TCP)(HOST=192.168.59.12)(PORT=1521))
    )
  )


SID_LIST_LISTENER=
        (SID_LIST=
                (SID_DESC=
                        (GLOBAL_DBNAME=+ASM)
                        (ORACLE_HOME=/u01/app/12.2.0.1/grid)
                        (SID_NAME=+ASM1)
                )
        )

-- 节点2:

LISTENER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL=TCP)(HOST=192.168.59.13)(PORT=1521))
    )
  )


SID_LIST_LISTENER=
        (SID_LIST=
                (SID_DESC=
                        (GLOBAL_DBNAME=+ASM)
                        (ORACLE_HOME=/u01/app/12.2.0.1/grid)
                        (SID_NAME=+ASM2)
                )
        )


-- 配置ASM动态注册
SYS@+ASM1>alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.12)(PORT=1521)))' sid = '+ASM1';

System altered.

SYS@+ASM1>alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.13)(PORT=1521)))' sid = '+ASM2';

System altered.


-- 配置DB INSTANCE动态注册
SYS@ggg1>alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.12)(PORT=1521)))' sid = 'ggg1';

System altered.

SYS@ggg1>alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.13)(PORT=1521)))' sid = 'ggg2';

System altered.


-- 重启监听

srvctl status listener
srvctl stop listener
srvctl start listener

-- 检查是否配置成功

[oracle@lissen-n1 ~]$ sqlplus sys/oracle@192.168.59.12:1521/+ASM as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 15 22:20:06 2022

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SYS@192.168.59.12:1521/+ASM>exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[oracle@lissen-n1 ~]$ sqlplus sys/oracle@192.168.59.13:1521/+ASM as sysdba 

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 15 22:20:19 2022

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SYS@192.168.59.13:1521/+ASM>

[oracle@lissen-n1 ~]$ sqlplus sys/oracle@192.168.59.12:1521/ggg as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 15 22:23:43 2022

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SYS@192.168.59.12:1521/ggg>conn sys/oracle@192.168.59.13:1521/ggg as sysdba
Connected.
SYS@192.168.59.13:1521/ggg>


-- T:

-- 节点1

LISTENER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL=TCP)(HOST=192.168.59.4)(PORT=1521))
    )
  )


SID_LIST_LISTENER=
        (SID_LIST=
                (SID_DESC=
                        (GLOBAL_DBNAME=+ASM)
                        (ORACLE_HOME=/u01/app/19.3.0.0/grid)
                        (SID_NAME=+ASM1)
                )
        )


-- 节点2

LISTENER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL=TCP)(HOST=192.168.59.5)(PORT=1521))
    )
  )


SID_LIST_LISTENER=
        (SID_LIST=
                (SID_DESC=
                        (GLOBAL_DBNAME=+ASM)
                        (ORACLE_HOME=/u01/app/19.3.0.0/grid)
                        (SID_NAME=+ASM2)
                )
        )


alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.4)(PORT=1521)))' sid = '+ASM1';
alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.5)(PORT=1521)))' sid = '+ASM2';
alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.4)(PORT=1521)))' sid = 'ggg1';
alter system set local_listener = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.5)(PORT=1521)))' sid = 'ggg2';


[oracle@lissen-n1 ~]$ sqlplus sys/oracle@192.168.59.4:1521/ggg as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jan 16 15:08:24 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SYS@192.168.59.4:1521/ggg>
SYS@192.168.59.4:1521/ggg>conn sys/oracle@192.168.59.5:1521/ggg as sysdba
Connected.
SYS@192.168.59.5:1521/ggg>conn sys/oracle@192.168.59.4:1521/+ASM as sysdba
Connected.
SYS@192.168.59.4:1521/+ASM>
SYS@192.168.59.4:1521/+ASM>
SYS@192.168.59.4:1521/+ASM>conn sys/oracle@192.168.59.5:1521/+ASM as sysdba
Connected.


**配置TNS**

-- S:
-- 全部节点
-- oracle用户

tns_ggg_asm=
	(DESCRIPTION=
		(ADDRESS_LIST=
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.12)(PORT=1521))
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.13)(PORT=1521))
		)
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=+ASM)
		)
	)

tns_ggg=
	(DESCRIPTION=
		(ADDRESS_LIST=
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.12)(PORT=1521))
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.13)(PORT=1521))
		)
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=ggg)
		)
	)


[oracle@lissen-n2 admin]$ sqlplus sys/oracle@tns_ggg as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 15 22:26:42 2022

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SYS@tns_ggg>exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[oracle@lissen-n2 admin]$ sqlplus sys/oracle@tns_ggg_asm as sysdba    

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 15 22:26:52 2022

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SYS@tns_ggg_asm>


-- T:

tns_ggg_target_asm=
	(DESCRIPTION=
		(ADDRESS_LIST=
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.4)(PORT=1521))
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.5)(PORT=1521))
		)
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=+ASM)
		)
	)

tns_pdb01=
	(DESCRIPTION=
		(ADDRESS_LIST=
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.4)(PORT=1521))
			(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.5)(PORT=1521))
		)
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=pdb01)
		)
	)

[oracle@lissen-n1 admin]$ sqlplus sys/oracle@tns_pdb01 as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jan 16 15:13:13 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SYS@tns_pdb01>conn sys/oracle@tns_ggg_target_asm as sysdba
Connected.

**2、 源端创建用于同步的SCHEMA及相关测试对象**

-- 用于测试的SCHEMA和表空间
ogg_test
ogg_test_tbs

-- 创建表空间、用户、授权
create tablespace ogg_test_tbs datafile '+DATA' size 10M autoextend on maxsize unlimited extent management local segment space management auto;

create user ogg_test identified by ogg_test default tablespace ogg_test_tbs;
alter user ogg_test quota unlimited on ogg_test_tbs;

grant connect,resource to ogg_test;
grant select any dictionary to ogg_test;
grant select any table to ogg_test;
grant create view to ogg_test;

-- 创建相关测试对象
conn ogg_test/ogg_test;
create table t1 as select * from scott.emp;
create table t2 as select * from scott.dept;
create table t3 as select * from dba_objects;
create index idx_t1_sal on t1(sal);
create or replace view v_sel_t1_empno_ename_sal as select empno,ename,sal from t1;

-- 查询OGG_TEST下的对象

OGG_TEST@ggg>select object_name,object_type from dba_objects where owner = 'OGG_TEST';

OBJECT_NAME                         OBJECT_TYPE
----------------------------------- -------------------
T1                                  TABLE
T2                                  TABLE
T3                                  TABLE
IDX_T1_SAL                          INDEX
V_SEL_T1_EMPNO_ENAME_SAL            VIEW

**3、 源数据库上进行配置,创建用户,授权,运行执行序列号和ddl复制的相关脚本等**

**源库开启补充日志、开启归档、开启强日志写**

-- 开启补充日志
alter database  add supplemental log data; 
alter database  add supplemental log data (primary key) columns; 
alter database  add supplemental log data (foreign key) columns; 
alter database  add supplemental log data (unique) columns; 

-- 开启强日志写
SYS@tns_ggg>alter database force logging;

Database altered.

SYS@tns_ggg>select force_logging from v$database;

FOR
---
YES

-- 查看是否开启归档,没有就开启
SYS@tns_ggg>archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            +FRA
Oldest online log sequence     13
Next log sequence to archive   14
Current log sequence           14

**创建用户复制的OGG管理账户、默认表空间,授权**

-- ogg_admin用户需要单独划分表空间
create tablespace ogg_admin_tbs datafile '+DATA' size 100M autoextend on maxsize unlimited extent management local;
create temporary tablespace ogg_admin_temp_tbs tempfile '+DATA' size 100M autoextend on maxsize unlimited extent management local;
create user ogg_admin identified by ogg_admin default tablespace ogg_admin_tbs temporary tablespace ogg_admin_temp_tbs;
alter user ogg_admin quota unlimited on ogg_admin_tbs;
-- grant unlimited tablespace to ogg_admin;

-- 开启OGG复制参数,不开启复制的时候会报错
alter system set enable_goldengate_replication = true sid = '*';

**运行执行序列号、DDL复制相关脚本**

@sequence.sql
alter system archive log current; 
grant execute on utl_file to ogg_admin; 
@marker_setup.sql 
@ddl_setup.sql 
@role_setup.sql 
grant ggs_ggsuser_role to ogg_admin; 
@ddl_enable.sql 
@ddl_pin ogg_admin

-- 禁用DDL
-- @ddl_disable.sql

**4、配置MGR参数**

-- S/T

-- 配置查看MGR参数

view params mgr
info mgr
start mgr
stop mgr

-- 配置MGR参数

-- 默认端口7809
PORT 7809 
-- PORT 7809失效时,自动使用7810-7849端口
DYNAMICPORTLIST 7810-7849
-- 自动启动EXTRACT、REPLICAT进程 
AUTORESTART REPLICAT *, RETRIES 3, WAITMINUTES 2, RESETMINUTES 30 
AUTORESTART EXTRACT *, RETRIES 3, WAITMINUTES 2, RESETMINUTES 30
--AUTORESTART ER *, RETRIES 3, WAITMINUTES 10, RESETMINUTES 60 
--PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 1 
--PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS,MINKEEPHOURS 8
-- 配置自动文件删除策略 
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, minkeepfiles 100 

-- 记录进程关闭时的间隔时间
DOWNREPORTMINUTES 15
--DOWNCRITICAL   

-- 定义数据延迟的预警机制
LAGCRITICALSECONDS 10
LAGINFOMINUTES 0
LAGREPORTMINUTES 15

LAGREPORTHOURS 1 
--LAGINFOMINUTES 30 
LAGCRITICALMINUTES 45

-- 设置IP访问策略
ACCESSRULE, PROG *, IPADDR 192.168.*.*, ALLOW
-- ACCESSRULE, PROG *, IPADDR *, DENY

-- 启动MGR
start mgr

-- 拒绝访问告警
2021-09-06T11:59:15.809+0800  WARNING OGG-00936  Oracle GoldenGate Manager for Oracle, mgr.prm:  Access denied (request from 127.0.0.1, rule #2).

-- 注释掉
-- ACCESSRULE, PROG *, IPADDR *, DENY

-- OGG日志
tail -f $OGG_HOME/ggserr.log

**5、 源端配置extract group**

-- 帮助信息
help add extract

-- 创建抽取进程,threads代表进程数,单实例为1
add extract et_ot,tranlog begin now,threads 2
-- 配置抽取文件
add exttrail ./dirdat/ea,extract et_ot

edit params et_ot
view params et_ot

-- 配置extract参数

-- 抽取进程名称
extract et_ot
-- 设置环境变量
setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK") 
setenv (ORACLE_HOME = "/u01/app/oracle/product/12.2.0.1/dbhome_1")

-- 设置登录源库用户、TNS和密码
userid ogg_admin@tns_ggg, password ogg_admin
-- ASM环境才会用到该参数
tranlogoptions asmuser sys@tns_ggg_asm,asmpassword oracle
-- 设置传输延时
threadoptions maxcommitpropagationdelay 20000
-- 设置抽取文件
-- .代表$OGG_HOME
exttrail ./dirdat/ea
-- 动态解析
dynamicresolution
-- DDL复制
ddl include all
-- gettruncates
-- 复制表
table ogg_test.*;
-- 是否同步sequence
-- sequence ogg_test.*;

**6、源端配置data pump group**

/*
添加数据泵进程组
数据泵进程对应抽取文件
数据泵进程将抽取文件传输到目标端并设置远程追踪文件,复制进程会用到该追踪文件
数据泵进程是一种特殊的抽取进程
*/
add extract dmp_ot,exttrailsource ./dirdat/ea,begin now
-- 添加数据泵进程对应远程追踪文件
-- 该追踪文件和目标段复制追踪文件一致
add rmttrail ./dirdat/ra,extract dmp_ot

extract dmp_ot
rmthost 192.168.59.4,mgrport 7809
rmttrail ./dirdat/ra
passthru
-- gettruncates
ddl include all
table ogg_test.*;
-- sequence ogg_test.*

**7、目标端创建用户复制的OGG管理账户、默认表空间,授权**

-- ogg_admin用户需要单独划分表空间
create tablespace ogg_admin_tbs datafile '+DATA' size 100M autoextend on maxsize unlimited extent management local;
create temporary tablespace ogg_admin_temp_tbs tempfile '+DATA' size 100M autoextend on maxsize unlimited extent management local;
create user ogg_admin identified by ogg_admin default tablespace ogg_admin_tbs temporary tablespace ogg_admin_temp_tbs;
alter user ogg_admin quota unlimited on ogg_admin_tbs;
grant dba to ogg_admin;
-- grant unlimited tablespace to ogg_admin;

-- 开启OGG复制参数,不开启复制的时候会报错,CDB环境需要在CDB中设置
alter system set enable_goldengate_replication = true sid = '*';

**8、目标端配置replicat group**

-- GGSCI中执行SHELL命令
GGSCI (lissen-n1 as ogg_admin@ggg1/PDB01) 9> sh echo $ORACLE_HOME

/u01/app/oracle/product/19.3.0.0/dbhome_1

-- 登录TargetDB
dblogin,userid ogg_admin@tns_pdb01,password ogg_admin
-- 创建检查点表
add checkpointtable ogg_admin.chkpt_tab
-- 添加复制进程组
-- ./dirdat/ra对应源端DMP进程参数配置
add replicat rep_ot,exttrail ./dirdat/ra,begin now checkpointtable ogg_admin.chkpt_tab

edit params rep_ot

-- replicat进程名称
replicat rep_ot

-- 设置环境变量ORACLE_HOME
setenv (ORACLE_HOME="/u01/app/oracle/product/19.3.0.0/dbhome_1")

-- 设置语言
setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

-- 设置用于复制的账号密码、TNS
userid ogg_admin@tns_pdb01,password ogg_admin

-- ASSUMETARGETDEFS is ignored in OGG 12.2
-- 源端和目标端数据库类型一致,无需生成数据定义文件
assumetargetdefs

-- 目标端存在数据时忽略
-- 只在初始化时使用,初始化完成后建议关闭该参数
handlecollisions

-- 复制错误
reperror (default,discard)

-- DDL错误报告
ddlerror default discard

-- DDL操作添加到报告
ddloptions report

-- DDL操作只包含MAPPED的对象
ddl include mapped

-- 定义discardfile文件位置,如果处理中有记录出错会写入到此文件中
discardfile ./repsz.dsc,append,megabytes 1024

-- 映射源端和目标端对象
map ogg_test.*,target ogg_test.*;

四、 初始化数据


```sql

```sql
-- 可以使用 expdp/impdp、rman、OGG 全量等方法进行全量数据的迁移。
-- 这里使用DATA PUMP方式来初始化数据

**源端导出前检查**

1、查询ogg_test下所有对象,默认表空间,如果目标端没有ogg_test的默认表空间就创建

-- 可以查看VIEW
col object_name format a25;
select object_name,
       object_type 
       from dba_objects 
where  owner = 'OGG_TEST';

OBJECT_NAME                    OBJECT_TYPE
------------------------------ -------------------
T1                             TABLE
T2                             TABLE
T3                             TABLE
IDX_T1_SAL                     INDEX
V_SEL_T1_EMPNO_ENAME_SAL       VIEW

-- 查询OGG_TEST下对象的对应的表空间,如果有多个则都需要在目标端创建
col tablespace_name format a30
select owner,
       segment_name,
       segment_type,
       tablespace_name 
from   dba_segments 
where  owner = 'OGG_TEST';

OWNER      SEGMENT_NAME    SEGMENT_TYPE       TABLESPACE_NAME
---------- --------------- ------------------ ------------------------------
OGG_TEST   IDX_T1_SAL      INDEX              OGG_TEST_TBS
OGG_TEST   T3              TABLE              OGG_TEST_TBS
OGG_TEST   T2              TABLE              OGG_TEST_TBS
OGG_TEST   T1              TABLE              OGG_TEST_TBS

select username,
       default_tablespace 
from   dba_users 
where  username ='OGG_TEST';

USERNAME              DEFAULT_TABLESP
--------------------- ---------------
OGG_TEST              OGG_TEST_TBS

2、查询该表空间的信息

-- 查看表空间创建语句
set line 120;
set long 49999;
set pagesize 49999;
select dbms_metadata.get_ddl(
            object_type => 'TABLESPACE',
            name => 'OGG_TEST_TBS') as TBS_META
from   dual;

DBMS_METADATA.GET_DDL(OBJECT_TYPE=>'TABLESPACE',NAME=>'OGG_TEST_TBS')
--------------------------------------------------------------------------------

  CREATE TABLESPACE "OGG_TEST_TBS" DATAFILE
  'D:\APP\ADMINISTRATOR\ORADATA\GGG\OGG_TEST_TBS_A.DBF' SIZE 10485760
  AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO
   ALTER DATABASE DATAFILE
  'D:\APP\ADMINISTRATOR\ORADATA\GGG\OGG_TEST_TBS_A.DBF' RESIZE 12582912

-- 查看表空间大小
select tablespace_name,
       sum(bytes) / 1024 / 1024 as sum_in_mb 
from   dba_data_files 
where  tablespace_name = 'OGG_TEST_TBS' 
group  by tablespace_name;

TABLESPACE_NAME                 SUM_IN_MB
------------------------------ ----------
OGG_TEST_TBS                           12

set line 121;
set pagesize 49999;
col tablespace_name format a15; 
col used_percent format a12;
col used_gb format 99999;
col size_gb format 99999;
select a.tablespace_name,
       round(a.tablespace_size * b.value / 1024 / 1024 / 1024, 2) TOTAL_GB,
       round(a.used_space * b.value / 1024 / 1024 / 1024, 2) USED_GB,
       round(a.tablespace_size * b.value / 1024 / 1024 / 1024, 2) -
       round(a.used_space * b.value / 1024 / 1024 / 1024, 2) FREE_GB,
       ROUND(A.used_percent, 2)|| '%' used_percent
 from  dba_tablespace_usage_metrics a, v$parameter b
 where b.NAME = 'db_block_size'
 and   a.tablespace_name = 'OGG_TEST_TBS'
 order by used_percent DESC;

TABLESPACE_NAME   TOTAL_GB USED_GB    FREE_GB USED_PERCENT
--------------- ---------- ------- ---------- ------------
OGG_TEST_TBS		32	 0	31.99 .03%


3、目标端创建OGG_TEST_TBS表空间,提前创建,不然导入的时候会报错..

CREATE TABLESPACE "OGG_TEST_TBS" DATAFILE
  '/u01/app/oracle/oradata/ggg/OGG_TEST_TBS_A.DBF' SIZE 10485760
  AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO

create tablespace OGG_TEST_TBS datafile '/u01/app/oracle/oradata/GGG19C/pdb01/ogg_test_tbs_01.dbf' size 10M autoextend on maxsize unlimited extent management local;

create tablespace OGG_TEST_TBS datafile '+DATA' size 10M autoextend on maxsize unlimited extent management local;

**查询当前库SCN**

SYS@ggg1>select current_scn from v$database;

CURRENT_SCN
-----------
    2475774

**源端基于SCN导出SCHEMA**

-- 如果源库或目标库没有足够的空间存储DMP文件,可以使用远程不落地的方式导入到目标库

-- Win10

expdp """sys/oracle@tns_ggg as sysdba""" directory=dir1 dumpfile=ogg_test.dmp schemas=ogg_test flashback_scn=1127488

-- CentOS6.8

expdp \'sys\/oracle\@tns_ggg as sysdba\' directory=dir1 dumpfile=ogg_test.dmp schemas=ogg_test flashback_scn=1127488

-- SYS免密导出
expdp \'/ as sysdba\' directory=dir1 dumpfile=ogg_test.dmp schemas=ogg_test flashback_scn=2475774

-- 不导出统计信息(加快导出速度)
expdp \'/ as sysdba\' directory=dir1 dumpfile=ogg_test.dmp schemas=ogg_test EXCLUDE=statistics flashback_scn=2475774

**源端传输DMP文件到目标端并导入**

scp ogg_test.dmp oracle@192.168.59.19:/home/oracle/pdb01_dir1

-- CentOS7.6
-- 导入到pdb01中

impdp \'sys\/oracle\@tns_pdb01 as sysdba\' directory=dir1 dumpfile=ogg_test.dmp

**检查对象**

SYS@ggg>conn ogg_test/ogg_test
Connected.
OGG_TEST@ggg>select * from tab;

TNAME			  TABTYPE  CLUSTERID
------------------------- ------- ----------
T1			  TABLE
T2			  TABLE
T3			  TABLE
V_SEL_T1_EMPNO_ENAME_SAL  VIEW


OGG_TEST@ggg>select object_name,object_type from dba_objects where owner = 'OGG_TEST';

OBJECT_NAME		  OBJECT_TYPE
------------------------- -------------------
T3			  TABLE
T2			  TABLE
T1			  TABLE
IDX_T1_SAL		  INDEX
V_SEL_T1_EMPNO_ENAME_SAL  VIEW

col tablespace_name format a30
select owner,
       segment_name,
       segment_type,
       tablespace_name 
from   dba_segments 
where  owner = 'OGG_TEST';

五、启动OGG各个进程

**1、源端启动MGR进程**

GGSCI (DESKTOP-528JOO2) 1> view params ./GLOBALS
MGRSERVNAME GGSMGR


GGSCI (DESKTOP-528JOO2) 2> exit

D:\ogg_src>net start ggsmgr
GGSMGR 服务正在启动 .
GGSMGR 服务已经启动成功。

D:\ogg_src>ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Windows x64 (optimized), Oracle 11g on Oct 19 2019 11:09:03
Operating system character set identified as GBK.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.



GGSCI (DESKTOP-528JOO2) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     STOPPED     DMP_OT      00:00:00      01:22:53
EXTRACT     STOPPED     OGG_TEST    00:00:00      01:54:24


**2、目标端启动MGR进程**

[oracle@ggg dir1]$ cd $OGG_HOME
[oracle@ggg ogg_tgt]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Oct 17 2019 23:13:12
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.



GGSCI (ggg) 1> start mgr
Manager started.


GGSCI (ggg) 2> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    STOPPED     REP_OT      00:00:00      00:53:28  

**3、源端启动EXTRACT进程**

-- 启动进程前S/T开启OGG复制
alter system set enable_goldengate_replication = true;

start et_ot

2021-09-07T13:18:17.900+0800  ERROR   OGG-00041  Oracle GoldenGate Capture for Oracle, et_ot.prm:  Data source not specified.
2021-09-07T13:18:17.900+0800  ERROR   OGG-01668  Oracle GoldenGate Capture for Oracle, et_ot.prm:  PROCESS ABENDING.

2021-09-07T13:21:36.814+0800  ERROR   OGG-00303  Oracle GoldenGate Capture for Oracle, et_ot.prm:  Unable to connect to database using user ogg_admin@tns_ggg. Ensure that the necessary privileges are granted to the user.
                              Operation not supported because enable_goldengate_replication is not set to true.


**4、目标端启动REPLIAT进程**

-- 启动复制进程组前开启OGG应用
alter system set enable_goldengate_replication = true;

-- 1127488为源端导出时指定的SCN
start rep_ot atcsn 1127488

**5、源端启动DATA PUMP进程**

start dmp_ot
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值