我环境中的一个物理备用数据库以只读模式打开并用于报告目的。
我只想让用户访问这个特定的备用数据库,而不是主数据库。
到目前为止,我发现的最佳方法是创建AFTER LOGON ON DATABASE
触发器来检查v$instance
(或可能),并根据/ columnsv$database
的值抛出错误。host_name
instance_role
我想知道是否有更好的方法来做到这一点。
我环境中的一个物理备用数据库以只读模式打开并用于报告目的。
我只想让用户访问这个特定的备用数据库,而不是主数据库。
到目前为止,我发现的最佳方法是创建AFTER LOGON ON DATABASE
触发器来检查v$instance
(或可能),并根据/ columnsv$database
的值抛出错误。host_name
instance_role
我想知道是否有更好的方法来做到这一点。
你可以在生产端做一个操作系统防火墙,但如果他们出于更有限的目的需要生产,那是行不通的。
登录后数据库触发器可以工作,但不幸的是,它还必须在主服务器上运行以断开那里的会话。
在备用数据库以只读方式打开后但在通知用户新密码之前,您可以将其作为更改主要用户密码的一部分,他们将使用这些密码立即连接备用数据库。这样他们将能够连接到备用服务器,但无法连接到主服务器。刚刚为主服务器设置的密码将是您在下次打开备用服务器后发送给他们的密码。
您可以在备用数据库打开之前启用用户,然后在通知用户备用数据库打开之前立即禁用用户。这将允许密码保持不变,但确实引入了一个漏洞窗口,如果您在主服务器上有一个中断窗口并且可以关闭监听器或其他东西,您可以缓解该漏洞。
您可以设置一个 TNS 条目,该条目仅指向报告工具/用户要连接到的只读备用数据库。它比触发器更易于管理,尤其是当此备用数据库出于任何目的需要成为主要数据库时。在服务可以功能性地使用数据库之前,登录数据库触发器将是流程中的另一个步骤。
根据评论中的净新要求:此解决方案无效。