【问题标题】:Oracle Global Temporary table - Privileges for other instancesOracle 全局临时表 - 其他实例的特权
【发布时间】:2013-01-08 05:51:28
【问题描述】:

我在 oracle 中创建了全局临时表并通过我的应用程序插入数据,当我使用“system”作为用户名连接到数据库时,它对我来说工作正常。我在数据库中使用“user1”再创建了一个用户,并且还向该用户授予了“授予所有”权限。现在,当我使用“User1”作为用户名连接到数据库并运行应用程序时,数据不会插入到全局临时表中。 但是当我尝试从 sql developer tool 插入数据时,它的插入。 系统用户通过应用程序也可以工作,而 user1 则不插入。我没有了解背后的原因,因为我不是那么多数据库专家。

请有任何想法建议我。我也有所有特权。提前致谢。

【问题讨论】:

  • 在 user1 进行插入时是否收到错误消息?或者只是看不到那里的数据。请记住,由一个用户插入临时表的数据对任何其他用户都不可见。如果应用程序是连接池,数据库可能会认为您有两个不同的用户访问数据。
  • 一个会话插入的数据对任何其他会话不可见,无论其他会话是否为同一用户。
  • 第一个建议,停止使用系统,正如此处对不相关问题的回答中所述:asktom.oracle.com/pls/apex/…
  • 我没有收到任何错误消息,只是没有看到数据。并且数据仅由一个用户插入,因此必须对该特定用户可见。但我看不到数据。

标签: oracle global privileges


【解决方案1】:

首先,表必须在 SYS 或 SYSTEM 之外的其他模式中。在“User1”上创建它。

其次,您必须确保从同一张表中进行选择。插入和读取时,在表格前面加上模式前缀。

还要确保你不是在Sql Developer中使用ON COMMIT DELETE ROWS和一些AUTOCOMMIT ON创建表的情况。

【讨论】:

  • 感谢您的建议。通过在所有查询中将架构放在表的前面,我解决了这个问题。
猜你喜欢
  • 2017-10-02
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
相关资源
最近更新 更多