【问题标题】:Oracle return difference result from the same user but difference windows userOracle从同一个用户返回不同的结果,但不同的windows用户
【发布时间】:2017-08-08 03:57:56
【问题描述】:

我在 windows 服务器上有两个用户

  1. 管理员
  2. 开发用户

两者都可以使用 SQL Developer 连接到 Oracle 11g 服务器(Oracle 电子商务套件),但在同一个查询(来自同义词)中,他们得到了不同的结果:devUser 得到了正确的结果,而 Administrator 在前三列中得到了 null。

从 XXAUTO.XXFND_OU_COMPANY_V 中选择 * where ou_name like 'ASL%'

Query Result from Administrator(Windows User)

【问题讨论】:

  • 用户正在执行的查询是什么?可能是因为两者都从各自的模式中获取结果,或者管理员正在获取整体数据库结果......再次取决于执行查询的表/视图。
  • 您需要向我们展示表格、实际和预期的输出以获得任何有用的帮助。
  • 您可能需要检查代码是否没有任何依赖于 NLS 设置的隐式日期格式转换。如果代码有一个像'01/01/2000' 这样的字符串,它的工作方式可能会有所不同,具体取决于他们的操作系统和 SQL Developer 会话的配置。
  • SELECT * from XXAUTO.XXFND_OU_COMPANY_V where ou_name like 'ASL%'
  • XXAUTO.XXFND_OU_COMPANY_V 是同义词

标签: oracle


【解决方案1】:

似乎视图具有某种形式的 VPD。 Oracle 通过其 DBMS_RLS 包支持细粒度访问控制,尽管名称允许我们在列和行上实现安全策略(从 10g 开始)。 Find out more

常见的模型是,当用户连接到数据库时,LOGON 触发器会使用有关他们的详细信息填充应用程序上下文。这些详细信息用于生成具有适当安全策略的表和视图的附加过滤器。您可以使用相关视图来确认这一点:从 ALL_POLICIES 开始,然后根据您找到的内容向下钻取。

视图可能实现了此功能的手动版本(FGAC 是企业版功能),但如果您使用的是 EBS,这似乎不太可能。

另一种选择是您的数据库受 Oracle Database Vault 保护。此产品是 EE 许可证的额外收费产品。它是一个非常强大的工具,它的一个用途是防止像系统管理员或 DBA 这样的超级用户滥用他们的权限来查看敏感数据。组织似乎不太可能将 Database Vault 放置在开发人员可以访问的服务器上,但我提出这个建议是为了完整性。 Find out more.

【讨论】:

    【解决方案2】:

    谢谢大家。 现在我发现两个用户都设置了不同的 Windows 区域设置的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2015-02-13
      • 2020-09-13
      相关资源
      最近更新 更多