我对 sql Developer 很陌生,我知道这个问题被问过并回答过很多次,但我没有找到我需要的答案。我知道这是非常基本的,但我在任何地方都找不到它。这是我的小代码:
SELECT *
FROM CITY;
很简单,但是“city”是我自己创建的一个用户表(称为 parking_places)(位于 System 下)。现在,如果我尝试吃午饭,我会收到以下错误:
- 00000 - "table or view does not exist"
*Cause:
*Action:Error at Line: 163 Column: 6
我发现如果我写:
SELECT *
FROM PARKING_PLACES.CITY ;
我得到了预期的结果。现在的重点是,我希望不要每次使用表时都写用户名,在网上查找我发现这是一个权限问题(至少我是这么理解的),现在我如何为用户 parking_places 提供权限它需要做我想做的事吗?还是说这不是权限问题?
我已经尝试过了
GRANT RESOURCE to parking_places;
代码似乎可以工作,但这似乎也不是我需要的。
如果可能的话,我更喜欢代码而不是带有 GUI 的程序作为答案,非常感谢!
最佳答案
要访问表而不指定架构,Oracle 数据库中有 4 个选项:
a) 您以表所在的模式登录。这是一件很常见的事情,因为通常只有一个用户。它确实有一个缺点,即您的运行时用户实际上是表的所有者,因此无法限制访问。
b) 您授予您的用户或每个人访问该表的权限,并在 PUBLIC 中添加同义词。伪模式。 为owner.yourtable创建公共(public)同义词yourtable;
。这会扰乱公共(public)空间并需要 sys 权限。
c) 您授予您的用户或每个人访问该表的权限,并在运行时用户的架构中添加同义词或 View 。这不会使公共(public)空间变得困惑,但需要为每个“运行时”用户添加/维护。
d) 您使用ALTER SESSION SET CURRENT_SCHEMA=owner;
,这样以后所有不合格的表访问都将使用替代架构。当运行时用户访问安装用户拥有的架构时,通常会使用此方法。您可以将更改 session 添加为登录触发器,这样您就不需要在应用程序中执行此操作。
关于sql - Oracle SQL 开发人员 "table or view does not exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33067479/