资源描述
贵州银行Oracle数据库
DG 切换方案
云和恩墨(北京)信息技术有限公司
技术顾问 陈龙
文档控制:
序
版本号
更改人
日期
备注
1
1.0版
陈龙
2017-03-03
初始版本
编制
陈龙
(签字)
日期
2017-03-03
校对
(签字)
日期
审核
(签字)
日期
批准
(签字)
日期
目录
1. 引言 - 4 -
1.1编写目的 - 4 -
1.2背景 - 4 -
2. 任务描述 - 4 -
3. 实施步骤 - 4 -
4. 风险评估 - 7 -
5. 回退方案 - 7 -
摘要: 本报告为我司向贵方提供数据库技术支持服务的工作记录,同时作为档案留存,为贵方数据库运行提供历史数据。本文档涵盖数据库运维工作的方方面面,也可能涉及系统重要信息,仅供用户参考。同时在传阅过程中应注意安全保密事宜,防止不必要的泄密事件发生。
1. 引言
1.1编写目的
编写此文档为了更好的配合和完成贵州银行Oracle 数据库主备切换,以完成数据迁移工作。
1.2背景
按工作计划,于2017年4月中旬开始切换测试以及最终切换,为了切换的顺利进行,现对提出Oracle 数据库端两种切换方式,并对其进行对比选择最符合现实环境的切换方式。规范切换流程,故编写该方案指导完成Oracle数据库的切换工作。
2. 切换方式
Oracle 角色切换分为两个基本功能:切换(Switchover)和故障转移(Switchover)
Switchover
切换(Switchover)是一个将主数据库更改为备用角色,并将一个备用数据库更改为主数据库角色的过程。在整个切换的过程中,不存在数据丢失,即无损转换。同时,Switchover 不会切断DG 关系,即可以继续反向切换。
切换分为2个步骤:
1) 现有主库转化为备用数据库
2) 备库转化为主库角色
切换前:
遵义数据中心为主库角色,通过网络传输将日志应用到金阳数据中心,实现扩地区的数据同步。
切换后:
通过switchover 的切换,金阳数据中心转变为主库角色及生产数据库,而遵义数据中心转换为备用数据库角色。
Failover
故障转移(Failover),属于主库切换的紧急预案,即当主库存在严重故障时,可将备用数据库强制拉起作为新的主库。Failover 不像Switchover 那样需要从主数据库开始,它可以选择任一备库作用新主数据库。需要注意的是,在故障转移中可能会存在丢失数据的可能性,即便已将Data Guard 配置为“最高可用”和“最大保护”。
切换前:
遵义数据中心为主库角色,通过网络传输将日志应用到金阳数据中心,实现扩地区的数据同步。
切换后:
金阳数据中心执行Failover后,与遵义数据库中心的DG 关系断开,即不在是以遵义数据中心为主数据库角色,而将金阳数据中心转换为新主数据库
3. 切换步骤
Switchover
1. 查看主库的switchover状态
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO STANDBY
注:如果显示TO STANDBY 和SESSIONS ACTIVE 表示主库可以进行切换备库角色
2.主库进行switchover 切换
SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.
3.关闭主库并启动到mount
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
4.查看切换的目标备库的switchover 状态
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
5.在切换目标库进行switchover切换
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
Database altered.
5.打开新主库即切换的目标备库
SQL> alter database open;
Database altered.
6.查看新主库的状态
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
7.在备库中启动日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOG FROM SESSION;
Database altered.
Failover
1. 主库刷新重做日志
SQL> ALTER SYSTEM FLUSH REDO TO target_db_name;
注:target_db_name为需要从主数据库接收刷新重做日志的备库,上面的命令作用是将主数据库的redo重做日志刷新到备用数据库,并等备用数据库进行日志应用。
2. 查看归档日志是否连续
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
如果存在日志不连续,需要从主数据库拷贝相应缺失的日志文件到备用数据库并注册。
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE '';
3. 查询是否存在归档文件Gaps
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
4. 在目标备用数据库取消日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
5. 在目标备用数据库执行
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
注:该命令的作用为将所有接受到的归档日志文件进行应用,如果执行该命令报错,说明重做数据没有被应用。或者执行下面的命令:
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
6. 查看目标备用数据库是否转换为主数据库
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
注:如果显示TO PRIMARY 和SESSIONS ACTIVE 表示主库可以进行切换备库角色
7. 切换物理备用数据库为主数据库
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
8. 打开新主数据库
SQL> ALTER DATABASE OPEN;
9. 备份新主数据库
该步非必须执行步骤,但是建议对新主数据库进行一次全备
10. 对备用数据库启动日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOG FROM SESSION;
关于六盘水数据中心的Failover 切换
1) 配置或指定到金阳数据中心的DG 关系,作为级联DG
示例:
alter system set log_archive_config= 'DG_CONFIG=(zy,jy,lps)' scope=both;
alter system set log_archive_dest_2 = 'SERVICE=jy LGWR ASYNC VALID_FOR=(ONLINE_LOG) DB_UNIQUE_NAME=jy' scope=both;
Fal 设置
alter system set fal_server=jy scope=spfile;
alter system set fal_client=lps scope=spfile;
2) 配置到金阳数据中心的TNS
jy=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1523))
)
(CONNECT_DATA =
(server=dedicated)
(SERVICE_NAME =jy)
)
)
注:建议对以上alias 进行tnsping 测试通
展开阅读全文