Oracle Create View问题

时间:2010-11-02 21:37:58

标签: sql oracle view grant ora-00942

嘿伙计们。所以,我以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:

要解决此问题,我必须在User2.Table上授予对User1的select访问权限。有没有办法在不必授予访问权限的情况下执行此操作,因为我已经以dba身份登录了?谢谢你们!

3 个答案:

答案 0 :(得分:11)

是的,您已经(并且应该始终)明确授予对其他架构中对象的访问权限。

GRANT SELECT ON user2.table TO user1

虽然您以“dba帐户”(SYS,我假设)登录,但CREATE语句专门用于user1架构。

答案 1 :(得分:8)

您可以创建或替换强制视图...

即使缺少权限,也会创建视图,但除非授予权限,否则视图将无法使用。如果以后授予权限(例如在某些自动构建脚本中),这是一个非常有用的解决方案。

答案 2 :(得分:0)

可能是因为您无法访问表格或视图

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