概述:
验证实时主备中数据守护的作用
对比oracle dg数据保护模式。
首先实时主备数据库状态和归档状态都是由数据守护修改的。
备库关闭对主库的影响?
守护进程挂了会产生什么问题?
1.守护进程完好,备库关闭
两种情况:
1.备库数据库异常关闭
守护进程会尝试启动备库:
1.检测到instance状态error
2.守护进程切换状态从open到startup
3.开始恢复实例(重启,实例恢复)recover to ok
4.守护进程切换状态到unify ep统一节点状态。
5.守护进程再切换到startup状态,最后open。
2.通过monitor关闭
守护进程不会尝试启动备库
2.守护进程修改归档状态
1.关闭备库守护进程,关备库(直接kill进程)
备库归档会被改成invalid,主库正常:
1.主库守护从open到mon confirm状态,实例进入挂起状态
2.监视器确认备库异常后,守护进程进入failover状态
3.守护进程从failover到open,实例从挂起到open。
主库可以正常操作:
备库归档为invaild:
2.关主库守护进程,关备库(kill主库守护进程,通过monitor关闭备库)
备库归档不会被改成invalid,主库commit操作会挂起数据库:
启动备库守护进程:
1.守护进程从startup到unify ep状态,实例启动到mount
2.守护进程从unify ep到startup ,实例启动到open
3.守护进程从startup到open。
通知主库守护进程进行数据恢复
1.主库守护进程从open到recovery(备库关闭期间的归档再次发送到备库)
2.主库守护进程从recovery到open
异常情况:模拟守护异常
手动杀掉主库守护进程,monitor下关闭备库实例:
monitor下:kill instance dm1.dmstd
1.备库实例被关闭,状态为error
2.备库守护进程进入shutdown状态。
此时主库进入suspend状态,数据库不可用了。
suspend状态下可以进行查询和修改数据,但是数据库恢复正常后,suspend期间所有操作都会回滚。
总结:
数据守护作用:
1.监控并自动拉起数据库(守护挂了monitor就查不到数据库最新信息了,kill数据库进程,数据库会被自动启动)
2.修改归档状态(备库关闭后,通过monitor关闭的,守护不会自动启动数据库)主库的守护会把到备库的归档状态改成失效,从而不影响主库正常运行。如果主库的守护挂了,然后备库挂了,则触发写redo日志的操作会导致数据库挂起。重启守护后,数据库会自动恢复正常,并回滚suspend期间操作。
主库守护 |
备库守护 |
主库实例 |
备库实例 |
归档状态 |
正常 |
正常 |
open |
自动重启 |
valid |
正常 |
shutdown |
open |
关闭 |
invalid |
kill |
shutdown |
suspend |
关闭 |
valid |
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。