首页 > 应用开发 > IT综合 > 实战DG switchover
公司数据库迁移,使用DG switchover的方式。十一期间在生产环境做了实战演习,进行了切换和回切操作。
关键字:DG switchover[@more@]数据库S_DB为primary DB,在主机S_HOST上,数据库版本10.2.0.3
数据库K_DB为stand DB,在主机K_HOST上,数据库版本10.2.0.3
在S_DB和K_DB间做switch over,使K_DB成为primary DB,S_DB成为stand DB。
#ps –ef|grep s_db
# ps -ef|grep "LOCAL=NO"|grep -v grep|awk '{ print $2 }'|xargs kill -9
需要主备库保持同步。本次实用的方法:
在主库切换一个日志
SQL>alter system switch logfile;
检查主备库sequence#是否一致
SQL> select max(sequence#) from v$log_history;
SQL>alter system set job_queue_processes=0;
SQL>select * from dba_jobs_running;
等待job运行完毕或手工停止。
#crontab –l
确定没有关于S_DB的计划任务。如有则先注释掉。
# crontab –e
SQL>select DATABASE_ROLE, PROTECTION_MODE, SWITCHOVER_STATUS, FLASHBACK_ON from v$database;
如果1中SWITCHOVER_STATUS为TO STANDBY则使用如下SQL切换
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
如果1中SWITCHOVER_STATUS为ACTIVE SESSION则使用如下SQL切换(或重启S_DB使SWITCHOVER_STATUS变为TO STANDBY)
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
SQL>shutdown immediate
SQL>startup mount
SQL>select DATABASE_ROLE, PROTECTION_MODE, SWITCHOVER_STATUS, FLASHBACK_ON from v$database;
如果5中SWITCHOVER_STATUS为ACTIVE SESSION则重启K_DB到mount使SWITCHOVER_STATUS变为TO PRIMARY。
如果5中SWITCHOVER_STATUS为TO PRIMARY则使用如下SQL切换
SQL>alter database commit to switchover to primary;
SQL>alter database open;
SQL>select DATABASE_ROLE, PROTECTION_MODE, SWITCHOVER_STATUS, FLASHBACK_ON from v$database;
SWITCHOVER_STATUS应为TO STANDBY
SQL>select DATABASE_ROLE, PROTECTION_MODE, SWITCHOVER_STATUS, FLASHBACK_ON from v$database;
SWITCHOVER_STATUS应为TO PRIMARY
SQL> alter database recover managed standby database disconnect from session;
使用3.1.4中方法检查。
SQL>alter system set job_queue_processes=0;
手动运行3.1.6中手动停止的job
在K_HOST上恢复7中注释掉的cron。
回切操作就不写了,同切换操作是一样的。
最后写一点关于AIX系统增删服务IP。本次切换为了对应用透明,主机服务IP一并做了切换和回切。步骤如下:
1.在S_HOST上删除服务IP
#ifconfig en5服务IP netmask 255.255.255.0 delete
2.配置S_DB的listener.ora
删除加粗部分
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务IP)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 管理IP)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
3.在K_HOST上增加服务IP
#ifconfig en5服务IP netmask 255.255.255.0 alias
4.配置K_DB的listener.ora
增加加粗部分
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务IP)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 管理IP)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21129591/viewspace-1055501/ ,如需转载,请注明出处,否则将追究法律责任。