GoldenGate 操作

By | 2025-11-03

**## 第一步:停止Oracle端的GoldenGate进程

# 切换到Oracle用户
su - oracle

# 进入GoldenGate目录
cd /usr/local/ggs_oracle

# 启动GGSCI
./ggsci

在GGSCI中执行:

-- 查看当前状态
INFO ALL

-- 停止投递进程
STOP EXTRACT PORA1

-- 停止管理器
STOP MANAGER

-- 再次确认状态
INFO ALL

-- 退出GGSCI
EXIT

预期输出

Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     STOPPED                                       
EXTRACT     ABENDED     EORA1       00:00:00      12160:55:58 
EXTRACT     STOPPED     PORA1       00:00:00      00:00:00

第二步:停止MySQL端的GoldenGate进程

# 连接到MySQL服务器(如果需要)
# ssh到MySQL服务器,或者如果当前就是MySQL服务器:

# 进入MySQL GoldenGate目录
cd /usr/local/ggs_mysql  # 或者相应的MySQL GG目录

# 启动GGSCI
./ggsci

在GGSCI中执行:

-- 查看当前状态
INFO ALL

-- 停止复制进程(如果运行的话)
STOP REPLICAT RFROM135

-- 停止管理器
STOP MANAGER

-- 确认状态
INFO ALL

-- 退出
EXIT

第三步:清理Oracle端的GoldenGate跟踪文件

# 回到Oracle服务器
cd /usr/local/ggs_oracle

# 检查当前跟踪文件大小
du -sh dirdat/
ls -l dirdat/ | wc -l

# 清理3天前的跟踪文件(保留最近3天)
find dirdat/ -type f -mtime +3 -exec ls -lh {} \; | wc -l  # 先查看要删除的文件数量
find dirdat/ -type f -mtime +3 -delete  # 实际删除

# 或者更激进的清理(保留最近1天)
find dirdat/ -type f -mtime +1 -delete

# 检查清理结果
du -sh dirdat/
ls -l dirdat/ | wc -l

第四步:清理MySQL端的GoldenGate跟踪文件

# 在MySQL服务器上执行
cd /usr/local/ggs_mysql  # 或相应的MySQL GG目录

# 清理跟踪文件
find dirdat/ -type f -mtime +3 -delete
# 或者
find dirdat/ -type f -mtime +1 -delete

第五步:清理Oracle数据库归档日志

# 回到Oracle服务器,使用RMAN清理
rman target /

# 在RMAN中执行清理
RUN {
    CROSSCHECK ARCHIVELOG ALL;
    DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
    DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3';
    DELETE NOPROMPT OBSOLETE;
}

# 退出RMAN
EXIT

第六步:检查空间释放情况

# 检查根分区空间
df -h /

# 检查各目录大小
du -sh /u01/app/oracle/oradata/archivelog/
du -sh /usr/local/ggs_oracle/dirdat/
du -sh /u01/app/oracle/fast_recovery_area/

# 如果有MySQL服务器,也检查
du -sh /usr/local/ggs_mysql/dirdat/

第七步:可选 - 清理其他临时文件

# 清理Oracle诊断文件
find /u01/app/oracle/diag -name "*.trc" -mtime +7 -delete
find /u01/app/oracle/diag -name "*.trm" -mtime +7 -delete

# 清理core dump文件
find /u01 -name "core*" -type f -delete

第八步:验证清理结果

# 最终空间检查
df -h

# 检查关键目录
du -sh /u01/app/oracle/oradata/archivelog/
du -sh /usr/local/ggs_oracle/dirdat/

# 检查是否还有大文件
find /u01 -type f -size +100M -exec ls -lh {} \; 2>/dev/null | head -10

预期清理效果

  • GoldenGate跟踪文件:可能释放几GB到几十GB
  • 归档日志:可能释放几十GB到几百GB
  • 总释放空间:应该能让根分区使用率从100%降到安全水平

注意事项

  1. 执行顺序:严格按照上述步骤执行
  2. 备份确认:确保已有有效备份后再清理
  3. 业务影响:GoldenGate停止期间数据同步会中断
  4. 监控:清理后监控空间使用情况**

运维

OGG进程启动顺序原则

#总原则:先启动目标端,再启动源端;先启动Manager,再启动工作进程。
目标端MANAGER → 目标端REPLICAT → 源端MANAGER → 源端EXTRACT → 源端DATA PUMP

第一步:启动目标端(MySQL端)的OGG

cd /usr/local/ggs_mysql
./ggsci

GGSCI> START MANAGER
GGSCI> INFO MANAGER
# 确认状态为 RUNNING

1.2 启动目标端的Replicat进程

GGSCI> START REPLICAT RFROM135
GGSCI> INFO REPLICAT RFROM135
# 确认状态为 RUNNING

1.3 查看目标端整体状态

GGSCI> INFO ALL
GGSCI (yz-yf-mysql) 11> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     RFROM135    00:00:00      00:00:02

第二步:修复源端(Oracle端)的OGG问题

2.1 登录源端服务器,先查看错误信息

cd /usr/local/ggs_oracle
./ggsci

GGSCI> INFO ALL
GGSCI> VIEW REPORT EORA1
#重点查看EORA1进程的错误报告最后几行,找到ABENDED的原因。

2.2 常见错误及修复方法

第三步:启动源端(Oracle端)的OGG

3.1 启动源端Manager

GGSCI> START MANAGER
GGSCI> INFO MANAGER

3.2 启动初始抽取进程EORA1(修复错误后)

GGSCI> START ERORA1
GGSCI> INFO ERORA1
# 确认状态为 RUNNING

3.3 启动Data Pump进程PORA1

GGSCI> START PORA1
GGSCI> INFO PORA1
# 确认状态为 RUNNING

3.4 查看源端整体状态

GGSCI> INFO ALL

添加新表

1.添加oracle 表

-- 连接到Oracle源库
SQL> CREATE TABLE gg_test_table (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(50),
    create_date DATE DEFAULT SYSDATE,
    amount NUMBER(10,2)
);

-- 插入初始测试数据
SQL> INSERT INTO gg_test_table (id, name, amount) VALUES (1, 'OGG同步测试', 100.50);
SQL> COMMIT;
#开启表的补充日志
ALTER TABLE B2B.GG_TEST_TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

2.mysql中添加表

-- 连接到MySQL目标库
MySQL> CREATE TABLE gg_test_table (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    create_date DATETIME,
    amount DECIMAL(10,2)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.配置OGG提取进程(EORA1)

GGSCI> VIEW PARAMS EORA1
#添加测试表到抽取配置
GGSCI> EDIT PARAMS EORA1
#添加表映射(如果已有TABLE语句,追加在最后):
table b2b.gg_test_table;

4.配置OGG投递进程(如果使用Pump)

GGSCI> EDIT PARAMS PORA1
# 在文件末尾添加:table b2b.gg_test_table;

5.创建DEFGEN参数文件

GGSCI> EDIT PARAMS defgen_b2b_update
#输入内容
DEFSFILE ./dirdef/eora1.def
USERID ggs, PASSWORD ggs
TABLE B2B.ORDER_INFO;
TABLE B2B.ORDER_DETAIL0;
TABLE B2B.PRODUCT_MAIN;
TABLE B2B.USERS;
TABLE B2B.BUYERINFO;
TABLE B2B.SUPPLY;
TABLE B2B.AREAINFO;
TABLE B2B.BI_STORE;
TABLE B2B.RELATION_AREASTORAGE;
TABLE B2B.PRODUCT_BRAND;
TABLE B2B.CRM_COMPANY_INFO;
TABLE B2B.CRM_CONTACTS_INFO;
TABLE B2B.BUYER_TAG_INFO;
TABLE B2B.GG_TEST_TABLE;

6.执行DEFGEN

./defgen paramfile dirprm/defgen_b2b_update.prm
#DEFGEN的工作原理,DEFGEN工具会读取defgen_b2b_update.prm文件中的配置, 连接到数据库获取表结构,使用USERID ggs, PASSWORD ggs连接到Oracle数据库,查询B2B.GG_TEST_TABLE的表结构(列名、数据类型、长度等),获取所有其他指定表的表结构,生成完整的定义文件,DEFGEN会创建一个包含所有指定表结构的新文件,覆盖./dirdef/eora1.def文件,包含15张表的完整结构定义,包括新添加的B2B.GG_TEST_TABLE

7.传输定义文件(RFROM135继续运行)

scp dirdef/eora1.def oracle@192.168.114.136:/usr/local/ggs_mysql/dirdef/
# 2. 检查MySQL端定义文件
ssh oracle@192.168.114.136 "grep -i gg_test_table /usr/local/ggs_mysql/dirdef/eora1.def"

8.目标服务器需要执行的操作(mysql服务器)

#检查RFROM135配置(进程继续运行)
GGSCI> VIEW PARAMS RFROM135 | grep -i gg_test_table
#在RFROM135中添加测试表映射
GGSCI>EDIT PARAMS RFROM135
#在文件末尾添加:
MAP b2b.gg_test_table, TARGET market_yufa.gg_test_table;
#重启RFROM135使配置生效
GGSCI> STOP REPLICAT RFROM135
GGSCI> START REPLICAT RFROM135
#再次检查RFROM135配置
GGSCI> VIEW PARAMS RFROM135 | grep -i gg_test_table

9.检查同步状态

-- 在Oracle源库执行
SQL> INSERT INTO B2B.GG_TEST_TABLE (id, name, amount) VALUES (300, 'PORA1修复测试', 777.00);
SQL> COMMIT;
# Oracle端检查抽取
GGSCI> STATS EXTRACT EORA1, TABLE b2b.gg_test_table

# MySQL端检查复制
GGSCI> STATS REPLICAT RFROM135, TABLE b2b.gg_test_table

# 检查延迟
GGSCI> LAG EXTRACT PORA1
GGSCI> LAG REPLICAT RFROM135
-- 在MySQL目标库查询
MySQL> SELECT * FROM market_yufa.gg_test_table ORDER BY id;

10.oracle 服务器需要重启同步任务

# 1. 重启进程
GGSCI> STOP EXTRACT EORA1
GGSCI> STOP EXTRACT PORA1
GGSCI> START EXTRACT EORA1
GGSCI> START EXTRACT PORA1

# 2. 验证配置
GGSCI> VIEW REPORT EORA1 |grep "gg_test_table"
GGSCI> VIEW REPORT PORA1 |grep "gg_test_table"

# 3. 测试同步
分类: IT 标签: