Oracle安装-Oracle GoldenGate安装配置之Oracle19c for Linux迁移到Oracle26ai for Linux详细过程
1. 硬件环境要求
在安装Oracle GoldenGate之前,必须对服务器的硬件环境进行全面检查,确保满足最低要求。更多学习教程www.fgedu.net.cn
# free -h
total used free shared buff/cache available
Mem: 64G 2.1G 60G 8.5M 1.8G 61G
Swap: 32G 0B 32G
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 8.5M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 50G 15G 36G 30% /
/dev/sdb1 1T 100G 900G 10% /oracle
# 目标端服务器(Oracle 26ai)
# free -h
total used free shared buff/cache available
Mem: 128G 2.1G 124G 8.5M 1.8G 125G
Swap: 64G 0B 64G
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 64G 0 64G 0% /dev
tmpfs 64G 0 64G 0% /dev/shm
tmpfs 64G 8.5M 64G 1% /run
tmpfs 64G 0 64G 0% /sys/fs/cgroup
/dev/sda1 50G 15G 36G 30% /
/dev/sdb1 2T 100G 1.9T 5% /oracle
2. 操作系统准备
Oracle GoldenGate支持RHEL/OEL 7/8/9操作系统。本文以RHEL 8.6为例。学习交流加群风哥微信: itpux-com
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.6 (Ootpa)
# 检查内核版本
# uname -r
4.18.0-372.19.1.el8_6.x86_64
# 检查SELinux状态
# getenforce
Disabled
# 关闭SELinux(如未关闭)
# vi /etc/selinux/config
SELINUX=disabled
# 检查防火墙状态
# systemctl status firewalld
# 关闭防火墙(生产环境建议开放特定端口而非完全关闭)
# systemctl stop firewalld
# systemctl disable firewalld
3. Oracle GoldenGate安装
在源端和目标端服务器上安装Oracle GoldenGate。更多视频教程www.fgedu.net.cn
# groupadd oinstall
# useradd -g oinstall -m goldengate
# passwd goldengate
# 创建GoldenGate安装目录
# mkdir -p /goldengate
# chown -R goldengate:oinstall /goldengate
# chmod -R 775 /goldengate
# 解压GoldenGate安装包
$ cd /goldengate
$ unzip -q /backup/fbo_ggs_Linux_x64_Oracle_26.1.0.0.0.zip
# 安装GoldenGate
$ ./ggsci
GGSCI (source-server) 1> CREATE SUBDIRS
Creating subdirectories under current directory /goldengate
Parameter files /goldengate/dirprm:
Report files /goldengate/dirrpt:
Checkpoint files /goldengate/dirchk:
Process status files /goldengate/dirpcs:
SQL script files /goldengate/dirsql:
Database definitions files /goldengate/dirdef:
Extract files /goldengate/dirext:
Temporary files /goldengate/dirtmp:
Stdout files /goldengate/dirout:
GGSCI (source-server) 2> EXIT
4. 源端配置(Oracle 19c)
配置源端Oracle 19c数据库,开启归档和补充日志。学习交流加群风哥QQ113257174
$ sqlplus / as sysdba
— 检查归档模式
SQL> ARCHIVE LOG LIST
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle/app/oracle/product/19.3.0/db_1/dbs/arch
Oldest online log sequence 1
Next log sequence to archive 2
Current log sequence 2
— 开启强制日志
SQL> ALTER DATABASE FORCE LOGGING;
— 开启补充日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
— 检查补充日志状态
SQL> SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui FROM v$database;
SUPPLEME SUP SUP
——– — —
YES YES YES
— 创建GoldenGate用户
SQL> CREATE USER ggsadmin IDENTIFIED BY Oracle123;
SQL> GRANT CONNECT, RESOURCE, DBA TO ggsadmin;
SQL> GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO ggsadmin;
SQL> GRANT EXECUTE ON dbms_logmnr TO ggsadmin;
SQL> GRANT EXECUTE ON dbms_logmnr_d TO ggsadmin;
SQL> GRANT SELECT ON v_$logmnr_contents TO ggsadmin;
SQL> GRANT SELECT ON v_$log TO ggsadmin;
SQL> GRANT SELECT ON v_$logfile TO ggsadmin;
SQL> GRANT SELECT ON v_$archive_dest_status TO ggsadmin;
$ cd /goldengate
$ ./ggsci
GGSCI (source-server) 1> EDIT PARAMS MGR
— 添加以下内容
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS /goldengate/dirdat/*,USECHECKPOINTS,MAXTIME 7
GGSCI (source-server) 2> START MGR
Manager started.
— 创建源端Extract进程
GGSCI (source-server) 3> ADD EXTRACT ext1, TRANLOG, BEGIN NOW
— 添加Extract trail
GGSCI (source-server) 4> ADD EXTTRAIL /goldengate/dirdat/et, EXTRACT ext1, MEGABYTES 500
— 编辑Extract参数文件
GGSCI (source-server) 5> EDIT PARAMS ext1
— 添加以下内容
EXTRACT ext1
USERID ggsadmin, PASSWORD Oracle123
RMTHOST target-server, MGRPORT 7809
RMTTRAIL /goldengate/dirdat/rt
TABLE scott.*;
5. 目标端配置(Oracle 26ai)
配置目标端Oracle 26ai数据库,创建必要的用户和表空间。
$ sqlplus / as sysdba
— 创建GoldenGate用户
SQL> CREATE USER ggsadmin IDENTIFIED BY Oracle123;
SQL> GRANT CONNECT, RESOURCE, DBA TO ggsadmin;
SQL> GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO ggsadmin;
SQL> GRANT INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO ggsadmin;
SQL> GRANT EXECUTE ON dbms_flashback TO ggsadmin;
— 创建目标表空间(如果需要)
SQL> CREATE TABLESPACE users DATAFILE ‘/oracle/app/oracle/oradata/fgedudb/users01.dbf’ SIZE 100M AUTOEXTEND
ON NEXT 100M;
— 配置目标端GoldenGate Manager
$ cd /goldengate
$ ./ggsci
GGSCI (target-server) 1> EDIT PARAMS MGR
— 添加以下内容
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS /goldengate/dirdat/*,USECHECKPOINTS,MAXTIME 7
GGSCI (target-server) 2> START MGR
Manager started.
— 创建目标端Replicat进程
GGSCI (target-server) 3> ADD REPLICAT rep1, EXTTRAIL /goldengate/dirdat/rt, CHECKPOINTTABLE
ggsadmin.checkpoint
— 编辑Replicat参数文件
GGSCI (target-server) 4> EDIT PARAMS rep1
— 添加以下内容
REPLICAT rep1
USERID ggsadmin, PASSWORD Oracle123
ASSUMETARGETDEFS
MAP scott.*, TARGET scott.*;
6. 数据初始化
使用Oracle Data Pump或GoldenGate Initial Load进行数据初始化。
$ expdp scott/tiger@source-db directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=expdp_scott.log
schemas=scott
— 复制导出文件到目标端
$ scp /oracle/app/oracle/admin/source-db/dpdump/scott.dmp
target-server:/oracle/app/oracle/admin/target-db/dpdump/
— 在目标端创建用户
SQL> CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE users;
SQL> GRANT CONNECT, RESOURCE TO scott;
— 使用Data Pump导入数据
$ impdp scott/tiger@target-db directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=impdp_scott.log
schemas=scott
— 在源端创建Initial Load Extract
GGSCI (source-server) 1> ADD EXTRACT init1, SOURCEISTABLE
— 编辑Initial Load Extract参数文件
GGSCI (source-server) 2> EDIT PARAMS init1
— 添加以下内容
EXTRACT init1
USERID ggsadmin, PASSWORD Oracle123
RMTHOST target-server, MGRPORT 7809
RMTTASK REPLICAT, GROUP initrep
TABLE scott.*;
— 在目标端创建Initial Load Replicat
GGSCI (target-server) 1> ADD REPLICAT initrep, SPECIALRUN
— 编辑Initial Load Replicat参数文件
GGSCI (target-server) 2> EDIT PARAMS initrep
— 添加以下内容
REPLICAT initrep
USERID ggsadmin, PASSWORD Oracle123
ASSUMETARGETDEFS
MAP scott.*, TARGET scott.*;
— 运行Initial Load
GGSCI (source-server) 3> START EXTRACT init1
7. 同步配置
启动源端Extract和目标端Replicat进程,开始数据同步。更多学习教程公众号风哥教程itpux_com
GGSCI (source-server) 1> START EXTRACT ext1
— 启动目标端Replicat进程
GGSCI (target-server) 1> START REPLICAT rep1
— 检查进程状态
GGSCI (source-server) 2> INFO EXTRACT *
EXTRACT EXTRACT RUNNING 2026-04-02 10:00:00 2026-04-02 10:00:00
GGSCI (target-server) 2> INFO REPLICAT *
REPLICAT REPLICAT RUNNING 2026-04-02 10:01:00 2026-04-02 10:01:00
8. 验证和测试
验证数据同步是否正常工作。
SQL> INSERT INTO scott.emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (7935, ‘MILLER’,
‘CLERK’, 7782, SYSDATE, 1300, NULL, 10);
SQL> COMMIT;
— 在目标端检查数据是否同步
SQL> SELECT * FROM scott.emp WHERE empno = 7935;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
———- ———- ——— ———- ——— ———- ———- ———-
7935 MILLER CLERK 7782 02-APR-26 1300 10
— 在源端更新测试数据
SQL> UPDATE scott.emp SET sal = 1500 WHERE empno = 7935;
SQL> COMMIT;
— 在目标端检查数据是否同步
SQL> SELECT sal FROM scott.emp WHERE empno = 7935;
SAL
———-
1500
— 在源端删除测试数据
SQL> DELETE FROM scott.emp WHERE empno = 7935;
SQL> COMMIT;
— 在目标端检查数据是否同步
SQL> SELECT * FROM scott.emp WHERE empno = 7935;
no rows selected
GGSCI (source-server) 1> STATUS EXTRACT ext1
EXTRACT EXT1: RUNNING
GGSCI (target-server) 1> STATUS REPLICAT rep1
REPLICAT REP1: RUNNING
— 检查GoldenGate日志
$ tail -f /goldengate/dirrpt/ext1.rpt
$ tail -f /goldengate/dirrpt/rep1.rpt
9. 生产环境建议
以下是Oracle GoldenGate迁移的生产环境建议。
– 源端和目标端之间网络带宽建议至少10Gbps
– 配置网络QoS,确保GoldenGate流量优先
– 考虑使用专用网络进行数据同步
– GoldenGate trail文件建议存储在高速存储上
– 配置足够的磁盘空间用于trail文件
– 定期清理过期的trail文件
– 配置GoldenGate监控,监控进程状态和性能
– 设置告警机制,及时发现同步问题
– 定期检查GoldenGate日志和报告
– 调整Extract和Replicat进程的并行度
– 优化Oracle数据库参数,提高日志应用速度
– 考虑使用集成模式(Integrated Mode)提高性能
– 配置GoldenGate Manager自动重启功能
– 考虑使用Oracle Data Guard作为备用方案
– 定期备份GoldenGate配置和trail文件
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
