Oracle 创建视图问题

7

我已经以dba账户登录,并想在User1的模式中创建一个视图,但是要从User2中选择数据。

我使用了以下查询:

CREATE OR REPLACE VIEW User1.NewView (Column1) AS
SELECT DISTINCT Column1 FROM User2.Table

我遇到了以下错误:

SQL Error: ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:

为了解决这个问题,我必须授予User1在User2.Table上的选择访问权限。是否有一种方法可以在不授予访问权限的情况下解决此问题,因为我已经作为dba登录了?
3个回答

11

是的,你必须(而且始终应该)显式地授予对另一个模式中的对象的访问权限。

GRANT SELECT ON user2.table TO user1

尽管您是以“dba账户”(我假设为SYS)的身份登录,但CREATE语句特别针对user1模式。


9
您可以使用CREATE OR REPLACE FORCE VIEW ...命令进行操作。这将创建视图,即使没有特权,但是除非授予权限,否则该视图无法使用。如果稍后会授予权限(例如在某些自动化构建脚本中),这是一个有用的解决方案。

0

可能是因为您没有访问该表或视图的权限

查询 授予用户对象的权限;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接