一 环境描述
1.1 硬件环境
以下环境根据各自环境自行填写,DG 搭建更多的是数据库级别的参数设置,所以并不存在AIX 及LINUX 等操作系统版本之分。 生产主机规划:
|
主机名 |
型号 |
操作系统版本 |
|
|
X86 |
Centos6.8 |
备库主机规划:
|
主机名 |
型号 |
操作系统版本 |
|
|
X86 |
Centos6.8 |
规划
目前生产主机IP 规划:
|
IP |
Alias |
备注 |
|
本地物理IP( 内网) |
目前备库主机IP 规划:
|
IP |
Alias |
备注 |
|
本地物理IP( 内网) |
二 DataGuard Switchover 计划性切换
主备切换测试之switchover
一般 SWITCHOVER 切换都是计划中的切换 , 特点是在切换后 , 不会丢失任何的数据 , 而且这个过程是可逆的 , 整个 DATA GUARD 环境不会被破坏 , 原来 DATA GUARD 环境中的所有 STANDBY 都可以继续工作。
在进行DATA GUARD的物理STANDBY切换前需要注意:
1)确认主库和备库间网络连接通畅;
2)确认没有活动的会话连接在数据库中;
3)PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT/READ ONLY状态
主库切备库
以下操作均在生产机进行
查看切换状态
|
SQL> SELECT DATABASE_ROLE,SWITCHOVER_STATUS FROM V$DATABASE; DATABASE_ROLE SWITCHOVER_STATUS ---------------- -------------------- PRIMARY TO STANDBY |
|
备注代码 : 附 : A:switchover_status 出现 session active/not allowed 当出现 session active 的时候表示还有活动的 session, 则运行 下面代码: Alter database commit to switchover to physical standby with session shutdown;
当出现not allowed时,在官方文档说转换会不成功尝试运行一下代码 B.ORA-01153: an incompatible media recovery is active 则 运行下面代码: Alter database recover managed standby database finish; 或者 Alter database recover managed standby database finish force; |
切换成备库
|
SQL>Alter database commit to switchover to physical standby with session shutdown; 或者 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; Database altered. |
重启数据库
|
SQL> SHUTDOWN IMMEDIATE SQL> startup mount; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; |
备库切主库
以下操作均在备机进行
查看switchover状态
|
SQL> SELECT DATABASE_ROLE,SWITCHOVER_STATUS FROM V$DATABASE; DATABASE_ROLE SWITCHOVER_STATUS ---------------- -------------------- STANDBY TO PRIMARY |
备注代码:
|
附 : 若不是用此语句切换 :ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown 补充 : 若出现 :ORA-16139: media recovery required 是因为没有执行:alter database recover managed standby database disconnect from session; |
2. 切换成主库
|
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; Database altered. SQL> shutdown immediate; SQL> startup; SQL> alter system switch logfile; |
验证同步
验证切换成功,在原先的备机上(即现在的生产机上)切换归档:
|
su - oraclesqlplus "/ as sysdba"SQL>alter system switch logfile;SQL>alter system switch logfile; |
在原生产机,检查原先的生产库告警日志,观察是否有新的归档传输过来
|
$ tail -f /oracle/app/diag/rdbms/kinton/kinton/trace/alert_kinton.log |
三 DataGuard failover 故障切换
主备切换之Failover
FAILOVER 切换一般是 PRIMARY 数据库发生故障后的切换 , 这种情况下 STANDBY 数据库发挥其作用。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。 由于PRIMARY数据库已经无法启动,所以FAILOVER切换所需的条件并不多,只要检查STANDBY是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到PRIMARY角色也无法启动。
生产库停止归档传输服务
该操作均在生产库执行
|
$export ORACLE_SID=kinton$sqlplus / as sysdba 确认传输服务设在log_archive_dest_state_2 参数上SQL> alter system set log_archive_dest_state_2=defer scope=both sid='*'; |
备库强制Failover 打开
以下操作均在备库执行
|
停止应用归档: SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; Database altered.
备库停止应用归档 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH; 或 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE; Database altered.
确认数据库角色为STANDBY 确认数据库保护模式为最大性能模式 SQL> select DATABASE_ROLE,PROTECTION_MODE,SWITCHOVER_STATUS from v$database; DATABASE_ROLE ---------------- PHYSICAL STANDBY 若数据库非最大性能模式,则手动切换成最大性能模式,若是则跳过此步 SQL> alter database set standby database to maximize performance;
执行Failover切换 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; Database altered.
切换完成之后重启数据库 SQL> shutdown immediate SQL> startup |
