XXX支付平台ORCLE RAC数据库

迁移实施手册(未评审)

  

基本要求:支付平台正常业务,保证数据的安全、一致性、业务的连续性

 

一、            时间安排

方案一

正常操作

时间(2012-0x-28) 操作步骤

详细描述

消耗时间(估算,根据实际调节)
0:00 停止业务 停止所有与数据库交互的业务,保证数据一致性 30分钟
0:30 导出数据 导出PEP打头的业务用户(9) 2小时
2:30 传输数据导新库 传输所有的备份集到目标库 30分钟
3:00 导入数据 导入所有的PEPP打头的数据 2小时
5:00 数据库验证 验证用户、数据的完整性,故障排查 1小时
6:00 启动业务 修改业务相关配置,启动业务 30分钟
6:30 后续测试    

回退操作

2012-0x-28

2012-0x-29

业务测试

具体操作

时间待定

任意时间点

测试不成功回退

 

 

 

 

开启peppdb到生产的ogg

 

 

 

peppdb为主,生产为备

 

 

 

需要intial数据数据

 

 

 

切换业务连接

 

 

 

测试验证数据同步

 

优点

可以随时同步数据,不需要事先配置

缺点

测试失败需要初始化数据后,才能同步

  

方案二(推荐)

正常操作

时间(2012-0x-28) 操作步骤

详细描述

消耗时间(估算,根据实际调节)
0:00 停止业务 停止所有与数据库交互的业务,保证数据一致性 30分钟
0:30 导出数据 导出PEP打头的业务用户(9个) 2小时
2:30 传输数据导新库 传输所有的备份集到目标库 30分钟
3:00 导入数据 导入所有的PEPP打头的数据 2小时
5:00 数据库验证 验证用户、数据的完整性,故障排查 1小时
5:30 启动OGG 启动Peppdb为主,生产为slave的ogg,b并验证,同步是否正常(需要先配置),不需要initial数据 30分钟
5:30 启动业务 修改业务相关配置,启动业务 30分钟
6:00 后续测试    

回退操作

2012-0x-28

2012-0x-29

业务测试

 

较快

任意时间点

测试不成功回退

 

 

 

 

开启PEPPDB到生产的ogg

 

 

 

启动mgr,extract进程

 

 

 

peppdb为主,生产为备

 

 

 

需要intial数据

 

 

 

切换业务连接

 

 

 

测试验证数据同步

 

优点

不需要初始化数据,可以从测试到回退的平滑过渡

缺点

需要事先配置

  

 

二、      迁移准备(System)

初始化:

——Source源端(192.168.xx.44)

  要求: EXPDP出来的文件格式:USERNAME.dmp,PEPP_PE.dmp

   (其中USERNAME为所有PEPP打头的大写)

——Targe目标端(192.168.131.129/130)

由于数据库用户目前已经创建,需要先更改密码

   执行alter_user_pass.sql更改当前所有用户的密码(第一次执行)

   执行create_ep_resource.sql创建role :ep_resource(第一次执行)

   创建名称为44的到44的连接串(第一次执行)

   创建/oracle/script/checksum目录存放校验日志(第一次执行)

   Mkdir –p /oracle/script/checksum

   Mkdir –p /oracle/script/checksum/obj

   Mkdir –p /oracle/script/checksum/priv

   Mkdir –p /oracle/script/checksum/seq

 

创建目录存放expdpdump文件(可能需要调节日期为20120×28)

Create directory  exp_dir as ‘/oracle/archive/arch1/20120×23’ ;

   Grant read,write on directory exp_dir to public;

   执行grant_user_privs.sql授权

   执行create_db_link.sql创建所有的db link;

 

 

 

 

 

 

异常处理

——–删除用户

   由于错误信息,或者设置不当需要重新创建user

   执行drop_user.sql中特定段,删除该特定用户

   执行create_user.sql中特定段,创建该特定用户

   执行grant_user_privs.sql,可执行所有,忽略错误

   执行create_database_link.sql,可执行所有,忽略错误

 

 

 

 

 

 

 

 

三、正式迁移步骤(System)

  1. 1.       导入对象obejects

imp_all_objs.sql,根据用户,细分步骤执行

查询下状态:

 Cd  /oracle/script/obj

Checksum_all_objs.sql

 

  1. 2.       禁用FK,PK,triggers(运行前必须建立名称为44的连接串)

Dis_all_trigger.sh

Dis_all_pk.sh(pk disable ,fk自动disable)

  1. 3.       导入数据

Imp_all_data.sql,根据用户,细分步骤执行

  1. 4.       启动trigger,启用PK,FK

Emb_all_trig.sh

Enb_all_pk.sh(消耗一定时间)

Enb_all_fk.sh(消耗时间较长)

 

 

 

 

 

 

 

 

 

 

 

 

查询FK,PK,所有状态为VALID为正常

select s.owner,s.table_name,s.constraint_name,s.constraint_type,s.status from dba_constraints s

 where s.constraint_type in(‘P’,’R’)

 and s.owner in(

‘PEPP_COMMON   ‘, 

‘PEPP_TAPS     ‘, 

‘PEPP_PE       ‘, 

‘PEPP_CUSTSVC  ‘, 

‘PEPP_BMS      ‘, 

‘PEPP_STT      ‘, 

‘PEPP_RISKMAN  ‘, 

‘PEPP_B2B      ‘, 

‘PEPP_WP       ‘  

) order by status

 

返回0行则表明状态正常

查询triggers

 

select tr.owner,trigger_name,tr.trigger_name,tr.status from dba_triggers tr where tr.owner in(

‘PEPP_COMMON   ‘, 

‘PEPP_TAPS     ‘, 

‘PEPP_PE       ‘, 

‘PEPP_CUSTSVC  ‘, 

‘PEPP_BMS      ‘, 

‘PEPP_STT      ‘, 

‘PEPP_RISKMAN  ‘, 

‘PEPP_B2B      ‘, 

‘PEPP_WP       ‘  

) order by status

 

返回0行则表明状态正常

 

 

 

 

 

 

 

 

 

四、校验比对

 

1.校验对比(更改9个用户)的所有对象,所有用户的对象权限,所有对象的Sequence,产生比对文件,每个用户一个单独的记录

1)校验所有对象

Cd /oracle/script/checksum/obj

执行checksum_all_objects.sql
 

2)校验所有的权限(tab,col)

权限(系统权限,对象权限,对象权限在exp/imp的时候不会出问题)

  Cd /oracle/script/checksum/priv

    执行Checksum_all_tab_privs.sql

3)校验所有的Sequence.last_number

   Cd /oracle/script/checksum/seq

    执行Checksum_all_sequences.sql

保证Sequence(目标的sequence大于源),对于不大于source,需要触发几次

 Select seqxx.last_number from dual;

 

2.删除Databaselink

Drop_all_dblink.sql

附录:对于任意用户失败,可以使用

drop_user.sql;

create_user.sql;

grant.sql;

create_database_link.sql;

忽略错误重建用户

 

 

五、配置OGGServer,用于捕捉增量,使得能够在回退的时候,同步与Source源库

 

 

配置OGG(Server端口),导入数据正常后启动ogg

  1. 1.       配置mgr

 

GGSCI (master) 1> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     STOPPED

 

GGSCI (master) 2> edit params mgr

PORT 7809

–Dynamic port

dynamicportlist 7800-8000

–Auto start extract

–autostart extract *

–Auto Restart,retries 2 times

autorestart extract *,waitminutes 2,resetminutes 5

–Purge old extracts

–purgeoldextracts /usr/local/ggate/dirdat/*,usecheckpoints,minkeepdays 3

–Can not Puerge Extract

–Large report hours

lagreporthours 1

laginfominutes 3

lagcriticalminutes 45

 

 

  1. 2.       配置Extract进程,配置如下参考

GGSCI (querydb1) 2> view param EXTPEP1

 

extract extpep1

userid ggs, password ggs

BR BROFF

tranlogoptions rawdeviceoffset 0

TRANLOGOPTIONS CONVERTUCS2CLOBS

warnlongtrans 2h, checkinterval 3m

fetchoptions nousesnapshot

THREADOPTIONS MAXCOMMITPROPAGATIONDELAY  30000 IOLATENCY 30000

tranlogoptions altarchivelogdest primary instance peppdb1 /oracle/archive/arch1, altarchivelogdest instance peppdb2  /oracle/archive/arch2

discardfile  ./dirrpt/extpep1.dsc,append,megabytes 10

getupdatebefores

ignorereplicates

exttrail /ggstrail/exttrail/pepp/e1

numfiles 4000

dynamicresolution

GETTRUNCATES

DDL INCLUDE MAPPED

table PEPP_B2B.*;

table PEPP_BMS.*;

table PEPP_COMMON.*;

table PEPP_CUSTSVC.*;

table PEPP_PE.*;

table PEPP_RISKMAN.*;

table PEPP_STT.*;

table PEPP_TAPS.*;

table pepp_wp.*;