- 配置Ogg(本地模式)
查看是否是归档模式
SQL> archive log list
(数据库使用的字符集和系统环境变量$NLS_LANG中要一致才无乱码,SQL> select userenv(‘language’) from dual;查看数据库使用的字符集)
关闭数据库
SQL> shutdown immediate
装载数据库
SQL> startup mount
SQL> alter database archivelog;
打开源端数据库最小附加日志
因为这里搭建的只是单向复制,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)
- 添加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)
权限设置最好给775,chmod –R 775 /home/oracle/app,或者创建和数据库服务器相同gid的用户
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.*;
- 配置Ogg(远程ALO模式)
- nfs共享数据库日志目录
LINUX:mount -t nfs 数据库ip:/home/oracle/app /u02/app/oracle(14)
权限设置最好给775,chmod –R 775 /home/oracle/app
Aix:mount -t nfs 数据库ip:/home/oracle/app /u02/app/oracle –o nfsvers=3 —添加nfs版本信息
- 配置源端抽取程序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 –指定进程从最新开始抽取数据
3:ogg ALO模式,需要开启数据库自动归档时间间隔
alter system set archive_lag_target=1800; —间隔时间30分钟