Oracle
 sql >> Base de données >  >> RDS >> Oracle

Obtention de ORA-01031 :privilèges insuffisants lors de l'interrogation d'une table au lieu de ORA-00942 :la table ou la vue n'existe pas

Vous pouvez obtenir ORA-01031: insufficient privileges au lieu de ORA-00942: table or view does not exist lorsque vous avez au moins un privilège sur la table, mais pas le privilège nécessaire.

Créer des schémas

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.

Créer des objets et des privilèges

Il est inhabituel, mais possible, d'accorder à un schéma un privilège tel que DELETE sans accorder 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.

Connectez-vous en tant que TEST_USER et essayez d'interroger les tables

Cela montre qu'avoir certains privilège sur la table modifie le message d'erreur.

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>