1.1环境信息收集
源端 | 目的端 | 说明 | |
操作系统 | aix6.1 | oel7.9(X86 64) | 跨系统 |
数据库版本 | 10.2.0.5 | 19.20 | 跨版本 |
数据量 | 1T | / | |
字符集 | ZHS16GBK | ZHS16GBK | |
迁移的shema | spacs | 只迁移的用户 | |
集群模式 | HACMP | rac集群 | |
ip | 10.0.100.11 | 10.22.104.11 | 每个集群节点一的ip |
1.2迁移规划
前提:安装好oracle19c数据库rac集群
1.3安装介质
OGG软件 | p18377868_1121020_AIX64-5L(源端) V983658-01.zip(Oracle GoldenGate 19.1.0.0.4 for Oracle on Linux x86-64)(目标端) |
1.4源端OGG安装配置
注:由于需要考虑回退操作,所以需要配置正向同步和反向同步两条OGG链路, 当迁移同步时,只启动正向同步,不启动反向同步,当业务割接时,停止正向同步,启动反向同步,正反向同步链路如下:
正向:spa_ext ->spa_dpn -> spa_rep (trail文件名sx)
反向:spa_rxt -> spa_rdp ->spa_rrp (trail文件名rdx)
1.4.1配置源端数据库
创建OGG用户及表空间,授权,添加附加日志: create user ogg identified by ogg default tablespace TSP_TPACS; grant resource,connect,dba to ogg; alter database add supplemental log data; alter database add supplemental log data(primary key,unique,foreign key) columns; alter database force logging; |
1.4.2配置OGG环境变量
cat /home/oracle/.bash_profile export GG_HOME=/arch_his12/ogg export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORA_CRS_HOME/lib:/lib:$ORACLE_HOME/rdbms:/usr/lib:/usr/X11R6/lib:$GG_HOME/lib export PATH=$PATH:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$ORACLE_HOME/OPatch:$GG_HOME |
1.4.3安装OGG软件
解压ogg软件: Unzip p18377868_1121020_AIX64-5L -d /arch_his12/ogg 创建相关目录: $GG_HOME/ggsci GGSCI> create subdirs |
1.4.4配置及启动管理进程
Edit param mgr Port 7809 GGSCI> start mgr |
1.4.5配置表附加日志
每张表均添加附加日志: Add trandata username.table_name 批量生成添加语句: SELECT 'ADD TRANDATA '||OWNER||'.’||TABLE_NAME||’' FROM DBA_TABLES WHERE OWNER=’SPACS’; |
1.4.6配置OGG抽取进程
配置抽取进程参数: EXTRACT spa_ext setenv (ORACLE_SID=spacs2) setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) userid ogg,password ogg DISCARDFILE ./dirrpt/spa_ext.dsc,APPEND,MEGABYTES 1024 DBOPTIONS ALLOWUNUSEDCOLUMN WARNLONGTRANS 2h,CHECKINTERVAL 3m EXTTRAIL ./dirdat/sx TABLE SPACS.*; 创建抽取进程: add extract spa_ext ,tranlog ,threads 2,begin now add exttrail ./dirdat/sx,extract spa_ext ,megabytes 512 |
1.4.7配置投递进程
配置投递进程参数: EXTRACT spa_dpn PASSTHRU RMTHOST 10.22.104.11, MGRPORT 7809 RMTTRAIL ./dirdat/sx TABLE SPACS.*; 创建投递进程: add extract spa_dpn,exttrailsource ./dirdat/sx add rmttrail ./dirdat/sx,extract spa_dpn ,megabytes 1024 |
1.4.8支持sequence同步
无需配置,业务切割的时候重建一次sequence即可。
1.4.9启动抽取进程
/arch_his12/ogg/ggsci GGSCI> start spa_ext |
1.4.10数据泵expdp以SCN导出数据
获取数据库当前scn,复制进程启动时指明从此scn开始复制: SQL> select to_char(dbms_flashback.get_system_change_number) from dual; 创建dump目录: create directory ogg_dump as '/arch_his12'; grant read,write on directory ogg_dump to ogg; expdp导出数据: expdp ogg/ogg directory=ogg_dump dumpfile=spacs_full.dmp schemas=spacs flashback_scn=60926641292 logfile=spacs_fulldmp.log |
1.4.11启动投递进程
/arch_his12/ogg/ggsci GGSCI> start spa_dpn |
1.5目标端OGG安装配置
1.5.1配置目标端数据库
创建OGG用户,表空间,授权 在容器中创建C##GGADMIN用户并授权 SQL> create user C##GGADMIN identified by ggadmin; User created. SQL> exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL'); PL/SQL procedure successfully completed. SQL> grant dba to c##ggadmin container=all; Grant succeeded. 在target pdb中创建ogg管理用户并授权 alter session set container=spacs; CREATE TABLESPACE ogg datafile '+data' size 200m autoextend on ; create user ogg identified by ogg default tablespace ogg; grant resource,connect,dba to ogg; 修改允许OGG复制参数: SQL> alter system set enable_goldengate_replication = true scope=both sid='*'; |
1.5.2配置OGG环境变量
vi /home/oracle/.bash_profile Export GG_HOME=/ogg |
1.5.3安装OGG软件
Unzip V983658-01.zip -d /ogg ./runInstaller (图形化界面安装,略) |
1.5.4配置及启动管理进程
Vi /ogg/dirprm/mgr.prm Port 7809 GGSCI> start mgr |
1.5.5数据泵impdp导入数据
因为19c的impdp无法识别10g的dmp文件,需要在10g端远程执行impdp导入。 传输dmp文件到19c端: Scp /arch_his12/spacs_full.dmp 10.22.104.11:/home/oracle/oggdump 10g端执行导入(提前在19c端创建directory oggdump): SQL> create directory oggdump as '/home/oracle/oggdump'; SQL> grant read,write on directory to ogg; 因为19c的impdp无法识别10g的dmp文件,需要在10g端远程执行impdp导入 10g端执行导入: impdp ogg/ogg@10.22.104.11:1521/spacs directory=oggdump dumpfile=spacs_full.dmp schemas=spacs remap_tablespace=USERS:TSP_TPACS,INDEXS:TSP_TPACS_IDX 注: Impdp日志中存在错误,主要包括授权,存储过程、函数和视图编译错误,完整错误信息参考附件/home/oracle/oggdump/spacs_imp.log 1,由于新库缺少相关用户,授权错误,请应用端排查梳理。 存储过程,函数,视图编译错误,均是因为缺少dblink,请创建相关dblink之后重新编译即可。 |
1.5.6禁用触发器,外键,定时job等
批量生成禁用触发器语句: SELECT 'ALTER TRIGGER SPACS.'||TRIGGER_NAME||' DISABLE;' FROM DBA_TRIGGERS WHERE OWNER='SPACS'; 批量生成禁用外键语句: select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';' from dba_constraints where constraint_type in ('R') and owner = 'SPACS'; 批量生成禁用job语句: select 'execute DBMS_IJOB.BROKEN('||job||',TRUE); commit;' from dba_jobs WHERE LOG_USER='SPACS'; |
1.5.7配置OGG复制进程
目标端配置复制进程参数: GGSCI> edit param spa_rep replicat spa_rep userid ogg@pdb_spacs,password ogg --注:pdb_spacs服务名是提前创建好的 assumetargetdefs allownoopupdates discardfile ./dirrpt/spa_rep.dsc,append,megabytes 1024 map spacs.*,target spacs.spacs.*; 创建复制进程: add replicat spa_rep,exttrail ./dirdat/sx,nodbcheckpoint |
1.5.8以SCN启动OGG复制进程
/ogg/ggsci start replicat spa_rep aftercsn 60973166041 |
1.6数据比对
核心表数据比对(比对核心数据表): Select count(*) from username.table_name; |
1.7配置OGG反向同步
ogg反向同步用来做为ogg迁移方式的应急预案,一旦迁移完成后出现不可控的数据库问题,可以反向切换到原来的数据库。
ogg反向同步的过程同1.4
1.7.1配置抽取进程
配置抽取进程参数: EXTRACT spa_rxt setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) userid ogg@pdb_spacs,password ogg DISCARDFILE ./dirrpt/spa_rxt.dsc,APPEND,MEGABYTES 1024 DBOPTIONS ALLOWUNUSEDCOLUMN EXTTRAIL ./dirdat/sr ddl include all TABLE SPACS.*; 创建抽取进程: add extract spa_rxt ,tranlog ,threads 2,begin now add exttrail ./dirdat/sr,extract spa_rxt ,megabytes 512 |
1.7.2配置投递进程
配置投递进程参数: EXTRACT spa_rdp PASSTHRU RMTHOST 10.100.0.11, MGRPORT 7809 RMTTRAIL ./dirdat/sr TABLE SPACS.*; 创建投递进程: add extract spa_rdp,exttrailsource ./dirdat/sr add rmttrail ./dirdat/sr,extract spa_rdp ,megabytes 1024 |
1.7.3配置复制进程
配置复制进程参数: replicat spa_rrp userid ogg,password ogg assumetargetdefs allownoopupdates discardfile ./dirrpt/spa_rrp.dsc,append,megabytes 1024 MAP SPACS.*,TARGET SPACS.*; 创建复制进程: add replicat spa_rrp,exttrail ./dirdat/sr,nodbcheckpoint |
1、业务割接
2.1.1停止所有业务
停止所有业务,检查数据库连接,确认源库没有链接进来。
2.1.2检查OGG同步进度
检查OGG同步进度,lag time没有延迟即同步完毕。 /ogg/ggsci GGSCI> lag spa_rep |
2.1.3停止正向同步,开启反向抽取
源端: GGSCI> stop spa_ext GGSCI> stop spa_dpn 目标端: GGSCI> stop spa_rep GGSCI> start spa_rxt GGSCI> start spa_rdp |
2.1.4原数据库用户锁定
锁定原数据库业务用户spacs,防止有新数据产生。
sqlplus / as sysdba
alter session set container=spacs;
alter user spacs account lock;
2.1.5重建序列
从主库生成目标库序列重建语句: select 'create or replace sequence '||sequence_owner||'.'||sequence_name||' start with '||last_number||' max value 9999999999999 increment by 1 cache '||cache_size||';' from (select * from dba_sequences where sequence_owner='SPACS') |
2.1.6启动触发器,外键,定时job
新环境启用触发器和外键: SELECT 'ALTER TRIGGER SPACS.'||TRIGGER_NAME||' ENABLE;' FROM DBA_TRIGGERS WHERE OWNER='SPACS'; select 'alter table '||owner||'.'||table_name||' enable constraint '||constraint_name||';' from dba_constraints where constraint_type in ('R') and owner = 'SPACS'; 原环境禁用触发器和外键: SELECT 'ALTER TRIGGER SPACS.'||TRIGGER_NAME||' DISABLE;' FROM DBA_TRIGGERS WHERE OWNER='SPACS'; select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';' from dba_constraints where constraint_type in ('R') and owner = 'SPACS'; |
2.1.7开启OGG反向同步
新目标端: GGSCI> start spa_rrp |