Mientras no otorgue explícitamente un permiso, el usuario no lo tendrá. Solo usemos un pequeño excursus:
CREATE USER dummy IDENTIFIED BY password;
Ahora ese usuario existe, pero ni siquiera puede iniciar sesión en la base de datos. Todavía no tiene permisos. Solo después
GRANT CREATE SESSION TO dummy;
ese usuario puede iniciar sesión, pero no más. Para poder hacer cosas dentro de su propio esquema, generalmente se conceden cosas como
GRANT CREATE TABLE, CREATE VIEW, ALTER TABLE, DROP TABLE TO dummy;
Ahora puede hacer cosas, pero solo en su propio esquema. También puede insertar, actualizar, eliminar, pero aún está restringido a sus propios objetos. Para manipular (o incluso ver) los datos de otros usuarios, el otro usuario debe otorgar esto explícitamente:
GRANT SELECT ON some_table TO dummy;
o el DBA le otorga permisos globales:
GRANT SELECT ANY TABLE TO dummy;
Por lo tanto, tendrá que verificar qué permisos tiene el usuario. Como hay muchos permisos posibles, mi respuesta puede ser demasiado larga, pero especialmente tenga cuidado con los permisos, incluida la ANY
palabra clave (como en mi último ejemplo). Compruebe también los posibles roles otorgados a ese usuario, que pueden incluir dichos permisos. Al iniciar sesión como sysdba, puede verificarlos, por ejemplo, con la siguiente consulta:
SELECT granted_role
FROM dba_role_privs
WHERE grantee='DUMMY';
(tenga en cuenta el nombre de usuario MAYÚSCULAS aquí - que es cómo Oracle almacena internamente, y es sensible a mayúsculas). Para los primeros privilegios (directos) mencionados, esto sería:
SELECT privilege
FROM dba_sys_privs
WHERE grantee='DUMMY';
Una vez que haya descubierto los privilegios / roles otorgados a ese usuario especial que no debería tener, puede quitárselos, por ejemplo:
REVOKE SELECT ANY TABLE FROM dummy;