GG12.2 Oracle to Oracle 操作简明命令

前端之家收集整理的这篇文章主要介绍了GG12.2 Oracle to Oracle 操作简明命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
How to Setup Oracle GoldenGate - Oracle to Oracle Extract and Replicat (step by step Classic Extract & Replicat setup) and Tutorials for Heterogeneous Databases (文档 ID 1484793.1)
==== 

==== 创建用户

useradd  -u 1300 -g oinstall -G dba,oper -d /home/oggs -m oggs

echo -n Oracle_123 |passwd --stdin oggs

su - oggs

vi .bash_profile

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
GGS_HOME=/u01/app/oggs; export GGS_HOME
ORACLE_SID=ymsdb; export ORACLE_SID
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
PATH=${PATH}:$GGS_HOME:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:$GGS_HOME
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
export TEMP=/tmp
export TMPDIR=/tmp
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

==== 创建目录

mkdir -p /u01/app/oggs
chown -R oggs:oinstall /u01/app/oggs


=== 配置SHELL Limits 限制

1. Create a file labeled 99-grid-oracle-limits.conf within /etc/security/limits.d/ as follows

(1). 创建个空文件

touch /etc/security/limits.d/99-grid-oracle-limits.conf

(2). 文件中输入以下内容
cat >> /etc/security/limits.d/99-grid-oracle-limits.conf <<EOF
oggs               soft    nproc   16384
oggs               hard    nproc   16384
oggs               soft    nofile  1024
oggs               hard    nofile  65536
oggs               soft    stack  10240
oggs               hard    stack  32768
EOF

2. create a shell script labeled oracle-grid.sh within /etc/profile.d/ to create the ulimits for the oracle and grid user. 

(1). 创建个空文件
touch /etc/profile.d/oracle-grid.sh

(2). 编辑文件

vi /etc/profile.d/oracle-grid.sh

#Setting the appropriate ulimits for oracle and grid user
if [ $USER = "oracle" ] || [ $USER = "grid" ] || [ $USER = "oggs" ]; then
      if [ $SHELL = "/bin/ksh" ]; then
              ulimit -p 16384
              ulimit -n 65536
      else
         ulimit -u 16384 -n 65536
      fi
fi


/***** 安装 GG ***********/

su - oggs

cd /orasoft/ora11g
unzip fbo_ggs_Linux_x64_shiphome.zip
cd /orasoft/ora11g/fbo_ggs_Linux_x64_shiphome/Disk1
./runInstaller



/********* GG 环境初始化 ******************/


1. 创建子目录

cd $GGS_HOME
ggsci
create subdirs


2. 确认gg可以正常工作(源库&目标库)

cd $GGS_HOME
ggsci
dblogin userid system,password Oracle_123
info mgr
stop mgr
edit param mgr

PORT 7809
DYNAMICPORTLIST 7819-7839
PURGEOLDEXTRACTS /u01/app/oggs/dirdat

start mgr
info mgr

/**** 模拟插入部分测试数据 *************/

create user demos identified by demos;
grant connect,resource to demos;

create table demos.test_users as select * from dba_users;

alter table demos.test_users add constraint pk_users primary key (user_id);


3. 源库配置

(1) 数据库级附加日志

alter database archivelog;
alter database force logging; ## 非必须,强制日志是针对直接路径数据加载的
select supplemental_log_data_min from v$database;
alter database add supplemental log data;

(2) 启用ENABLE_GOLDENGATE_REPLICATION 

ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;


(3) 创建用于数据同步的用户

create user ggs identified by ggs;
grant dba to ggs;

(4) 启用表级附加日志

cd $GGS_HOME
ggsci
dblogin userid ggs,password ggs
add trandata demos.test_users

注意:
	( 
	set linesize 300
	col owner format a10
	col log_group_name format a15
	col table_name format a25
	col LOG_GROUP_TYPE format a30
	select owner,log_group_name,table_name,log_group_type,always from dba_log_groups where owner='DEMOS';
	注意观察下:
	OWNER      LOG_GROUP_NAME  TABLE_NAME                LOG_GROUP_TYPE                 ALWAYS
	---------- --------------- ------------------------- ------------------------------ -----------
	DEMOS      GGS_87352       TEST_USERS                USER LOG GROUP                 ALWAYS
	DEMOS      SYS_C0011109    TEST_USERS                PRIMARY KEY LOGGING            ALWAYS
	DEMOS      SYS_C0011110    TEST_USERS                UNIQUE KEY LOGGING             CONDITIONAL
	DEMOS      SYS_C0011111    TEST_USERS                FOREIGN KEY LOGGING            CONDITIONAL
	
	##等同于 alter table demos.test_users add supplemental log group <log_group_name> (user_id) always;
	)
	
(5) 确认表是否添加附件日志
	info trandata demos.test_users ##
	
	

4. 目标库配置


(1) 创建用于数据同步的用户

create user ggt identified by ggt;
grant dba to ggt;

(2) ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

(3) 级联更新带来的问题 (触发器或者级联操作(外键))

 两种解决办法:
 > 数据库内完成,要同步的表使用
 		alter table ... disable constraint ...
 		alter trigger ... disable

 > 如果目标数据库是Oracle,并且Oracle版本是10.2.0.5或者11.2.0.2之后,使用的优势GG11g,还可以使用GG11所提供的suppresstriggers选项
 	
 	 DBOPTIONS suppresstriggers
 	
 处于通用性考虑,推荐使用第一种方式
 
 
(4) checkpoint table

 两种方式:
 
 > 所有replicat 使用同一个checkpoint table
 
   这种方式会用到global文件,不同于extract,replicat(放置在$GGS_HOME/dirprm),GLOBALS文件是放置在$GGS_HOME底下的
   
   Step:
   
   1). $GGS_HOME下创建文件GLOBALS
   
   	 cd $GGS_HOME
   	 vi GLOBALS      ## edit ./GLOBALS
   	 
   	 CheckPointTable ggt.chkpt
   	 GGSCHEMA GGT
   	 
   	 exit ## 一定要退出下,重进
   2). 创建表ggt.chkpt
   
   	 cd $GGS_HOME
   	 ggsci
   	 dblogin userid ggt,password ggt
   	 add checkpointtable
   	 
   3). 确认下
   	 info checkpointtable ggt.chkpt
   	 
   注意:实际创建了两张表 ggt.chkpt & ggt.chkpt_lox
   	 

  > Replicat 级别的checkpointtable
  
   可以在add replicat 语句中直接加入 checkpointtable,相当于为每个Replicat进程定义一个专属Checkpoint Table
   
   ggsci> add replicat rb,exttrail dirdata/rp,checkpointtable ggt.rbckt
   
   但是注意:这个命令并没有自动创建这个检查点表,而且没有任何提示,add replicat rb时不会报错,但delete replicat rb时,会提示找不到表,正确的做法如下:
   
   1). create table ggt.rbckt as select * from ggt.chkpt where 0=1;
   2). create table ggt.rbckt_lox as select * from ggt.chkpt_lox where 0=1
   3). add replicat rb,checkpointtable ggt.rbckt  ## 待验证这种方式
   

/*************** 配置阶段 ***********************************/

1. Step:

(1) 配置extract并启动
(2) 配置datapump并启动
(3) 完成初始加载
(4) 配置Replicat并启动

2. 源库配置exttact

(1) 准备参数文件

	cd $GGS_HOME
	ggsci
	edit params lxusers
	
	Extract lxusers
	
	----------------------
	-- Local extract for demos
	-- Author:
	-- Created: 2017-07-26
	----------------------
	setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
	userid ggs,password ggs
	extrail dirdata/sp
	table demos.test_users;
	
	注意一点:
	1). SETENV
	GG 继承 GG用户(本例为oggs).bash_profile中的设置
	setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
	setenv (ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1")
	setenv (ORACLE_SID="ymsdb")
	2). USERID/PASSWORD
	
	可以使用encrypt password命令对密码记性加密,指定加密时需要指定一个密钥或者加密算法,也可以使用默认密钥,步骤如下:
	
	a. 加密密码
	encrypt password ggs encryptkey default
	
  b. 使用加密后的密码,不过需要告诉GG这是一个加密后的密码,并且需要提供加密时相同的密钥或者加密算法
  
    > 命令行登录
    
    dblogin userid ggs,password "",encryptkey default
    
    > 参数文件登录聚
    
    userid ggs,password,encryptkey default
    
  3) Extrail

    可以使用相对路径,如dirdata/sp
    也可以使用绝对路径,如/u01/app/oggs/dirdata/sp ## 


  4) Table 
  
  	demos.test_users; ## 注意分号
  	demos.*  ## schema级别
  	
 (2) 密码加密后的参数文件
 
  edit params lxusers
	
Extract lxusers
	
----------------------
-- Local extract for demos
-- Author:
-- Created: 2017-07-26
----------------------
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ggs,password AACAAAAAAAAAAADAFHJEXBKHIDHHAGIC,encryptkey default
exttrail dirdata/sp
table demos.test_users;
	
	(3) 创建extract进程
	
	add extract lxusers,tranlog,begin now  ## tranlog默认指的就是online redolog,begin now,begin ExtSeqNo 或者 begin ExtRBA 是从什么时候开始抓取
	add exttrail dirdat/sp,extract lxusers,megabytes 100
	
	(4) 启动extract进程
	
	start extract lxusers
	
	(5) 关闭extract进程(if neccessary)
	
	stop extract lxusers
	
	(6) 验证extract状态
	
	info extract lxusers
	
	注意:正常状态下,extract应该是RUNNING,如果出现的是STOPPED或者ABENDED,就说明配置有问题,需要查看下$GGS_HOME下的ggserr.log
	
	info extract lxusers,detail
	
	(7) 验证extract抓取
	
	stats extract lxusers
	
	update demos.test_users
	set username=username||'01';
	
	 stats extract lxusers
	 
3. 配置datapump


(1) 准备参数文件

edit params lpusers

Extract lpusers
----------------------
-- Data Pump extract for demos
-- Author:
-- Created: 2017-07-26
----------------------
passthru
rmthost 192.168.30.119,mgrport 7809
rmttrail dirdat/rp
table demos.test_users;

(2)	创建 Data Pump组

add extract lpusers,exttrailsource dirdat/sp
add rmttrail dirdat/rp,extract lpusers,megabytes 100

(3) 启动Data Pump进程

start extract lpusers

(4) 验证Data Pump状态

info extract lpusers

stats extract lpusers


(5) 到目标机器检查下

/u01/app/oggs/dirdat


4. 数据的初始加载


(1) 

create directory dumpdir as '/home/oracle/dump';

grant read,write on directory dumpdir to system;

(2)

select current_scn from v$database ;

(3)

expdp system/Oracle_123 directory=dumpdir tables=demos.test_users parallel=1 dumpfile=users_%u.dmp flashback_scn=1010038


(4) 拷贝到目标库


(5) 导入

create user demos identified by demos;
grant connect,resource to demos;

impdp system/Oracle_123 directory=dumpdir  parallel=1 dumpfile=users_01.dmp 


5. 配置Replicat


1) 准备参数文件

edit params rusers

REPLICAT rusers
----------------------
-- Replicat for demos
-- Author:
-- Created: 2017-07-26
----------------------
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ggt,PASSWORD ggt
HANDLECOLLISIONS
ASSUMetaRGETDEFS
DISCARDFILE dirrpt/rusers.des,PURGE
MAP demos.*,TARGET demos.*;


(2)	创建Replicat进程

add replicat rusers,exttrail dirdat/rp

(3) 启动Replicat进程

start replicat rusers

(4) 查看Replicat状态

info replicat rusers
stats replicat rusers


6. 测试并验证

	update demos.test_users
	set username=username||'02';
	
	

猜你在找的Oracle相关文章