sql >> Databáze >  >> RDS >> Oracle

Získání ORA-01031:nedostatečná oprávnění při dotazování na tabulku místo ORA-00942:tabulka nebo pohled neexistuje

Můžete získat ORA-01031: insufficient privileges místo ORA-00942: table or view does not exist když máte na stole alespoň jedno privilegium, ale ne nutné oprávnění.

Vytvářejte schémata

SQL> create user schemaA identified by schemaA;

User created.

SQL> create user schemaB identified by schemaB;

User created.

SQL> create user test_user identified by test_user;

User created.

SQL> grant connect to test_user;

Grant succeeded.

Vytváření objektů a oprávnění

Je neobvyklé, ale možné udělit schématu oprávnění jako DELETE bez udělení SELECT.

SQL> create table schemaA.table1(a number);

Table created.

SQL> create table schemaB.table2(a number);

Table created.

SQL> grant delete on schemaB.table2 to test_user;

Grant succeeded.

Připojte se jako TEST_USER a zkuste se dotazovat na tabulky

To ukazuje, že máte nějaké oprávnění na tabulce změní chybovou zprávu.

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


SQL> select * from schemaB.table2;
select * from schemaB.table2
                      *
ERROR at line 1:
ORA-01031: insufficient privileges


SQL>


  1. Příkaz GROUP BY + CASE

  2. Spusťte velký SQL skript (s příkazy GO)

  3. Špinavá tajemství výrazu CASE

  4. Dotaz na uloženou proceduru pro její názvy parametrů a typy