Oracle
 sql >> Database >  >> RDS >> Oracle

Ottenere ORA-01031:privilegi insufficienti durante l'interrogazione di una tabella anziché ORA-00942:tabella o vista non esiste

Potresti ricevere ORA-01031: insufficient privileges invece di ORA-00942: table or view does not exist quando hai almeno un privilegio sul tavolo, ma non il privilegio necessario.

Crea schemi

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.

Crea oggetti e privilegi

È insolito, ma possibile, concedere a uno schema un privilegio come DELETE senza concedere 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.

Connettiti come TEST_USER e prova a interrogare le tabelle

Questo dimostra che averne alcuni privilegio sulla tabella cambia il messaggio di errore.

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>