【问题标题】:Oracle SQL Developer "table or view does not exist"Oracle SQL Developer“表或视图不存在”
【发布时间】:2015-10-11 16:40:37
【问题描述】:

我对 sql developer 很陌生,我知道这个问题被问过很多次,但我没有找到我需要的答案。我知道这是非常基本的,但我在任何地方都找不到。所以这是我的小代码:

SELECT *
FROM CITY;

很简单,但“城市”是我自己创建的用户表(称为parking_places)(它在系统下)。现在,如果我尝试吃午饭,我会收到以下错误:

  1. 00000 - “表或视图不存在”

*原因:
*行动:

行错误:163 列:6

我发现如果我写的话:

SELECT *
FROM PARKING_PLACES.CITY ;

我得到了预期的结果。现在的重点是,我不希望每次使用表格时都写用户名,在网络上环顾四周,我发现这是一个权限问题(至少我理解),现在我如何给用户parking_places 权限它需要做我想做的事吗?还是不是权限问题?

我已经试过了

GRANT RESOURCE to parking_places;

代码似乎有效,但似乎也不是我需要的。

如果可能的话,我更喜欢代码而不是带有 GUI 的程序作为答案,非常感谢!

【问题讨论】:

  • 如果您可以阅读表格,那么您确实拥有相应的权限!如果你想省略架构前缀,你可以创建一个同义词,但老实说,我认为你应该在自己的用户下创建所有内容。

标签: sql oracle privileges


【解决方案1】:

要在不指定架构的情况下访问表,您在 Oracle 数据库中有 4 个选项:

a) 您以表所在的模式登录。这是很常见的事情,因为通常您只有一个用户。它的缺点是您的运行时用户实际上是表的所有者,因此无法限制访问。

b) 您授予您的用户或每个人访问该表的权限并在 PUBLIC 中添加同义词。伪模式。 CREATE PUBLIC SYNONYM yourtable FOR owner.yourtable;。这会使公共空间变得混乱,并且需要 sys 权限。

c) 您授予您的用户或每个人对表的访问权限,并在运行时用户的模式中添加同义词或视图。这不会使公共空间混乱,但需要为每个“运行时”用户添加/维护。

d) 你使用ALTER SESSION SET CURRENT_SCHEMA=owner; 这样以后所有不合格的表访问都将使用替​​代模式。当您有运行时用户访问安装用户拥有的模式时,通常会使用此方法。您可以将更改会话添加为登录触发器,因此您无需在应用程序中执行此操作。

【讨论】:

  • 钉了它@eckes ...不再说
【解决方案2】:

ALTER SESSION ...oracle-docs .. 是 sql server 和 mysql 中 use database-name 的等价网络。

使用 ALTER SESSION 语句设置或修改影响您与数据库的连接的任何条件或参数。在您断开与数据库的连接之前,该语句一直有效。

为此,请在脚本的某处添加这一行并执行它。或者,如果您正在执行此操作,则只需从 sql developer 执行。

  alter session set current_schema =  PARKING_PLACES; 

会话将为该用户连接,您不必在随后的sql statements 中明确提及用户名:

SELECT  * FROM CITY;

P.S :您还可以通过右键单击 sql developer 中的数据库图标并浏览要使用的架构来更改架构。

【讨论】:

    【解决方案3】:

    授予选择权限,

     GRANT SELECT ON TABLE yourtable to public;
    

    您也可以授予特定用户权限。

    see this link for granting privileges

    【讨论】:

    • 我觉得grant还不够,还需要public命名空间的同义词。但这是真正应该避免的事情。
    【解决方案4】:

    如果您想从另一个架构中进行选择,则存在另一个选项,您可以使用工作台访问:

    /sqldev:stmt/SET CURRENT SCHEMA='BLAH';

    例如,请参阅下面的 imgur。

    对于该工作表连接的其余部分,这将默认所有对象为相关架构。

    http://imgur.com/RMsWtIH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 2015-01-31
      相关资源
      最近更新 更多