OGG 数据迁移11G至19C RAC

来源:这里教程网 时间:2026-03-03 23:27:33 作者:

1.环境源库: 192.168.18.51 ORACLE11.2.0.4 LINUX7.4 目标库: 192.168.18.61/62 ORACLE19.29 LINUX8.1 2.源端安装OGG安装OGG19.1.0.0.4  3.源端11G创建OGG空间和用户

(1).修改数据库配置
SQL> select supplemental_log_data_min from v$database;
SQL> alter database add supplemental log data;
SQL> select FORCE_LOGGING from v$database;
SQL> alter database force logging;
SQL> alter system switch logfile;
SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;
     ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*';
(2).创建ogg工作空间
-- 创建表空间
create tablespace ogg_tbs datafile size 200m autoextend off;
(3).创建 OGG 用户并授权
create user goldengate identified by goldengate default tablespace ogg_tbs quota unlimited on ogg_tbs;
-- 基础权限
grant connect,resource to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
-- 高级权限
grant execute any type to goldengate;
grant select any transaction to goldengate;
grant create any table,create any sequence to goldengate;
grant insert any table to goldengate;
grant update any table to goldengate;
grant delete any table to goldengate;
grant create any index to goldengate;
grant unlimited tablespace to goldengate;
grant execute on dbms_flashback to goldengate;
grant comment any table to goldengate;
grant dba to goldengate;
-- 以下是被注释掉的命令(未执行):
# exec dbms_goldengate_auth.grant_admin_privilege('goldengate') ;
# alter system set streams_pool_size='500M' scope=both;

4.源端创建表空间并导入测试数据

# 1. 创建目录对象(用sysdba执行)
sqlplus / as sysdba
create or replace directory MY_DUMP as '/home/oracle';
grant read,write on directory MY_DUMP to public;
# 2. 执行导入
CREATE TABLESPACE ITPUX01 DATAFILE SIZE 100M AUTOEXTEND ON NEXT 100M;
CREATE TABLESPACE ITPUX02 DATAFILE SIZE 100M AUTOEXTEND ON NEXT 100M;
CREATE TABLESPACE ITPUX03 DATAFILE SIZE 100M AUTOEXTEND ON NEXT 100M;
impdp system/oracle directory=MY_DUMP dumpfile=expdp_itpux_utf8.dmp logfile=imp.log

5.目标端安装OGG

安装OGG19.1.0.0.4 (如果长期使用需要安装在共享存储ACFS)

6.目标端 创建OGG空间和用户

#对于目标端,表空间只需要建在接收数据的 PDB 中,不需要在 CDB$ROOT 建
alter session set container=ITPUXPDB;
(1).修改数据库配置
SQL> select supplemental_log_data_min from v$database;
SQL> alter database add supplemental log data;
SQL> select FORCE_LOGGING from v$database;
SQL> alter database force logging;
SQL> alter system switch logfile;
SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*';
(2).创建ogg工作空间
-- 创建表空间
create tablespace ogg_tbs datafile '+DGDATA01' size 200m autoextend off;
(3).创建 OGG 用户并授权
create user goldengate identified by goldengate default tablespace ogg_tbs quota unlimited on ogg_tbs;
-- 基础权限
grant connect,resource to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
-- 高级权限
grant execute any type to goldengate;
grant select any transaction to goldengate;
grant create any table,create any sequence to goldengate;
grant insert any table to goldengate;
grant update any table to goldengate;
grant delete any table to goldengate;
grant create any index to goldengate;
grant unlimited tablespace to goldengate;
grant execute on dbms_flashback to goldengate;
grant comment any table to goldengate;
grant dba to goldengate;
-- 以下是被注释掉的命令(未执行):
# exec dbms_goldengate_auth.grant_admin_privilege('goldengate') ;
# alter system set streams_pool_size='500M' scope=both;

7.密码过期问题

alter profile default limit password_life_time unlimited;

8.配置源端管理进程

edit params mgr
PORT 7809
DYNAMICPORTLIST 7810-7899
PURGEOLDEXTRACTS ./dirdat/*, usecheckpoints, minkeepdays 3
PURGEOLDEXTRACTS ./dirdat/EFG02/*, usecheckpoints, minkeepdays 3
PURGEOLDEXTRACTS ./dirdat/PFG02/*, usecheckpoints, minkeepdays 3
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
ACCESSRULE, PROG SERVER, IPADDR *, PRI 1, ALLOW
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
AUTOSTART ER *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
start mgr
参数 说明
PORT 7809 Manager 进程监听端口
DYNAMICPORTLIST 7810-7899 动态端口范围,用于数据传输
PURGEOLDEXTRACTS 清理旧的 trail 文件(保留3天)
PURGEDDLHISTORY 清理 DDL 历史记录
PURGEMARKERHISTORY 清理标记历史记录
ACCESSRULE 访问规则(允许所有 IP)
LAGREPORTHOURS 1 每小时报告延迟
LAGINFOMINUTES 30 30分钟报告信息级延迟
LAGCRITICALMINUTES 45 45分钟报告严重级延迟
**AUTOSTART ER *** 自动启动所有 Extract 和 Replicat
AUTORESTART 进程异常退出后自动重启(最多5次,间隔3分钟)

9.源端安装DDL

#goldengate设置为管理用户
ggsci
GGSCI>EDIT PARAMS ./GLOBALS
GGSCHEMA goldengate  
#权限
grant execute on UTL_FILE to goldengate;
-- 授予基本权限
grant restricted session to goldengate;
-- 授予创建表和序列的权限
grant create table, create sequence to goldengate;
-- 设置标记表(marker table)
@marker_setup.sql goldengate
-- 安装DDL复制环境
@ddl_setup.sql
-- 设置DDL角色
@role_setup.sql
-- 授予GGS角色给goldengate用户
GRANT GGS_GGSUSER_ROLE TO goldengate;
-- 启用DDL复制
@ddl_enable.sql
-- 执行dbmspool脚本(管理共享池)
@$ORACLE_HOME/rdbms/admin/dbmspool.sql
-- 固定DDL对象到内存
@ddl_pin.sql goldengate
#设置检查点表
EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE goldengate.checkpoint #重新计入ggsci使参数生效
dblogin userid goldengate, password goldengate    -- 以goldengate用户登录数据库
add checkpointtable goldengate.checkpoint          -- 创建检查点表
#添加并查看心跳表
ADD HEARTBEATTABLE
INFO HEARTBEATTABLE

10.配置目标端管理进程

PORT 7809
DYNAMICPORTLIST 7810-7899
PURGEOLDEXTRACTS ./dirdat/*, usecheckpoints, minkeepdays 3
PURGEOLDEXTRACTS ./dirdat/RFG02/*, usecheckpoints, minkeepdays 3
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
accessrule, prog server, ipaddr *, pri 1, allow
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3

11.目标端安装DDL(如果只作为目标端不需要安装DDL)

#goldengate设置为管理用户
ggsci
GGSCI>EDIT PARAMS ./GLOBALS
GGSCHEMA goldengate  
#安装DDL  由于不支持多租户模式不进行DDL的安装
cd /ogg
sqlplus "/as sysdba"
alter session set container=ITPUXPDB;
grant execute on UTL_FILE to goldengate;
grant restricted session to goldengate;
grant create table, create sequence to goldengate;
@marker_setup.sql goldengate
@ddl_setup.sql
@role_setup.sql
GRANT GGS_GGSUSER_ROLE TO goldengate;
@ddl_enable.sql
@$ORACLE_HOME/rdbms/admin/dbmspool.sql
@ddl_pin.sql goldengate
#设置检查点表
EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE goldengate.checkpoint #重新计入ggsci使参数生效
dblogin userid goldengate@ITPUXPDB, password goldengate    -- 以goldengate用户登录数据库
add checkpointtable goldengate.checkpoint          -- 创建检查点表
#添加并查看心跳表
ADD HEARTBEATTABLE
INFO HEARTBEATTABLE

12.源端抽取进程配置

SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
--------------------------------------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
cd /ogg
mkdir -p ./dirdat/EFG02
mkdir -p ./dirrpt/EFG02
ggsci
edit params EFG02
EXTRACT EFG02
SETENV (ORACLE_HOME ="/oracle/app/oracle/product/19c/db_1")
SETENV (ORACLE_SID = "itpuxdb")
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID goldengate, PASSWORD goldengate
DBOPTIONS ALLOWUNUSEDCOLUMN
FETCHOPTIONS NOUSESNAPSHOT
WARNLONGTRANS 2h, CHECKINTERVAL 5m
DISCARDFILE ./dirrpt/EFG02/EFG02.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 02:30
REPORTCOUNT EVERY 1 MINUTES, RATE
EXTTRAIL ./dirdat/EFG02/ex
DDL INCLUDE MAPPED
DDLOPTIONS ADDTRANDATA, REPORT
TABLE itpux01.*;
TABLE itpux02.*;
TABLE itpux03.*;
add extract EFG02,tranlog,begin now
add exttrail ./dirdat/EFG02/ex,extract EFG02,MEGABYTES 1024

13. 源端数据泵进程配置

cd /ogg
mkdir -p ./dirdat/PFG02
mkdir -p ./dirrpt/PFG02
ggsci
edit params PFG02
EXTRACT PFG02
SETENV (ORACLE_HOME ="/oracle/app/oracle/product/19c/db_1")
SETENV (ORACLE_SID = "itpuxdb")
SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
USERID goldengate, PASSWORD goldengate
PASSTHRU
RMTHOST 192.168.18.61, MGRPORT 7809
RMTTRAIL ./dirdat/RFG02/re
DISCARDFILE ./dirrpt/PFG02/PFG02.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 02:30
TABLE itpux01.*;
TABLE itpux02.*;
TABLE itpux03.*;
-- 先退出参数编辑,回到GGSCI命令行
-- 添加数据泵进程(注意拼写:exttrailsource)
add extract PFG02, exttrailsource ./dirdat/EFG02/ex
-- 添加远程trail文件
add rmttrail ./dirdat/RFG02/re, extract PFG02, megabytes 1024
-- 验证添加结果
info extract PFG02
info rmttrail ./dirdat/RFG02/re

14.目标端应用进程配置

cd /ogg
mkdir -p ./dirdat/RFG02
mkdir -p ./dirrpt/RFG02
edit params RFG02
REPLICAT RFG02
-- 环境变量
setenv (ORACLE_HOME ="/oracle/app/oracle/product/19c/db_1")
setenv (ORACLE_SID = "itpuxdb")
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
-- 数据库连接(使用加密密码,并指定PDB)
userid goldengate@ITPUXPDB, password goldengate
-- 丢弃文件管理
DISCARDFILE ./dirrpt/RFG02/RFG02.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 02:30
-- 错误处理
REPERROR DEFAULT, ABEND
REPORTCOUNT EVERY 30 MINUTES, RATE
-- 数据应用选项
ALLOWNOOPUPDATES
ASSUMETARGETDEFS 
-- DDL复制配置
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
-- 对所有DDL错误:重试3次,重试后仍失败则忽略
DDLERROR DEFAULT RETRYOP MAXRETRIES 3, IGNORE
-- 数据映射
MAP itpux01.*, TARGET itpux01.*;
MAP itpux02.*, TARGET itpux02.*;
MAP itpux03.*, TARGET itpux03.*;
使用检查点表(推荐)
add replicat RFG02, exttrail ./dirdat/RFG02/re, checkpointtable goldengate.checkpoint

15.模拟生产环境产生数据

如果源库创建新表需要执行下面命令添加附加日志
begin
    for i in 1..10000 loop
        insert into itpux01.itpux001 values(i);
        commit;
        dbms_lock.sleep(5);
    end loop;
end;
/
如果源库创建新表需要执行下面命令添加附加日志
add trandata 表名

16.使用expdp方式初始化数据

#目标端创建
alter session set container=itpuxpdb;
create public database link itpuxdb_dblink connect to system identified by oracle using 'itpuxdb11g';
select * from dual@itpuxdb_dblink;
select instance_name from v$instance@itpuxdb_dblink;
create directory itpuxbak as '/home/oracle';
grant read, write on directory itpuxbak to system;
grant create any directory to system;
CREATE TABLESPACE ITPUX01 DATAFILE '+DGDATA01' SIZE 10M AUTOEXTEND ON NEXT 10M;
CREATE TABLESPACE ITPUX02 DATAFILE '+DGDATA01' SIZE 10M AUTOEXTEND ON NEXT 10M;
CREATE TABLESPACE ITPUX03 DATAFILE '+DGDATA01' SIZE 10M AUTOEXTEND ON NEXT 10M;
#查询源端SCN
select current_scn from v$database;
#目标端执行初始化数据
impdp system/oracle@itpuxdb11g directory=itpuxbak version=11.2.0.4 \
NETWORK_LINK=itpuxdb_dblink \
flashback_scn=4302306 exclude=statistics parallel=4 cluster=no \
schemas=ITPUX01, ITPUX02, ITPUX03 \
logfile=expdp_itpuxdb.log logtime=ALL TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y
#编译无效对象
@?/rdbms/admin/utlrp.sql
#收集统计信息
#disable 所有的trigger,cascading delete,check,job
set pagesize 2000
select 'alter table ' || owner || '.' || table_name ||
' DISABLE CONSTRAINT ' || constraint_name || ';'
from dba_constraints
where constraint_type = 'R'
and delete_rule = 'CASCADE'
and owner in ('ITPUX01', 'ITPUX02', 'ITPUX03');
select 'alter table ' || owner || '.' || table_name ||
' DISABLE CONSTRAINT ' || constraint_name || ';'
from dba_constraints
where constraint_type = 'C'
and owner in ('ITPUX01', 'ITPUX02', 'ITPUX03');
select 'alter trigger ' || owner || '.' || object_name || ' disable;'
from dba_objects
where object_type = 'TRIGGER'
and owner in ('ITPUX01', 'ITPUX02', 'ITPUX03');
select job, next_date, next_sec, failures, broken
from dba_jobs
where SCHEMA_USER in ('ITPUX01', 'ITPUX02', 'ITPUX03');
begin
sys.dbms_job.broken(job => 21, broken => true);
commit;
end;

17.开始进行OGG增量同步

#源端
start EFG02
start PFG02
info all
view report EFG02
view report PFG02
#目标端
start RFG02, aftercsn 4302306
info all
view report RFG02

相关推荐