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集群

记录一次oracle10g到19c的数据库迁移(ogg的方式)_SQL

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