【发布时间】:2021-05-11 21:54:28
【问题描述】:
当 Oracle 数据库开始执行相同操作时,我们的应用程序需要(尝试)关闭并开始故障转移到备份位置。
检查Oracle服务器状态的查询是:
select DATABASE_ROLE from v$database
当返回 PRIMARY 以外的任何内容时,我们要开始打包。
虽然检查很简单,但我想在不进行轮询的情况下实现它——也就是说,不重复执行上述查询。 Oracle 自己的示例显示,how to run a stored procedure 在表更改时,但我认为这对我没有帮助。也不是很明显,该机制将适用于像v$database 这样的特殊表(视图?)。
Oracle 客户端程序如何知道它所连接的服务器不再是主服务器——无需轮询它?
我也很好奇,如何学习,当你的服务器成为主服务器时——但我想,机制会是一样的......
@SayanMalakshinov 下面解释说,当角色发生变化时,会自动生成一个“系统事件”——太好了。但是客户端程序(而不是服务器端存储过程)如何得知它的发生呢?
【问题讨论】: