Hola amigos, hoy vamos a tratar una de las problemáticas más comunes a las que nos enfrentamos los DBA Oracle. ¿Cuántas veces estabas convencido de estar creando correctamente un usuario para un cliente y cuando le indicas al cliente que ya tiene su usuario creado… ¡El cliente te dice que está recibiendo error! Hablemos de los famosos errores ORA de Oracle.
Hoy trataremos algunos de los 10 errores ORA más comunes relacionados en cuanto a la asignación de permisos en usuarios en Oracle. Es posible que algunos ya los conozcas, ¡pero quizás otros no!
1. ORA-00942: Table or View Does Not Exist
Este error es causado por dos causas:
- El usuario está intentando consultar una tabla o vista que no existe.
- El usuario no tiene el permiso select asignado.
Solución:
GRANT SELECT ON propietario.tabla TO usuario;
2. ORA-01031: Insufficient Privileges
El usuario está intentando realizar una operación para la que no tiene privilegios de sistema o de objeto.
Solución:
-- Para conectarse
GRANT CREATE SESSION TO usuario;
-- Para crear tablas, vistas, etc.
GRANT CREATE TABLE, CREATE VIEW TO usuario;
3. ORA-01950: No Privileges on Tablespace
El usuario no tiene cuota asignada en el tablespace donde intenta crear objetos.
Solución:
ALTER USER usuario QUOTA UNLIMITED ON users;
4. ORA-06550 / PLS-00201: Identifier Must Be Declared
Falta el privilegio EXECUTE sobre un procedimiento o función.
Solución:
GRANT EXECUTE ON paquete.procedimiento TO usuario;
5. ORA-01917: User or Role Does Not Exist
Se intenta dar un permiso o asignar un rol a un usuario que no existe o se escribió mal.
Solución:
SELECT username FROM dba_users WHERE username = 'USUARIO';

6. ORA-02225: Invalid Grants on System Privileges
Se intenta otorgar un privilegio de sistema de forma incorrecta o sobre un objeto.
Solución:
-- Correcto
GRANT CREATE ANY TABLE TO usuario;
-- Incorrecto
GRANT CREATE TABLE ON esquema.tabla TO usuario;
7. ORA-02030: Can Only Select From Fixed Tables/View
Se intenta consultar información del diccionario sin los permisos adecuados.
Solución:
GRANT SELECT ANY DICTIONARY TO usuario;
8. ORA-04043: Object Does Not Exist
El objeto existe, pero el usuario no tiene permiso para verlo.
Solución:
GRANT SELECT ON esquema.objeto TO usuario;
9. ORA-00904: Invalid Identifier
Puede deberse a un error de nombre de columna o falta de permisos sobre vistas externas.
Para este caso disponemos de dos soluciones:
- Verifica los nombres correctamente.
- Otorga SELECT si es necesario:
GRANT SELECT ON esquema.vista TO usuario;
10. ORA-01921: Role Name Conflicts With Another User Or Role Name
Se intenta crear un rol con el mismo nombre que un usuario existente (no está permitido).
Para este caso volvemos a disponer de dos soluciones:
- Elige un nombre único para el rol.
- Verifica los existentes con:
SELECT username FROM dba_users;
SELECT role FROM dba_roles;
Para terminar, vamos a dejar a vuestra disposición unos consejos finales sobre cómo intentar evitar recibir estos errores:
-Usa vistas como DBA_TAB_PRIVS, DBA_SYS_PRIVS, ROLE_TAB_PRIVS y SESSION_PRIVS para diagnosticar.
-Otorga privilegios lo más específicamente posible (mejor evitar GRANT ALL).
-Utiliza roles personalizados para facilitar la gestión de permisos.
Los errores de permisos en Oracle no son sólo frustraciones del día a día: son señales de que la seguridad y la estructura del acceso a tus datos necesitan atención. Conocerlos y saber cómo resolverlos no solo evita bloqueos innecesarios, sino que también fortalece la integridad y eficiencia de tus sistemas.
Así que la próxima vez que veas un ORA-00942 o un ORA-01031… ¡no entres en pánico! Entra con conocimiento, y sal con control. En caso contrario, confía en los expertos en bases de datos Oracle.
¿Tienes otros errores que enfrentas a menudo? Cuéntanos en los comentarios o comparte este artículo con tu equipo. Porque dominar Oracle, empieza por entender sus límites… y saber cómo romperlos con permiso.
¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.
Sígue a GPS en LinkedIn
