ogg同步迁移数据库

1 环境描述

 因江苏联通号线资源管理系统数据库(10.2.0.4)dblink连接高版本数据库,出现ora-00600 2252 scn错误且版本过老,需要对数据库进行版本升级,升级至oracle 11.2.0.4版本

当前操作系统版本为:

resdb1:HP-UX Resdb1 B.11.31 U ia64 3216863995 unlimited-user license

resdb2:HP-UX Resdb2 B.11.31 U ia64 3858772321 unlimited-user license

10.2.0.4已经开启归档

2 操作目的

  江苏联通号线资源管理系统oracle数据库升级,解决连接高版本数据库dblink问题

3 升级前操作系统、数据库操作

3.1 划分空间给新数据库(已完成)

从磁阵上划分2T新空间给resdb1&2,用于在resdb1(备机)上安装oracle11g软件和存储新库数据、日志文件

3.2 resdb1安装oracle软件,打201901 PSU(已完成)

新建oracle11用户和/Oracle11文件系统,并配置.profile,安装HP UX系统补丁PHCO_41479(Disk Owner Patch),安装oracle11g软件

3.3 新建vg和lv(已完成)

这里创建和原vg不同名的新vg(vgneworadata),方便与原来的vg区分,到时候再修改双机的配置

 

3.4 resdb1新建同名数据库实例(已完成)

按照集成文档规范创建和原库相同参数的新库,需要完善数据库其他参数,并添加redo组,增加temp和undo,拷贝当前生产数据库的tnsname.ora文件;修改操作系统内核参数

3.5 resdb库垃圾数据清理,确认业务用户(待业务侧完成)

临时表及垃圾表等数据清理,减小数据量,缩短当晚迁移时间

3.6 迁移测试

升级前做迁移测试

3.4 主备机同步新建vg的信息

新建vgneworadata,主备机同步vg信息

4 升级前ogg部署

4.1 源库检查数据库强制日志和附加日志是否开启

select FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

ALTER DATABASE FORCE LOGGING;

alter database add supplemental log data;

4.2 源端和目标端安装ogg

源端和目标端均需安装对应操作系统的ogg,可安装在oracle用户下

上传ogg安装包ggs_HPUX_ia64_ora11g_64bit.tar, ggs_HPUX_ia64_ora10g_64bit.tar

源端已经安装ogg软件,目标端需安装

mkdir ogg

cd ogg

tar xvf  /soft/oracle/ggs_HPUX_ia64_ora11g_64bit.tar

环境变量PATH添加$ORACLE_BASE/ogg

ggsci

ggsci>create subdirs

在源端和目标端的tnsname.ora中添加本实例的连接字符串

4.3 源端和目标端创建ogg用户

CREATE TABLESPACE TBS_OGG DATAFILE '/oracleha/oradata_ogg/ogg/ogg01.dbf ' SIZE 2048M AUTOEXTEND ON;

 

create user ogg identified by ogg default tablespace TBS_OGG temporary tablespace TEMP quota unlimited on TBS_OGG;

 

alter system set enable_goldengate_replication=true;

grant dba to ogg;

GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;

 

4.4 源端和目标端mgr主进程配置

查看7809端口是否被使用

cd $ORACLE_BASE/ogg

ggsci

Ggsci> edit param mgr

PORT 7809

DYNAMICPORTLIST 7820-7840

USERID ogg@ogg,PASSWORD ogg

--AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS /oracle11/ogg/dirdat, USECHECKPOINTS, MINKEEPDAYS 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

 

Start mgr

Info all

 

两边mgr进程都启动后,源端telnet 目标端 7809端口进行网络连通测试,如果不通,检查主机和网络防火墙

4.5 源端添加表的附加日志

DBLOGIN USERID ogg@ogg, PASSWORD ogg

ADD SCHEMATRANDATA RESTEST2017

ADD SCHEMATRANDATA REPORT

ADD SCHEMATRANDATA RESJS

ADD SCHEMATRANDATA IOM

4.6 源端配置ddl准备

源端和目标端配置全局变量

GGSCI 1>edit params ./GLOBALS

GGSCHEMA ogg

CHECKPOINTTABLE ogg.checkpoint

源端执行脚本,配置用户为ogg

cd /oracle/ogg

SQL>@marker_setup.sql

SQL>@ddl_setup.sql

SQL>@role_setup.sql

SQL>GRANT GGS_GGSUSER_ROLE TO ogg;

SQL>@ddl_enable.sql

SQL>@?/rdbms/admin/dbmspool.sql

SQL>@ddl_pin.sql ogg

 

 

4.7 配置sequence同步

源端和目标端

SQL>@sequence.sql

后面配置进程的时候把sequence加进去即可

 

4.8 根据实际表的个数拆分进程

表的数目过多,考虑对抽取进程进行拆分

4.9 配置抽取进程

首先在源端数据库进行授权:

sql >exec DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE (grantee=>'OGG', privilege_type=>'capture',grant_select_privileges=>true, do_grants=>TRUE);

注册抽取进程:

ggsci >register extract ex_c0 database

配置抽取进程脚本

ggsci >edit param EX_C0

extract ex_c0

SETENV ( ORACLE_SID=ogg )

SETENV ( ORACLE_HOME=/oracle/product/102 )

USERID ogg@ogg, PASSWORD "ogg"

Tranlogoptions integratedparams (max_sga_size 100)  

##alter system set streams_pool_size=1G scope=both;

tranlogoptions excludeuser ogg            

ddl include all

CACHEMGR CACHESIZE 8G

REPORTCOUNT EVERY 5 MINUTES, RATE

WARNLONGTRANS 2h, CHECKINTERVAL 3m

DISCARDFILE /oracle/ogg/dirdat/ex_c0.dsc , APPEND, MEGABYTES 1024

GETTRUNCATES

EXTTRAIL /oracleha/ogg/dirdat/c0

 

sequence  lottu.*;                                      

 

table LOTTU.TEST1;

table LOTTU.TEST2;

table LOTTU.TEST3;

table LOTTU.TEST4;

 

只有抽取进程需要配置ddl同步,dp进程和rp进程都是默认开启的

根据EX_C0配置EX_C1, EX_C2……

DDL抽取只需要在一个抽取进程中配置就可以,其他的抽取进程不需要添加ddl配置,否则在目标端会产生DDL同步的冲突。

 

添加进程:

add extract ex_c0, integrated tranlog, begin now

add exttrail /oracle/ogg/dirdat/c0, extract ex_c0, megabytes 1000

start ex_c0

Sequence同步需要刷新一下

ggsci >flush sequence lottu.*

 

………………

添加启动剩余抽取进程

………………

4.10  配置传输进程

 

edit param DP_C0

 

XTRACT dp_c0

SETENV ( ORACLE_HOME=/oracle/product/102 )

USERID ogg@ogg, PASSWORD "ogg"

passthru

rmthost 10.45.53.31, mgrport 7809

REPORTCOUNT EVERY 5 MINUTES, RATE

rmttrail /oracleha/ogg/dirdat/c0

 

sequence  lottu.*;

table lottu.*;

 

add extract dp_c0, exttrailsource /oracle/ogg/dirdat/c0

add rmttrail /oracle11/ogg/dirdat/c0, extract dp_c0, megabytes 1000

start dp_c0

 

传输进程启动后,可以在目标端/oracle/ogg/dirdat/下看到源端抽取的trail文件已经被传输到目标端,也可以在ogg日志ggserr.log中查看相关信息。

………………

添加启动剩余传输进程

………………

4.11 目标端配置复制进程

DBLOGIN USERID ogg@ogg, PASSWORD ogg

 

ADD CHECKPOINTTABLE ogg.checkpoint

 

edit param rp_c0

 

REPLICAT rp_c0

SETENV ( ORACLE_SID=ogg )

SETENV ( ORACLE_HOME=/oracle11/product/112)

USERID ogg@ogg, PASSWORD ogg

DBOPTIONS INTEGRATEDPARAMS(parallelism 1)

--DDL include all                                      不需要配置,默认开启的

ddlerror default ignore retryop maxretries 3 retrydelay 5

DBOPTIONS SUPPRESSTRIGGERS

ASSUMETARGETDEFS

REPORTCOUNT EVERY 5 MINUTES, RATE

DISCARDFILE /oracle11/ogg/dirdat/rp_c0.dsc, APPEND, MEGABYTES 1000

DBOPTIONS SUPPRESSTRIGGERS

DBOPTIONS DEFERREFCONST

REPERROR (1403, IGNORE)

 

Map lottu.*, target lottu.*;

添加进程

Add Replicat rp_c0 ,Integrated,  exttrail /oracle11/ogg/dirdat/c0 ,checkpointtable ogg.checkpoint

………………

添加启动剩余复制进程

………………

5 初始化数据库

5.1 数据泵初始化

目标数据库建表空间等

源库导出

select CURRENT_SCN from v$database;

 

expdp userid=\'/ as sysdba\'  directory=export schemas=RESTEST2017,REPORT,RESJS,IOM parallel=16 exclude=OBJECT_GRANT,STATISTICS logfile=EXP_schemas_initial_20190812.log dumpfile=EXP_schemas_initial_20190812.dmp flashback_scn=

 

备份文件盘加载到目标端,目标库导入

Impdp userid=\'/ as sysdba\'  directory=export  dumpfile=EXP_schemas_initial_20190812.dmp logfile=IMP_schemas_initial_20190812.log parallel=16

 

5.2 目标端表分析

exec DBMS_STATS.GATHER_SCHEMA_STATS (ownname=>'RESTEST2017',estimate_percent=>10,method_opt=>'FOR ALL INDEXED COLUMNS',degree=>10,cascade=>true,options=>'GATHER AUTO');

exec DBMS_STATS.GATHER_SCHEMA_STATS (ownname=>' REPORT',estimate_percent=>10,method_opt=>'FOR ALL INDEXED COLUMNS',degree=>10,cascade=>true,options=>'GATHER AUTO');

exec DBMS_STATS.GATHER_SCHEMA_STATS (ownname=>'RESJS',estimate_percent=>10,method_opt=>'FOR ALL INDEXED COLUMNS',degree=>10,cascade=>true,options=>'GATHER AUTO');

exec DBMS_STATS.GATHER_SCHEMA_STATS (ownname=>'IOM',estimate_percent=>10,method_opt=>'FOR ALL INDEXED COLUMNS',degree=>10,cascade=>true,options=>'GATHER AUTO');

 

5.3 禁用触发器和外键

目标库:

SQL> declare

v_sql varchar2(2000);

CURSOR c_trigger IS SELECT 'alter trigger '||owner||'.'||trigger_name||' disable' from dba_triggers where owner in ('LOTTU');

BEGIN

OPEN c_trigger;

LOOP

FETCH c_trigger INTO v_sql;

EXIT WHEN c_trigger%NOTFOUND;

execute immediate v_sql;

end loop;

close c_trigger;

end;

/

SQL> declare

v_sql varchar2(2000);

CURSOR c_trigger IS SELECT 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name from dba_constraints where constraint_type='R' and owner in ('LOTTU');

BEGIN

OPEN c_trigger;

LOOP

FETCH c_trigger INTO v_sql;

EXIT WHEN c_trigger%NOTFOUND;

execute immediate v_sql;

end loop;

close c_trigger;

end;

/

 

5.4启动复制进程

GGSCI> start rp_c0,aftercsn 2026816

start RP_C1, aftercsn 2026816

 

这里的复制进程需要指定起始位置。

 

如果有sequence同步需要刷新sequence

GGSCI> flush sequence lottu.*

 

5.5 同步状态监控

 

监控ogg日志

tail -f ggserr.log

查看进程同步信息,需要等待追平之前初始化的过程中抽取的数据。

 

进程状态检查

 

目标端查看lag,直到lag接近0

ggsci

info all

6 停应用

待lag接近0,停应用,同步到lag为0,enable trigger和外键,检查dblink,切换虚拟ip到resdb1,

测应用

 

7 后续操作

若应用测试正常,可以将resdb2作为新环境,后续再配置resdb1和resdb2高可用等

 

8 回滚操作

直接切虚拟ip到resdb2,停resdb1上的实例,将resdb1恢复为备机状态

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值