【问题标题】:Oracle Create View issueOracle 创建视图问题
【发布时间】:2010-11-02 21:37:58
【问题描述】:

我以 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 的选择访问权限。由于我已经以 dba 身份登录,因此有没有办法在无需授予访问权限的情况下执行此操作?

【问题讨论】:

    标签: sql oracle view grant ora-00942


    【解决方案1】:

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

    GRANT SELECT ON user2.table TO user1
    

    虽然您以“dba 帐户”(我假设是 SYS)身份登录,但 CREATE 语句专门针对 user1 模式。

    【讨论】:

      【解决方案2】:

      你可以做 CREATE OR REPLACE FORCE VIEW ...

      尽管没有特权,但仍会创建视图,但除非授予特权,否则视图将无法使用。如果稍后授予权限(例如在某些自动构建脚本中),这是一个很有用的解决方案。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2013-10-02
          • 2014-04-25
          • 2011-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多