【问题标题】:Insufficient privilege error while having select access on table-Ora Error对 table-Ora 错误具有选择访问权限时出现权限不足错误
【发布时间】:2015-01-03 12:46:26
【问题描述】:

我收到 ORA-01031: insufficient privileges when selecting a table。 以下是让我困惑的几点:

  1. 我可以通过授予我的角色选择访问此表
  2. 此角色由 DBA 授予我。
  3. 我以前访问过这个表,我可以看到那里的任何权限,都是相同的,没有被修改。
  4. 尝试撤销角色并再次分配给我,但问题仍然存在。

请尽可能协助。

【问题讨论】:

  • 这可能是您没有正确添加模式名称的情况。除非已创建同义词,否则您将需要添加模式名称。您正在使用的示例查询将帮助我们更好地调试问题。
  • Schema:A(Mine) Schema:B(通过角色向模式 A 授予对表 X 的访问权限) 我正在尝试:SELECT COL1,COL2,CLO3 FROM B.X ;// COL1-第 1 列
  • 随着表定义的改变,任何列添加或修改???
  • 您是在存储过程中进行选择吗?
  • @a_horse_with_no_name.. 不,我不是在任何存储过程中调用 select 语句。

标签: sql oracle database-administration


【解决方案1】:

您正在尝试使用您的对象权限。如果对象权限将由对象所有者授予,则可以,但如果对象权限将由任何其他具有权限的用户授予,则该权限不准确。因为如果对象所有者将撤销授予您的该用户的授权,则所有内容都将被撤销。

示例:对象所有者是 AAA,他正在授予 BBB 选择权限。现在 BBB 授予您的角色 CCC(您拥有的)相同的权限。如果对象所有者 AAA 将撤销 BBB 的相同权限,则 CCC 的权限将自动撤销。只有使用“授予选项”授予原始权限时,它才能工作。

【讨论】:

  • 在这种情况下,我们从 sys 架构授予角色访问此表的权限。那么表所有者授予其他架构的用途是什么。
  • 永远不要使用 SYS 模式来授予对象。使用架构的所有者授予。请检查授予的角色是您的主要角色,或者您需要启用它。
  • 还要检查是否使用密码创建了角色,否则您需要启用它。它应该是默认角色而不是非默认角色,只有你可以直接使用它。
猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多