概述
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恢复为备机状态
最后
以上就是包容酸奶为你收集整理的ogg同步迁移数据库1 环境描述2 操作目的3 升级前操作系统、数据库操作4 升级前ogg部署5 初始化数据库6 停应用7 后续操作8 回滚操作的全部内容,希望文章能够帮你解决ogg同步迁移数据库1 环境描述2 操作目的3 升级前操作系统、数据库操作4 升级前ogg部署5 初始化数据库6 停应用7 后续操作8 回滚操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复