Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Obtendo ORA-01031:privilégios insuficientes ao consultar uma tabela em vez de ORA-00942:tabela ou visualização não existe


Você pode obter ORA-01031: insufficient privileges em vez de ORA-00942: table or view does not exist quando você tem pelo menos um privilégio na mesa, mas não o privilégio necessário.

Criar esquemas
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.

Criar objetos e privilégios

É incomum, mas possível, conceder a um esquema um privilégio como DELETE sem conceder 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.

Conecte-se como TEST_USER e tente consultar as tabelas

Isso mostra que ter algumas privilégio na tabela altera a mensagem de erro.
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>