加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

OGG部署及数据同步迁移手册v2.0

(2016-03-23 15:48:05)
标签:

ogg

ogg-01194

ora-04098

ddl同步复制

ogg不停业务同步

分类: OGG

Oracle Golden Gate配置使用手册 v2.0

环境:Oracle 11.2.0.4
      OGG 11.1.1.0
      Oracle  ->  Oracle 同版本复制
      主库:172.16.57.26
      备库:172.16.57.27


一、准备工作

  1、开启主库归档日志、补充日志及force logging(备库不需要同步到其他库,可以不开启)
  alter database archivelog;
  alter database add supplemental log data;
  alter database force logging;
  alter system set enable_goldengate_replication=true scope=both;

  2、关闭回收站(备库不需要同步到其他库,可以不开启)
  alter system set recyclebin=off scope=spfile;
 
  3、创建OGG管理用户(主备库都要设置)
  create user ogg identified by ogg account unlock;
  grant connect,resource to ogg;
  grant select any dictionary to ogg;
  grant select any table to ogg;
  grant execute on utl_file to ogg;
   grant restricted session to ogg;
  GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;  (必须有的操作,后续会介绍)
   grant dba to ogg;(可选)
 
 
 
二、安装OGG(主备库都需要安装)

  1、创建OGG目录,并解压软件
  mkdir /opt/app/OGG
  chown oracle:oinstall /opt/app/OGG
  chmod 775 /opt/app/OGG
  unzip OGG11_Oracle11g_x86_64_Linux.zip
  tar -xvf ggs_Linux_x64_ora11g_64bit_v11_1_1_0_0_078.tar
 
  2、设置环境变量
  su - oracle
  vi ~/.bash_profile
  ##添加OGG_HOME,PATH,LD_LIBRARY中的变量信息
  export OGG_HOME=/opt/app/OGG
  export PATH=$ORACLE_HOME/bin:/usr/sbin:$ORACLE_HOME/OPatch:/opt/app/OGG:$PATH
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/opt/app/OGG
 
  3、安装OGG软件
  ~/.bash_profile 使变量生效
  cd /opt/app/OGG
  ggsci
  GGSCI> create subdirs
 
 
三、数据初始化(Oracle initial load)

注意:同步过程中需要停止应用服务!!! 

initial load方式很慢,推荐其他同步方式请参考:五、其他同步方式

  1、使用expdp/impdp将主库的表结构同步到备库
  主库:
  expdp \'/ as sysdba\' directory=DATA_PUMP_DIR schemas=ICE1,ICE2 dumpfile=ICE1_METADATA.dmp logfile=ICE1_METADATA.log content=metadata_only
  备库:
  impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=ICE1_METADATA.dmp logfile=impdp_ICE1_metadata.log
 
  禁用备库的触发器(迁移完成后,需要将触发器打开!):
  SQL> select owner,trigger_name from all_triggers where owner in ('ICE1','ICE2');

  OWNER           TRIGGER_NAME
  --------------- ------------------------------------------------------------------------------------------
  ICE1            SHIELDLIST_TRIGGER
  ICE1            TRG_APP_FACT_ADVCALLBACK_SYST
  ICE1            TRG_APP_STG_FIRSTVISIT_SYST
  ICE1            TRG_APP_FACT_ADVERTISERS_SYST
  ICE2        EID_ID
 
  alter trigger ICE1.SHIELDLIST_TRIGGER disable;
  alter trigger ICE1.TRG_APP_FACT_ADVCALLBACK_SYST disable;
  alter trigger ICE1.TRG_APP_STG_FIRSTVISIT_SYST disable;
  alter trigger ICE1.TRG_APP_FACT_ADVERTISERS_SYST disable;
  alter trigger ICE2.EID_ID disable;
 
 
 
  2、主库基本配置:
  A:配置并启动mgr进程
  cd /opt/app/OGG
  ggsci
  GGSCI> edit params mgr
  port 1357
 
  GGSCI> start mgr
  Manager started.
 
  GGSCI> info mgr
  Manager is running (IP port SFV490-1.1357).

  B:配置数据同步用户
  GGSCI> dblogin userid ogg,password ogg
  GGSCI> add trandata ICE1.*
  GGSCI> add trandata ICE2.*
 
  3、备库基本配置
  A:配置并启动mgr进程
  cd /opt/app/OGG
  ggsci
  GGSCI> edit params mgr
  port 1358
 
  GGSCI> start mgr
  Manager started.
 
  GGSCI> info mgr
  Manager is running (IP port SFV490-1.1357).
 
  4、主库初始化配置
  A:配置extract进程
  GGSCI> add extract e_ICE1 , sourceistable
  GGSCI> info extract *,tasks   

  EXTRACT    E_ICE1    Last Started 2016-03-23 10:24   Status STOPPED
  Checkpoint Lag       Not Available
  Log Read Checkpoint  Table ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK
                     2016-03-23 11:55:40  Record 13569826
  Task                 SOURCEISTABLE
 
  B:编辑extract进程参数
  GGSCI (n1) 59> edit params e_ICE1

  extract e_ICE1
  userid ogg,password ogg
  rmthost 172.16.57.27,mgrport 1358  
  rmttask replicat,group r_ICE1     
  table ICE1.*;
  table ICE2.*;

  5、备库初始化配置
  A:配置replicat进程
  GGSCI> add replicat r_ICE1 , specialrun
  GGSCI> info replicat *, TASKS
 
  B:编辑replicat进程参数
  GGSCI> edit params r_ICE1

  replicat r_ICE1
  assumetargetdefs
  userid ogg,password ogg
  discardfile ./dirrpt/r_ICE1.dsc,purge
  map ICE1.*, target ICE1.*;
  map ICE2.*, target ICE2.*; 
 
  6、启动初始化进程
  主库:
  GGSCI>start e_ICE1
  GGSCI> view report e_ICE1 
  备库:
  GGSCI>start r_ICE1
  GGSCI> view report r_ICE1 
 
 
四、数据同步

  1、配置DDL同步
 
  A:备库 配置globals参数
  GGSCI>view param ./GLOBALS
  ggschema ogg
 
 
  B:主库 执行DDL配置脚本
  sqlplus / as sysdba
  SQL> @/opt/app/OGG/marker_setup.sql  
       输入OGG管理用户名:ogg
      
  SQL> @/opt/app/OGG/ddl_setup.sql  
       输入OGG管理用户名:ogg
  注意1:此处可能会报错:ORA-04098: trigger 'SYS.GGS_DDL_TRIGGER_BEFORE' is invalid and failed,同时OGG中的很多表和视图无法创建,原因主要由于OGG缺少权限引起,即便有
  DBA权限也是不足的(OGG BUG),可以通过如下方法修复:
  1)先将触发器关闭,否则执行任何sql都会包ORA-04098的错误
  @/opt/app/OGG/ddl_disable.sql
  2)赋予ogg对应权限
  grant execute on utl_file to ogg;
  grant restricted session to ogg;
  GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;
  3)重新执行ddl_setup.sql
 
  注意2:当主库上有很多应用连接时,执行该sql会出现如下报警:
  IMPORTANT: Oracle sessions that used or may use DDL must be disconnected. If you
  continue, some of these sessions may cause DDL to fail with ORA-6508.
  To proceed, enter yes. To stop installation, enter no.
  Enter yes or no:
  为了不影响主库,选no,选择一个时间点,停止应用再创建ddl。
  如果不创建ddl,需要在主备库的ogg进程参数中添加truncate选项:
  gettruncates,参考后面同步进程配置。
 
 
  SQL> @/opt/app/OGG/role_setup.sql 
       输入OGG管理用户名:ogg
      
  SQL> GRANT GGS_GGSUSER_ROLE TO OGG;    
      
  SQL> @/opt/app/OGG/ddl_enable.sql  
 
 
  2、配置数据同步
 
  A:主库 配置日志抓取进程
 
  GGSCI> add extract m_ICE1, tranlog, begin now, threads 1
  GGSCI> add rmttrail /opt/app/OGG/dirdat/ft,extract m_ICE1
  GGSCI> edit params m_ICE1
 
  extract m_ICE1
  userid ogg,password ogg
  rmthost 172.16.57.27, mgrport 1358
  rmttrail /opt/app/OGG/dirdat/tf
  discardfile /opt/app/OGG/dirrpt/trail.dsc,append,megabytes 100
  ddl include mapped                                               
  table ICE1.*;
  table ICE2.*;

  注意:如果不支持ddl,那么添加 gettruncates
 
  B:备库 配置日志解析进程
  1)编辑globals参数
  GGSCI> edit params ./GLOBALS
 
  ggschema ogg
  checkpointtable ogg.chkpnt_ICE1
 
  2)创建checkpoint表
  GGSCI> dblogin userid ogg,password ogg
  GGSCI> add checkpointtable ogg.chkpnt_ICE1
 
  3)配置解析进程
  GGSCI> add replicat s_ICE1,exttrail /opt/app/OGG/dirdat/tf,checkpointtable ogg.chkpnt_ICE1
  GGSCI> info replicat *, TASKS
  GGSCI> edit params s_ICE1
 
  replicat s_ICE1
  userid ogg,password ogg
  discardfile /opt/app/OGG/dirrpt/s_ICE1.dsc,append,megabytes 100
  assumetargetdefs
  ddl include all
  ddlerror default ignore retryop
  map ICE1.*, target ICE1.*;
  map ICE2.*, target ICE2.*;
  注意:如果不支持ddl,那么添加 gettruncates
 
 
  C:启动同步进程
  主库:GGSCI> start m_ICE1
  备库:GGSCI> start s_ICE1
 
  D:数据验证测试(略)
 
  主库:
  SQL> set linesize 300 pagesize 300
  SQL> col owner for a15
  SQL> col segment_name for a40

  SQL> select owner,segment_name,bytes from dba_segments where owner in ('ICE1','ICE2') and segment_type='TABLE' and segment_name not like 'BIN$%' order by bytes;


  6 rows selected.


  备库:
  set linesize 300 pagesize 300
  col owner for a15
  col segment_name for a40
  select owner,segment_name,bytes from dba_segments where owner in ('ICE1','ICE2') and segment_type='TABLE' and segment_name not like 'BIN$%' order by bytes;


  6 rows selected.


五、其他同步方式

A:通过Oracle Data Pump方式

1)配置并启动主库extract进程,参考:四、数据同步
主库:start extract m_ICE1
alter system switch logfile;
alter system checkpoint;


2)查看并记住主库scn
SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                31284766
               
2)在主库执行expdp备份
# 表结构如果没建立好,可以将content=data_only去掉
expdp \'/ as sysdba\' directory=DATA_PUMP_DIR schemas=ICE1,ICE2 dumpfile=ICE1_dataonly.dmp logfile=expdp_ICE1_dataonly.log content=data_only flashback_scn=31284766

3)在备库执行impdp导入
impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=ICE1_dataonly.dmp logfile=ICE1_dataonly.log

并关闭job、触发器
alter trigger ICE1.SHIELDLIST_TRIGGER disable;
alter trigger ICE1.TRG_APP_FACT_ADVCALLBACK_SYST disable;
alter trigger ICE1.TRG_APP_STG_FIRSTVISIT_SYST disable;
alter trigger ICE1.TRG_APP_FACT_ADVERTISERS_SYST disable;
alter trigger ICE2.EID_ID disable;

4)配置备库replicat进程,参考:四、数据同步
5)启动备库replicat进程
备库:start replicat s_ICE102,aftercsn 31284766


B:通过rman方式

1)配置并启动主库extract进程,参考:四、数据同步
主库:start extract m_ICE1
alter system switch logfile;
alter system checkpoint;


2)查看并记住主库scn
SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                31284766

3)backup database , controlfile and archivelog

4) restore database

5) recover database UNTIL SCN 31284766;
   SELECT CHECKPOINT_CHANGE#,CHECKPOINT_TIME FROM V$DATAFILE_HEADER;
  
6) alter database open resetlogs;

7) 配置备库replicat进程,参考:四、数据同步

8)启动备库replicat进程
   备库:start replicat s_ICE102,aftercsn 31284766

参考:http://www.askmaclean.com/archives/ogg-goldengate-initial-load-method.html  
  
C:各同步方式优缺点

RMAN

优点:不需要停止业务,当主库数据量比较大时,推荐使用该方式。

缺点:不支持跨版本、跨平台

 
EXPDP/IMPDP
 
优点:不需要停业务,主备库版本不一致时推荐使用该方式。

缺点:支持10G以后的数据库使用。


EXP/IMP
 
优点:不需要停业务、低版本数据库可以使用此工具。

缺点:速度比数据泵要慢,数据量较大时,需要较长时间


GoldenGate Initial Load
 
优点:跨版本、跨平台。

缺点:速度比较慢,特殊情况下需要停机操作。

如果是跨数据库平台,如SQLSERVER到ORACLE,可以选用OGG自带的迁移功能GoldenGate Initial Load。
 


六、故障处理:

A:同步进程中断:(主备库数据不一致导致repicat中断)
Opened trail file /u01/app/OGG/dirdat/tf000324 at 2016-03-28 16:03:14

Wildcard MAP resolved (entry ICE2.*):
  map ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK, target ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK;

2016-03-28 16:03:14  WARNING OGG-00869  No unique key is defined for table CRM_AGG_USERBEHAVIOR_CALC1_BK. All viable columns will be used to represent the key, but may not guarant
ee uniqueness.  KEYCOLS may be used to define the key.
Using following columns in default map by name:
  EUTIME, EID, USERID, ISPREMIUM, ISPREMIUMGS, ISPREMIUMJC,
  ISPREMIUMTZDS, ISFUNDTRADE, FIRSTPROVINCE, FIRSTCITY, LASTPROVINCE,
  LASTCITY, DFCFFIRSTDATE, DFCFLASTDATE, TTJJFIRSTDATE, TTJJLASTDATE,
  DFCFNUMALL, DFCFNUM180, TTJJNUMALL, TTJJNUM180, LASTUPDDT, ISL2,
  GUBANUMKT, GUBANUMFT, GUBANUMPL

Using the following key columns for target table ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK: EUTIME, EID, USERID, ISPREMIUM, ISPREMIUMGS, ISPREMIUMJC, ISPREMIUMTZDS, ISFUNDTRADE, FIRS
TPROVINCE, FIRSTCITY, LASTPROVINCE, LASTCITY, DFCFFIRSTDATE, DFCFLASTDATE, TTJJFIRSTDATE, TTJJLASTDATE, DFCFNUMALL, DFCFNUM180, TTJJNUMALL, TTJJNUM180, LASTUPDDT, ISL2, GUBANUMKT,
 GUBANUMFT, GUBANUMPL.


2016-03-28 16:03:15  WARNING OGG-01004  Aborted grouped transaction on 'ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK', Database error 100 (retrieving bind info for query).

2016-03-28 16:03:15  WARNING OGG-01003  Repositioning to rba 8344518 in seqno 324.

2016-03-28 16:03:17  WARNING OGG-01154  SQL error 1403 mapping ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK to ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK.

2016-03-28 16:03:17  WARNING OGG-01003  Repositioning to rba 8344518 in seqno 324.

Source Context :
  SourceModule            : [er.main]
  SourceID                : [/home/ecloud/workspace/Build_FBO_OpenSys_r11.1.1.0.0_078_[34086]/perforce/src/app/er/rep.c]
  SourceFunction          : [take_rep_err_action]
  SourceLine              : [15780]
  ThreadBacktrace         : [8] elements
                          : [/u01/app/OGG/replicat(CMessageContext::AddThreadContext()+0x26) [0x5da0b6]]
                          : [/u01/app/OGG/replicat(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...)+0x7b2) [0x5d0b52]]
                          : [/u01/app/OGG/replicat(_MSG_ERR_MAP_TO_TANDEM_FAILED(CSourceContext*, DBString<777> const&, DBString<777> const&, CMessageFactory::MessageDisposition)+
0x9b) [0x57c91b]]
                          : [/u01/app/OGG/replicat() [0x7f36e3]]
                          : [/u01/app/OGG/replicat() [0x8c0c21]]
                          : [/u01/app/OGG/replicat(main+0x1d30) [0x4f5360]]
                          : [/lib64/libc.so.6(__libc_start_main+0xfd) [0x3b42a1ed5d]]
                          : [/u01/app/OGG/replicat(__gxx_personality_v0+0x1da) [0x4d8e8a]]

2016-03-28 16:03:17  ERROR   OGG-01296  Error mapping from ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK to ICE2.CRM_AGG_USERBEHAVIOR_CALC1_BK.

B:查看进程信息
 info ex1 showch

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有