首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在登录触发器中使用硬编码主机名

问在登录触发器中使用硬编码主机名
EN

Database Administration用户
提问于 2018-06-01 18:44:26
回答 1查看 212关注 0票数 1

我需要编写一个触发器,以防止某些用户登录到生产数据库。

我们使用主动数据保护。

如果我硬编码触发器中的Linux主机名以验证主机是否生产,那么在发生“角色更改”的情况下,触发器可能无法工作。

对,是这样?

这是一个三层系统。终端用户通过应用服务器进行通信,应用服务器将使用通用名称。

下面是我一直在考虑实现的解决方案:

  1. 有一个表,它将检查用户+服务器+数据库主机名的组合(数据库托管的机器名称)。
  2. 有一个DB_ROLE_CHANGE触发器,如果生产现在从备用状态运行,该触发器将被激活
  3. DB_ROLE_TRIGGER将修改表,以便数据库主机名现在反映新的生产服务器主机名。
  4. APPSERVER和APPUSER将匹配OK。但是,由于主机名现在正在生产-它将不允许登录。
EN

回答 1

Database Administration用户

发布于 2018-06-05 10:26:03

如果只希望用户连接到备用状态,那么从v$database中检查D1值。主程序将是PRIMARY,备用将不会(它将是PHYSICAL STANDBY或类似的)。

在你的扳机里加一张支票来撞他们。

代码语言:javascript
复制
...
SELECT database_role INTO db_role FROM v$database;
IF db_role = 'PRIMARY' THEN (deny those users a connection)
..
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/208519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档