Oracle

ORA-00942: 表或視圖不存在 - 可以通過授予使用者權限來解決嗎?

  • April 4, 2016

我正在創建一個連接到 Oracle 數據庫的 Java 應用程序。

在應用程序中,我以User A身份連接到數據庫,這按預期工作。

然後我嘗試訪問Schema 1Schema 2中的表。

但是,當我這樣做時,我得到了錯誤:

ORA-00942: table or view does not exist

我查看了 SQLDeveloper,在使用者 AI 的*“其他使用者”*部分不到模式 1 和 2 的任何表。

如何解決此錯誤,以便我可以查看和訪問模式 1 和 2 中的表?

我可以通過GRANT SELECT為使用者 A 分配模式 1 和 2 的權限來做到這一點嗎?

看看 Oracle 對此類錯誤的說法。

ORA-00942 表或視圖不存在

**原因:**指定的表或視圖不存在,使用了此處不允許的同義詞,或者在需要表的地方引用了視圖。如果您嘗試訪問其他模式的表或視圖,那麼您可能不需要權限來執行此操作。

**行動:**你可以——

  • 檢查表或視圖名稱的拼寫。
  • 檢查現有的表或視圖名稱是否存在。
  • 如果需要創建表或者需要使用者或應用程序權限來訪問表,請聯繫 DBA。

以下是解決您的情況的範例。它顯示瞭如何授予SELECT對象權限以及如何創建同義詞。

SQL> create user userA identified by userA;

User created.

SQL> grant connect, resource to usera;

Grant succeeded.

SQL> conn userA/userA
Connected.
SQL> create table tab (id number);

Table created.

SQL> conn / as sysdba
Connected.
SQL> create user schema1 identified by schema1;

User created.

SQL> grant connect, resource to schema1;

Grant succeeded.

SQL> conn schema1/schema1
Connected.
SQL> create table tab1(id number);

Table created.

SQL> select * from usera.tab;
select * from usera.tab
                   *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> conn usera/userA
Connected.
SQL> grant select on tab to schema1;

Grant succeeded.

SQL> conn schema1/schema1
Connected.
SQL> select * from usera.tab;

no rows selected

SQL> create synonym for usera.tab;
create synonym for usera.tab
              *
ERROR at line 1:
ORA-00995: missing or invalid synonym identifier


SQL> create synonym usera_tab for usera.tab;
create synonym usera_tab for usera.tab
*
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> conn / as sysdba
Connected.

SQL> grant create synonym to schema1;

Grant succeeded.

SQL> conn schema1/schema1 
Connected.
SQL> create synonym usera_tab for usera.tab;

Synonym created.

SQL> select * from usera_tab;

no rows selected

SQL> 

引用自:https://dba.stackexchange.com/questions/134290