【问题标题】:SQL Developer returns query results on one computer but not on anotherSQL Developer 在一台计算机上返回查询结果,但在另一台计算机上不返回
【发布时间】:2013-12-19 22:07:19
【问题描述】:

我可以在 SQL Developer 3.1.07 中对视图运行查询,它会返回我期望的结果。我在墨西哥的同事使用同一个用户,可以连接到同一个数据库,查看相同的视图,运行相同的查询并且没有得到任何结果,即使是简单的“从 VIEWNAME 中选择 *”查询也是如此。列标题显示,但没有数据。如果他从连接窗口中选择一个视图并选择数据选项卡,则不会显示任何数据。此用户无权访问此特定数据库上的任何表。

我不确定他是否在运行相同版本的 Developer,但也相距不远。我在 SQL Developer 中检查了许多我认为可能是问题的设置,但我认为他的设置与我的设置没有显着差异。

连接到另一个数据库允许他访问表和视图中的数据

对我们缺少什么有什么想法吗?

【问题讨论】:

  • 以同一用户身份连接?只是为了消除明显的,因为你没有提到它。不同的用户拥有自己的表副本似乎是可能的,因此需要排除。这当然使它们不是“相同”的表,但仍然......
  • 当然,谢谢 Alex,是的,我们都使用相同的用户信息访问数据库。
  • “Sql Array Fetch Size”的值为 100。列元数据确实显示。将查询作为脚本运行会返回“未选择行”。实际上它们是视图而不是表(我们都无法访问这个特定数据库中的任何表。我确实从他的机器连接到不同的数据库,并且能够从对表和视图的查询中获得结果。原始问题已被编辑有了这些信息
  • 那真是个笨蛋。它似乎不是客户端设置,除非它在连接设置中,如果只有一个 DB 受到影响。 t 猜测视图可能使用sys_context 过滤为一种基于操作系统用户或 IP 的 VPD,但这听起来不太可能。我想不出任何原因,同一数据库上的同一 Oracle 用户会根据客户端具有不同的数据可见性。有趣。

标签: oracle-sqldeveloper


【解决方案1】:

我知道我晚了几年,但请检查底层视图是否没有过滤基于本地化的内容!我刚遇到问题,结果是这样的声明导致了问题:

SELECT * 
FROM sometable
WHERE language = userenv('LANG') 

【讨论】:

  • 我能够在我的环境中通过在运行查询之前将我的数据库资源管理器的语言更改为其他语言来确认这一点。感谢您的提示!
【解决方案2】:

从 oracle home 复制 JDBC 文件夹并将其复制到您的 c-workers 机器上。我们遇到了同样的问题,并且替换了 JDBC 文件夹。

【讨论】:

    【解决方案3】:

    当我选中“跳过 NLS 设置”框时,遇到了同样的问题。我的查询之前返回零个结果,但是当我再次运行相同的查询时,我可以看到表格行。

    由于您的同事在不同的国家/地区,很可能是 NLS 设置(与语言相关)是这里的罪魁祸首。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2014-01-21
      • 2020-09-08
      相关资源
      最近更新 更多