Chinaunix首页 | 论坛 | 博客
  • 博客访问: 661424
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1625
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-24 11:40
个人简介

资深Oracle数据库专家 OCM认证大师 10年数据库相关服务及开发经验 各类数据库相关方案的编写,管理及实施 数据中心数据库日常运维、大型项目割接、性能优化等方面有丰富的实战经验 客户包括: 电信,银行,保险,航空,国网,汽车,烟草等 想要一起学习探讨数据安全技术的请加qq群 256041954

文章分类

全部博文(163)

文章存档

2017年(2)

2016年(112)

2015年(38)

2014年(11)

我的朋友

分类: Oracle

2016-05-18 15:06:39

http://blog.sina.com.cn/s/blog_4d22b97201012b81.html

容灾项目系统切换演练方案
上海同城容灾切换演练
 
 
 

目  录
1. 文档概述.. 4
1.1 范围.. 4
1.2 适用人员.. 4
1.3 术语定义.. 4
2. 切换环境概述.. 5
2.1 GoldenGate逻辑结构.. 5
2.2 数据库服务器.. 5
2.3 存储.. 5
3. 切换流程概述.. 5
3.1 计划内切换.. 5
3.2 计划外切换.. 6
4. 计划内同城切换.. 6
4.1 关闭192.168.xxx.50的job, trigger 6
4.2 停止192.168.xxx.50中OGG的extlc和dpelc进程.. 7
4.3 停止192.168.xxx.112中OGG的replc进程.. 8
4.4 确认数据库对象一致.. 9
4.5 启动192.168.xxx.112的job, trigger 10
4.6 启动192.168.xxx.112中OGG的extlc和dpelc进程.. 11
4.7 调整192.168.xxx.50数据库的sequence. 12
4.8 启动192.168.xxx.50中OGG的replc进程.. 12
5. 计划外同城切换.. 13
5.1 停止192.168.xxx.112中OGG的replc进程.. 13
5.2 比较数据库对象是否一致并记录当前SCN.. 14
5.3 启动192.168.xxx.112的job, trigger 16
5.4 启动192.168.xxx.112中OGG的extlc和dpelc进程.. 16
 


1. 文档概述
此文档是关于环迅支付容灾项目上海同城切换演练方案。它将为环迅公司发生上海容灾切换演练时提供指导,包括切换流程及切换命令。此文档根据之前测试报告进行制定,可作为切换过程的操作手册使用。
1.1 范围
此文档涵盖的容灾切换内容包括
l  计划内上海同城容灾切换演练流程
l  计划外上海同城容灾切换演练流程
此文档适用于环迅的上海数据库平台,上海商户测试数据库192.168.xxx.50,上海容灾数据库192.168.xxx.112.。.
1.2 适用人员
此测试文档主要面向环迅容灾项目项目经理,信息部门,数据库管理员和其他相关人员。
1.3 术语定义


2. 切换环境概述
2.1 GoldenGate逻辑结构
 
正常状态下,192.168.xxx.50对外提供商户测试服务,192.168.xxx.112从192.168.xxx.50同步数据,对外提供容灾服务。
 
当192.168.xxx.50发生计划内或计划外停机时而无法使用时,将使用192.168.xxx.112对外提供服务。
 
2.2 数据库服务器
数据库服务器192.168.xxx.50使用PC SERVER,其主要配置信息是:
CPU:     1* Intel(R) Xeon(R) CPU   5110  @ 1.60GHz
Memory:       2GB
网卡:      2* 1000Gb ethernet
硬盘:  1*200GB disk
 
数据库服务器192.168.xxx.112使用SUN T5120,其主要配置信息是:
CPU:     1*1165 MHz  SUNW,UltraSPARC-T2
Memory:       32GB
网卡:      2* 1000Gb ethernet
硬盘:  4*300GB 10K 2.5 SAS disk
 
 
2.3 存储
由于仅仅是切换演练系统,故都是使用本地磁盘。
 
3. 切换流程概述
3.1 计划内切换
步骤
192.168.xxx.50
192.168.xxx.112
1
关闭job, trigger
 
2
停止OGG的extlc和dpelc进程
 
3
 
停止OGG的replc进程
4
 
确认数据对象和数据完全一致
5
 
更改主机和数据库IP地址为192.168.100.66
6
更改主机和数据库IP地址为192.168.100.167
 
7
 
启动job,trigger
8
 
启动OGG的extlc和dpelc进程
10
调整数据库的sequence
 
11
启动OGG的replc进程
 
 
3.2 计划外切换
步骤
192.168.xxx.50
192.168.xxx.112
1
 
停止OGG的replc进程
2
 
比较数据是否一致,记录当前SCN
3
 
更改主机和数据库IP地址为192.168.100.66
4
 
启动job,trigger
5
 
启动OGG的extlc和dpelc进程
 
4. 计划内同城切换
  关闭192.168.xxx.50到192.168.xxx.112的复制
4.1 关闭192.168.xxx.50的job, trigger
 
l  操作确认
1)      顺序检查生产中心数据库数据库连接的session中除了GoldenGate和sys用户外的数据连接是否都运行完毕(确认无应用连接)
$ sqlplus / as sysdba
SQL> column username format a12
SQL> column program format a20
SQL> column machine format a10
SQL> select username,program,machine,last_call_et,sql_hash_value,status from gv$session where username is not null and username<>'SYS' and type='USER';
确认非sys用户的status状态是INACTIVE
2)      禁用ddl
SQL>@ /home/oracle/ggs/ddl_disable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认trigger的状态都是DISABLED
3)      禁用所有的job和trigger
SQL> @ /home/oracle/ggs/dirsql/disable_all.sql
确认disable_all显示的结果中status都是DISABLED
4.2 停止192.168.xxx.50中OGG的extlc和dpelc进程
l  操作确认
1.       
2.       
1)      检查生产库extlc进程是否将数据全部抓取出来
GGSCI> info all
GGSCI> lag ext extlc
确认结果为:At EOF, no more records to process
GGSCI> send ext extlc,showtrans
确认输出为:not transaction founds
GGSCI> info extlc, detail
GGSCI> info dpelc, detail
确认extlc的Target Extract Trails中的RBA与dpelc显示的Log Read Checkpoint中的RBA数值一致
2)      检查生产中心dpelc进程是否将数据全部传送完毕
GGSCI> info all
GGSCI> lag ext dpelc
确认结果为:At EOF, no more records to process
GGSCI> info dpelc, detail
记录显示的Target Extract Trails中的RBA值
登录到192.168.xxx.112数据库,进入控制台
GGSCI> info replc, detail
记录显示的Log Read Checkpoint中的RBA数值,确认与dpelc记录的数值一致。
3)      停止192.168.xxx.50上的extlc和dpelc进程
GGSCI> stop extlc
GGSCI> stop dpelc
GGSCI> info all
确认两个进程状态都是STOPPED
4.3 停止192.168.xxx.112中OGG的replc进程
l  操作确认
2.       
3.       
1)      检查192.168.xxx.112中队列内容是否全部apply
GGSCI> info all
GGSCI> lag rep replc
确认结果为At EOF, no more records to process.
2)      确认是否与源端同步完毕
GGSCI> info replc
多次执行,确认rba值无变化
3)      停止replc进程
GGSCI> stop replc
GGSCI> info all
确认replc进程状态是STOPPED
 
4.4 确认数据库对象一致
l  操作确认
4.       
1)      在192.168.xxx.112上比较数据对象是否一致(抽取IPS2所有表比较资料是否一致)
$ sqlplus ips2/password@192.168.xxx.50
SQL> @ /export/home/db01/ggs/dirsql/checkdata_50.sql
SQL> exit
$sqlplus ips2/password@192.168.xxx.112
SQL> @ /export/home/db01/ggs/dirsql/checkdata_112.sql
SQL> exit
$ diff checkdata_50.out checkdata_112.out
 
确认比较结果完全一致
 
 
  打开192.168.xxx.112到192.168.xxx.50的复制
 
4.5 启动192.168.xxx.112的job, trigger
l  操作确认
5.       
1)      启用192.168.xxx.112的job和trigger
$ sqlplus / as sysdba
SQL> @/export/home/db01/ggs/dirsql/enable_all.sql
确认结果中所有STATUS都是ENABLED,确认trigger的状态是enable
2)      启用192.168.xxx.112的ddl功能
SQL> @/export/home/db01/ggs /ddl_enable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认结果中所有STATUS都是ENABLED
 
4.6 启动192.168.xxx.112中OGG的extlc和dpelc进程
l  操作确认
1)     在192.168.xxx.50上,复制参数文件到192.168.xxx.112
$ cd /ggs/dirprm
$ mv extlc.prm extlcpd.prm
$ mv dpelc.prm dpelcpd.prm
$ scp extlcpd.prm 192.168.xxx.112: /export/home/db01/ggs/dirprm/
$ scp dpelcpd.prm 192.168.xxx.112: /export/home/db01/ggs/dirprm/
2)     在192.168.xxx.50上,停止并删除extlc和dpelc进程
GGSCI> stop extlc
GGSCI> stop dpelc
GGSCI> delete extract extlc
GGSCI> delete extract dpelc
3)     备份旧有参数文件,并复制新的参数文件。
$ cd /ggs/dirprm
$ mv extlc.prm extlcqr.prm
$ mv dpelc.prm dpelcqr.prm
$ cp extlcpd.prm extlc.prm
$ cp dpelcpd.prm dpelc.prm
4)     在192.168.xxx.112的GGSCI控制台上添加extlc和dpelc进程并启动。
3. 
4. 
5. 
6. 
GGSCI> add extract extlc, tranlog, begin now
GGSCI> add exttrail ./dirdat/lc, ext extlc, megabytes 10
GGSCI> start ext extlc
GGSCI> add ext dpelc, exttrailsource ./dirdat/rm
GGSCI> add rmttrail  ./dirdat/rm, ext dpelc, megabytes 10
GGSCI> start ext dpelc
GGSCI> info all
确认extlc和dpelc状态为RUNNING
4.7 调整192.168.xxx.50数据库的sequence
l  操作确认
在192.168.xxx.50下执行
7. 
8. 
9. 
10. 
$ sqlplus ggs/ggs
GGSCI> @/home/oracle/ggs/dirsql/alter_new_target_sequence.sql
进入192.168.xxx.112的OGG控制台
$ sqlplus ggs/ggs
GGSCI> @/export/home/db01/ggs/dirsql/checksequence.sql
确认192.168.xxx.50中sequence的last_number大于或等于192.168.xxx.112中sequence的last_number
4.8 启动192.168.xxx.50中OGG的replc进程
l  操作确认
1)     在192.168.xxx.112上,复制参数文件到192.168.xxx.50
$ cd /ggs/dirprm
$ mv replc.prm replcqr.prm
$ scp replcqr.prm 192.168.xxx.50:/home/oracle/ggs/dirprm/
2)     在192.168.xxx.50上,启动replc进程
11. 
12. 
13. 
14. 
GGSCI> add replicat replc,exttrail  ./dirdat/rm,nodbcheckpoint
GGSCI> start replc
GGSCI> info all
确认replc状态为RUNNING
 
l  回退步骤
GGSCI> stop replc
 
 
 
  将网络连接切换到备用库
5. 计划外同城切换
   前提:192.168.xxx.50由于硬件故障宕机或者DB无法提供服务。
5.1 停止192.168.xxx.112中OGG的replc进程
l  操作确认
5.       
6.       
1)      检查192.168.xxx.112中队列内容是否全部apply
GGSCI> info all
GGSCI> lag rep replc
确认结果为At EOF, no more records to process.
2)      确认是否与源端同步完毕
GGSCI> info replc
多次执行,确认rba值无变化
3)      停止replc进程
GGSCI> stop replc
GGSCI> info all
确认replc进程状态是STOPPED
 
l  回退步骤
4)      启动192.168.xxx.112的replc进程
GGSCI> start replc
GGSCI> info all
 
5.2 比较数据库对象是否一致并记录当前SCN
l  操作确认
7.       
1)      在192.168.xxx.112上比较数据对象是否一致(前提:192.168.xxx.50还可以连接)
$ sqlplus ips2/password@192.168.xxx.50
SQL> @/export/home/db01/ggs/dirsql/checkdata_50.sql
SQL> exit
$sqlplus ips2/password@192.168.xxx.112
SQL> @/export/home/db01/ggs/dirsql/checkdata_112.sql
SQL> exit
$ diff checkdata_50.out checkdata_112.out
 
确认比较结果是否一致,进行记录
2)      记录当前SCN
登录到192.168.xxx.112上
$ sqlplus / as sysdba
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
      ------------------------
      xxxxxxxx
 
 
5.3 启动192.168.xxx.112的job, trigger
l  操作确认
6.       
1)      启用192.168.xxx.112的job和trigger
$ sqlplus / as sysdba
SQL> @/export/home/db01/ggs/dirsql/enable_all.sql
确认结果中所有STATUS都是ENABLED,确认trigger的状态是enable
2)      启用192.168.xxx.112的ddl功能
SQL> @/export/home/db01/ggs/ddl_enable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认结果中所有STATUS都是ENABLED
 
l  回退步骤
3)      禁用192.168.xxx.112的job和trigger
$ sqlplus / as sysdba
SQL> @/export/home/db01/ggs/dirsql/disable_all.sql
确认结果中所有STATUS都是DISABLED
4)      禁用192.168.xxx.112的ddl功能
SQL> @/export/home/db01/ggs/ddl_disable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认结果中所有STATUS都是DISABLED,确认trigger的状态是disable
 
5.4 启动192.168.xxx.112中OGG的extlc和dpelc进程
l  操作确认
1)     在192.168.xxx.50上,复制参数文件到192.168.xxx.112
$ cd /ggs/dirprm
$ mv extlc.prm extlcpd.prm
$ mv dpelc.prm dpelcpd.prm
$ scp extlcpd.prm 192.168.xxx.112: /export/home/db01/ggs/dirprm/
$ scp dpelcpd.prm 192.168.xxx.112:/export/home/db01/ggs/dirprm/
2)     在192.168.xxx.112上,备份旧有参数文件,并复制新的参数文件。
$ cd /ggs/dirprm
$ mv extlc.prm extlcqr.prm
$ mv dpelc.prm dpelcqr.prm
$ cp extlcpd.prm extlc.prm
$ cp dpelcpd.prm dpelc.prm
3)     在192.168.xxx.112的GGSCI控制台上添加extlc和dpelc进程并启动。
15. 
16. 
17. 
18. 
GGSCI> add extract extlc, tranlog, begin now
GGSCI> add exttrail ./dirdat/lc, ext extlc, megabytes 10
GGSCI> start ext extlc
GGSCI> add ext dpelc, exttrailsource ./dirdat/lc
GGSCI> add rmttrail  ./dirdat/rm, ext dpelc, megabytes 10
GGSCI> start ext dpelc
GGSCI> info all
确认extlc和dpelc状态为RUNNING
 
l  回退步骤
GGSCI> stop extlc
GGSCI> stop dpelc
 
192.168.xxx.50上Replicat可以后续配置!
阅读(3144) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~