OS:Oracle Linux 6.6 x64和Windows Server 2008 R2 x64
DB:Oracle 12.1.2.0
GoldenGate:12.2.0.1.1
注意:先参考
https://blog.csdn.net/rgb_rgb/article/details/77346017
不然会掉坑!!
环境简单描述:
源端和目的端都是CDB/PDB架构,源端主库prod,目的端主库east;两端都含有名为pdb1的PDB。源端pdb1中含有名为sh的schema。
一、安装
1.1 Linux安装
环境变量:
-
export GGS_HOME
=
/
u01/ggs_1
LD_LIBRARY_PATH和PATH都要加上$GGS_HOME。如果使用的是oracle用户以外的用户,需加上ORACLE_HOME和ORACLE_SID变量。
1.2 Windows安装
在系统变量中加上ORACLE_HOME和ORACLE_SID变量。
1.3 安装完成后
在命令行中进入$GGS_HOME目录,运行ggsci,创建相关subdirs
二、数据库准备
源端和目的端:
先在mount下执行:
-
ALTER
DATABASE
ADD
SUPPLEMENTAL
LOG
DATA
;
-
ALTER
DATABASE
FORCE
LOGGING
;
-
alter
database
flashback
on
;
-
SELECT
supplemental_log_data_min
,
force_logging
,
flashback_on
FROM
v$
database
;
-
SUPPLEME FORCE_LOGGING FLASHBACK_ON
-
-------- --------------------------------------- ------------------
-
YES YES YES
打开数据库:
-
alter
database
open
;
-
ALTER
SYSTEM SWITCH LOGFILE
;
修改参数:
-
alter
system
set
ENABLE_GOLDENGATE_REPLICATION
=
TRUE
scope
=
both
;
-
-
/
/
UNDO参数修改到合适大小
-
show
parameter undo
-
-
NAME
TYPE
VALUE
-
------------------------------------ ----------- ------------------------------
-
temp_undo_enabled boolean
FALSE
-
undo_management string AUTO
-
undo_retention
integer
86400
-
undo_tablespace string UNDOTBS1
用户与权限:
在源端只需要有一个Extract进程来捕获所有的PDB数据;而在目的端需要为每个PDB准备一个Replicat进程。因此在源端只需要在CDB建一个针对所有容器的DBA账户,目的端则在每个PDB建一个DBA账户。
-
/
/
源端
-
create
user
c##ggadm
identified
by
ggadm
;
-
grant
dba
to
c##ggadm container
=
all
;
-
-
/
/
目的端,分别connect到每个PDB
-
create
user
ggadm
identified
by
ggadm
;
-
grant
dba
to
ggadm
;
-
-
/
/
以下两条摘自文档,但不完全包含所需的权限,比如CREATE SESSION就没有
-
exec dbms_goldengate_auth
.
grant_admin_privilege
(
'c##ggadm'
)
;
-
exec dbms_goldengate_auth
.
grant_admin_privilege
(
'c##ggadm'
,
container
=
>
'all'
)
;
三、用户认证
为了不在参数文件中显示密码,可以配置Credential Store。首先为其创建目录(比如/u01/ggs_1/credentialstore),然后进入ggsci:
-
edit
params
.
/
GLOBALS
-
/
/
编辑以下文字
-
CREDENTIALSTORELOCATION
/
u01
/
ggs_1
/
credentialstore
退出ggsci,再重新进入,使以上参数生效,继续。
-
ADD
CREDENTIALSTORE
-
-
/
/
源端为CDB和每个PDB都建立一个ALIAS
-
ALTER
CREDENTIALSTORE
ADD
USER
c##ggadm
PASSWORD
ggadm ALIAS ggadm DOMAIN ext
-
ALTER
CREDENTIALSTORE
ADD
USER
c##ggadm
@
pdb1
PASSWORD
ggadm ALIAS ggadm1 DOMAIN ext
-
-
/
/
目的端为每个PDB建立一个ALIAS
-
ALTER
CREDENTIALSTORE
ADD
USER
ggadm
@
pdb1
PASSWORD
ggadm ALIAS ggadm1 DOMAIN rpl
-
//查看配置
-
info credentialstore
-
//删除用户
-
ALTER CREDENTIALSTORE DELETE USER ...
四、参数文件配置
4.1 源端Manager
-
view params mgr
-
-
PORT 7809
-
DYNAMICPORTLIST 7810
-
7820
,
7830
-
AUTOSTART ER
*
-
AUTORESTART ER
*
,
RETRIES 4
,
WAITMINUTES 4
-
STARTUPVALIDATIONDELAY 5
-
USERIDALIAS ggadm DOMAIN ext
-
PURGEOLDEXTRACTS /u01/ggs_1/dirdat/
lt
*
,
USECHECKPOINTS
,
MINKEEPHOURS 2
启动Manager,start mgr
4.2 源端Extract进程
-
view params ext
-
-
EXTRACT ext
-
USERIDALIAS ggadm DOMAIN ext
-
LOGALLSUPCOLS
-
UPDATERECORDFORMAT COMPACT
-
EXTTRAIL /u01/ggs_1/dirdat/
lt
-
SOURCECATALOG pdb1
-
TABLE sh
.
*;
4.3 源端Pump进程
-
view params ext_pump
-
-
EXTRACT ext_pump
-
USERIDALIAS ggadm DOMAIN ext
-
RMTHOST
WINEAST
,
MGRPORT 7809
-
RMTTRAIL
E
:
\
ggs_1\dirdat\rt
-
SOURCECATALOG pdb1
-
TABLE sh
.
*;
以上示例中,WINEAST是目的端主机名,在本地的/etc/hosts文件中需事先写入;
E
:
\
ggs_1\dirdat\rt
是目的端的路径。
4.4 目的端Manager进程
-
view params mgr
-
-
PORT 7809
-
DYNAMICPORTLIST 7810
-
7820
,
7830
-
STARTUPVALIDATIONDELAY 5
-
USERIDALIAS ggadm1 DOMAIN rpl
目的端的Manager进程,可以用其中一个PDB的user来作为USERIDALIAS,只要权限足够即可。
然后即可启动Manager进程。
4.5 目的端Replicat进程
-
view params repl1
-
REPLICAT repl1
-
DBOPTIONS INTEGRATEDPARAMS
(
parallelism 6
)
-
USERIDALIAS ggadm1 DOMAIN rpl
-
ASSUMETARGETDEFS
-
SOURCECATALOG pdb1
-
MAP sh
.
*
,
TARGET sh2
.
*;
此时可以启动两端的manager进程,但目的端的replicat进程先不要启动。
五、创建进程组
5.1 源端操作
5.1.1 源端分别通过先前配置的ALIAS登录到
每个PDB
,添加每个schema的补充日志:
-
DBLOGIN USERIDALIAS
ggadm1
DOMAIN ext
-
add
schematrandata
SH
allcols
-
-
2016
-
07
-
05 17
:
50
:
48 INFO OGG
-
01788 SCHEMATRANDATA has been added on schema SH
.
-
-
2016
-
07
-
05 17
:
50
:
49 INFO OGG
-
01976 SCHEMATRANDATA
for
scheduling columns has been added on schema SH
.
-
-
2016
-
07
-
05 17
:
50
:
49 INFO OGG
-
01977 SCHEMATRANDATA
for
all columns has been added on schema SH
.
5.1.2 注册Extract到每个PDB
登录到CDB
-
DBLOGIN USERIDALIAS ggadm DOMAIN ext
-
Successfully logged
into
database CDB$ROOT
.
-
-
REGISTER EXTRACT ext DATABASE CONTAINER
(
pdb1,pdb2
)
-
2016
-
06
-
21 18
:
48
:
39 INFO OGG
-
02003 Extract SHGRP successfully registered with database at SCN 1905154
.
PDB需是已经存在,注册后Extract进程只会捕获列表中的PDB数据。如果以后又新增或删除了PDB,可以用命令REGISTER EXTRACT {ADD | DROP} CONTAINER。。。
5.1.3 添加Extract进程和本地Trail
登录到CDB
-
DBLOGIN USERIDALIAS ggadm DOMAIN ext
-
-
>
ADD
EXTRACT ext
,
INTEGRATED TRANLOG
,
BEGIN NOW
-
EXTRACT
(
Integrated
)
added
.
-
-
>
ADD
EXTTRAIL
/u01/ggs_1
/
dirdat/
lt
,
EXTRACT ext
-
EXTTRAIL added
.
5.1.4 添加Pump进程和远程Trail
-
>
ADD
EXTRACT ext_pump
,
EXTTRAILSOURCE /u01/ggs_1
/
dirdat/
lt
-
EXTRACT added
.
-
-
#
add
remote trail(source)
-
>
ADD
RMTTRAIL E
:
\
ggs_1\dirdat\rt
,
EXTRACT ext_pump
-
RMTTRAIL added
.
5.2 目的端
5.2.1 添加Replicat进程
-
DBLOGIN USERIDALIAS ggadm1 DOMAIN rpl
-
-
>
ADD
REPLICAT repl1
,
INTEGRATED
,
EXTTRAIL E
:
\
ggs_1\dirdat\rt
-
REPLICAT
(
Integrated
)
added
.
6. 同步初始化
有条件的话可以在停止源端的情况下实现同步,这个最简单。如果不能停止源端,可按如下方式实现初始化同步。
6.1 准备Directory
两端各自在PDB中创建Directory,并在文件系统确认准备就绪:
-
create
directory
dumpdir
as
'/u01/pump'
;
6.2 源端确认当前SCN
-
select
current_scn
from
v$
database
;
-
CURRENT_SCN
-
-----------
-
1816569
6.3 源端PDB导出schema
-
expdp system/oracle@pdb1 directory
=
dumpdir SCHEMAS
=
sh parallel
=
2 dumpfile
=
sh_%u
.
dmp flashback_scn
=
1816569
将导出文件发送到目的端的Directory对应路径下。
6.4 目的端PDB导入schema
这里需要先行在PDB中创建需要的表空间,否则导入会失败。用户可以不用先行创建,导入时会自动创建,但事后要grant相关权限。
另外这里使用了map。
-
impdp system/oracle@pdb1 directory
=
dumpdir REMAP_SCHEMA
=
sh
:
sh2 dumpfile
=
sh_01
.
dmp
,
sh_02
.
dmp logfile
=
sh_imp
.
log
6.5 键和约束
确保schema中的约束(constraint)处于Validated的状态,可以通过以下查询确认。
-
select
CONSTRAINT_NAME
,
TABLE_NAME
,
VALIDATED
from
user_constraints
;
根据MOS ID 2048907.1,如果不是VALIDATED,当发生update语句时,将导致类似如下错误,导致Replicat进程中止:
-
ERROR OGG
-
01169 Encountered an update where all key columns
for
target table ODSMGR
.
YFS_INVENTORY_SUPPLY are
not
present
.
如果发现不是VALIDATED,按以下方式修改:
-
ALTER
TABLE
dept
MODIFY
CONSTRAINT
dname_key
VALIDATE
;
6.6 从指定SCN开始Replicat
-
start
replicat repl1
,
aftercsn 1816569
以上方法,可参考MOS ID:1276058.1
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22621861/viewspace-2121593/
,如需转载,请注明出处,否则将追究法律责任。