oracle OGG 三种模式总结

    1. 配置Ogg(本地模式)

(过程可能涉及数据库重启)

查看是否是归档模式

SQL> archive log list

(数据库使用的字符集和系统环境变量$NLS_LANG中要一致才无乱码,SQL> select userenv('language') from dual;查看数据库使用的字符集)

关闭数据库

SQL> shutdown immediate

装载数据库

SQL> startup mount

SQL> alter database archivelog;

SQL> alter database open;

打开源端数据库最小附加日志

因为这里搭建的只是单向复制,OGG捕捉的是源端数据库的更改,所以只需对源端数据库开启最小附加日志

 

SQL> select supplemental_log_data_min from v$database;

 

SQL> alter database add supplemental log data;

 

SQL> alter system switch logfile;   ##切换日志使附加日志生效

 

在数据库中建立OGG用户并赋予相应的权限,为了简化授权,直接将dba角色赋予给ogg_owner用户:

SQL> create user ogg_owner identified by ogg_owner;

SQL> grant dba to ogg_owner;

SQL> grant connect,resource to ogg_owner;

SQL> conn ogg_owner/ogg_owner

SQL> create table test (id name number);

在ogg指定安装目录下执行ggsci,创建GoldenGate子目录

GGSCI> create subdirs

配置manager配置文件mgr:

GGSCI> edit param mgr

port 7809  ##制定GoldenGate的mgr进程使用哪个 TCP/IP端口侦听请求.

dynamicportlist 7840-7845  ##指定GoldenGate可以使用那些端口接受extract进程发送过来的数据

autostart extract * ##指定在mgr启动时自动启动那些进程.

autorestart extract *, retries 24, waitminutes 30, resetminutes 1440

##指定在mgr可以定时重启那些进程。可以在网络中断等故障恢复后自动重起,避免人工干预.

purgeoldextracts /home/dongshuai/ogg12_3/ggs12_3/dirdat/tt/*, usecheckpoints, minkeepdays 3 ##定义自动删除过时的队列以节省硬盘空间。

purgeddlhistory minkeepdays 7, maxkeepdays 10

purgemarkerhistory minkeepdays 7, maxkeepdays 10

lagreporthours 1 ##指定在ggserr.log中报告延迟的时间间隔.

laginfominutes 30 ##指定一个延迟时限,如果延迟达到此时间值则会在ggserr.log里面写入一条info信息

lagcriticalminutes 45 ##指定认为超过此时间即为严重错误的延迟最大值,如果延迟达到此 时间值则会在ggserr.log里面写入一条error信息

ACCESSRULE, PROG SERVER, ALLOW

 

ggsci命令下不支持注释,把##及以后的内容删掉

环境下用netstat -tln 查看mgr extsa extdp需要使用的端口是否被占用,若被占用,在配置文件里更改

GGSCI> start mgr

GGSCI> info all

 

在ggsci命令行中登录数据库,为所有需要复制的表添加trandata

GGSCI> dblogin userid ogg_owner@cecd password ogg_owner

GGSCI> add trandata ogg_owner.*

在源端上添加Extract进程extsa(进程名可自定义)

GGSCI> add extract extsa,tranlog,begin now

配置抽取进程文件

GGSCI> edit params extsa

EXTRACT extsa  ##定义抽取进程名称

setenv (ORACLE_SID=CECD)  ##针对extract进程设定系统环境变量

userid ogg_owner@CECD,password ogg_owner  ##登录数据库

GETTRUNCATES  ##获取trunc操作

REPORTCOUNT EVERY 1 MINUTES, RATE  ##报告已经处理的纪录条数统计数字

numfiles 1000  ##定义本extract为最大多少张表预留空间,缺省为500,超过500张表需要设 定一个比实际表数略大的值。

DISCARDFILE /home/ogg12_3/ggs12_3/dirrpt/DXP_ext1.dsc,APPEND,MEGABYTES 1000  ##定义discard文件位置,如果处理中有纪录出错会写入到此文件中。

DISCARDROLLOVER AT 3:00

EXTTRAIL /home/ogg12_3/ggs12_3/dirdat/tt  ##指定写入到本地的哪个队列

:table ogg_owner.*;

##tableexclude ogg_owner.test ##排除不需要复制的表

 

 

注册本地抽取进程路径:

ggsci>add exttrail /home/ogg12_3/ggs12_3/dirdat/tt,ext extsa,megabytes 50

(tt目录需要手动创建,授权777)

      1. 添加pump进程push

GGSCI>add extract push,exttrailsource  /home/ogg12_3/ggs12_3/dirdat/tt,begin now

(此时exttrailsource指定的是本地队列的路径)

编辑push配置文件

GGSCI> edit param push

EXTRACT push

passthru

userid ogg_owner@cecd,password ogg_owner

rmthost ip,mgrport 7811

rmttrail /soft/ogg_big/dirdat/tt

table ogg_owner.test;

rmthost:目标主机IP地址 mgrport :目标主机mgr使用端口

 

注册本地推送路径:

GGSCI> add exttrail /home/ogg12_3/ggs12_3/dirdat/tt, extract push

添加目标端推送路径:

GGSCI> add rmttrail /soft/ogg_big/dirdat/tt, extract push,megabytes 20

rmttrail为目标队列的位置,为该Pump进程配置远程队列

GGSCI> start extsa

GGSCI> start push

GGSCI> info all

GGSCI> view report extsa

Info all:查看运行进程

Stats extsa:查看进程运行状态

View report extsa:查看进程日志

 

 

配置Ogg(远程集成模式)

 

nfs共享数据库日志目录

    mount -t nfs 数据库ip:/home/oracle/app /u02/app/oracle(远端ip)

权限设置最好给775chmod –R 775 /home/oracle/app,或者创建和数据库服务器相同gid的用户

配置源端抽取程序EXTMYSQL

add extract EXTMYSQL,tranlog,begin now  ---添加抽取组,现在就抽取,抽取主程序为EXTMYSQL

ADD EXTTRAIL ./dirdat/tt, EXTRACT EXTMYSQL --指定主抽取进程,文件落地目录和文件名称,目录是./dirdat/,文件是以tt0000开头

----默认归档路径模式

EXTRACT EXTMYSQL

EXTTRAIL ./dirdat/tt

userid ogg_owner@cecd, password ogg_owner

WILDCARDRESOLVE DYNAMIC

DYNAMICRESOLUTION

TRANLOGOPTIONS LOGSOURCE LINUX, PATHMAP /home/oracle/app/oradata/cecd /u02/app/oracle/oradata/cecd, PATHMAP /home/oracle/app/flash_recovery_area/CECD/archivelog /u02/app/oracle/flash_recovery_area/CECD/archivelog –目录地址映射,映射实例用户地址和归档日志地址

table ogg_owner.*;

 

-----重置归档日志路径模式

EXTRACT EXTMYSQL

EXTTRAIL ./dirdat/tt

userid ogg_owner@cecd, password ogg_owner

WILDCARDRESOLVE DYNAMIC

DYNAMICRESOLUTION

TRANLOGOPTIONS LOGSOURCE LINUX, PATHMAP /home/oracle/app/oradata/cecd /u02/app/oracle/oradata/cecd   映射实例地址

TRANLOGOPTIONS ALTARCHIVELOGDEST /u02/app/oracle/arch  ---指定归档日志路径,ogg源端路径

table ogg_owner.*;

 

  1. 配置Ogg(远程ALO模式)
    1. nfs共享数据库日志目录

    LINUX:mount -t nfs 数据库ip:/home/oracle/app /u02/app/oracle(14)

权限设置最好给775chmod –R 775 /home/oracle/app

   Aixmount -t nfs 数据库ip:/home/oracle/app /u02/app/oracle –o nfsvers=3 ---添加nfs版本信息

 

      1. 配置源端抽取程序EXTMYSQL

add extract EXTDB,tranlog,begin now,THREADS 2  ---添加抽取组,现在就抽取,抽取主程序为EXTDB rac模式下,数据库线程为2,数据库实例个数也是2,一一对应

 

 

EXTRACT EXTDB
SETENV (NLS_LANG= "AMERICAN_AMERICA.ZHS16GBK")
USERID goldengate@oggsource, PASSWORD goldengate
EXTTRAIL /u01/app/ogg/dirdat/lp
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
TRANLOGOPTIONS ARCHIVEDLOGONLY ##指明抽取进程为只读归档模式
TRANLOGOPTIONS ALTARCHIVELOGDEST PRIMARY /mnt/nfs/oraarch  #归档模式地址
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf
#归档日志格式
FETCHOPTIONS, NOUSESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT
STATOPTIONS REPORTFETCH

TABLE zdcs.*

 

 

 

遇到的问题:

1:抽取进程报无法找到某个归档日志文件

查询数据库当前使用的归档日志

  SELECT  *    FROM v$archived_log   WHERE archived = 'YES' AND    deleted = 'NO' AND         name not like '+%'         AND standby_dest= 'NO'

 

alter extract 抽取进程名,extseqno 数据块编号 extrba 0   ---跳过缺少的归档日志块

2:清理当前归档日志块后报错

 

sqlplus / as sysdba

alter system archive log current;--当前日志归档

 

select dbms_flashback.get_system_change_number from dual; --查询数据库目前正在使用的csn编号

 

start 抽取进程名,aftercsn 1530970 –指定进程从最新开始抽取数据

 

3ogg ALO模式,需要开启数据库自动归档时间间隔

 

alter system set archive_lag_target=1800;  ---间隔时间30分钟

 

你可能感兴趣的:(oracle OGG 三种模式总结)