GG12.2 Oracle to Oracle 操作简明命令
发布时间:2020-12-12 14:39:28 所属栏目:百科 来源:网络整理
导读: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
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_C0022222 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'; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |