Un saludo, en este post pondré algunos de los errores típicos que ocurren cuando trabajas con bases de datos Oracley su solución (obviamente probada por especialistas).
ORA-06413 - Connection not open
(No se puede abrir la conexión)
Ejemplo: Queres conectarte a una base de datos Oracle desde el manejador de Bases de Datos Toad for Oracle en un equipo con Windows 7.
Causa: El problema es ocasionado por un bug de Oracle, el cual no permite reconocer cuando ejecutas el manejador desde una carpeta con un Path similar a Crogram Files (x86)Quest Software. (x86) es el causante del problema debido al paréntesis.
Soluciones:
+Instala tu manejador de base de datos en otra carpeta que no posea ese '(x86)' por ejemplo en Crogram FilesQuest Software.
+Bajate una versión portable del Toad y guardala en un directorio que no posea caracteres que den problema.
ORA-12154: TNS:could not resolve the connect identifier specified
(No es posible conectarse al identificador especificado)
Ejemplo: Cuando acabas de instalar una base de datos o un cliente de Oracle en un equipo y queres conectarte con los parametros que has definido.
Causas:
+Mala configuracion del TNSNAMES.ORA.
+No se localiza el repositorio donde esta el identificador del nombre del servicio
Soluciones:
+Revisa el archivo TNSNAMES.ORA de la base de datos o del cliente que estes utilizando y revisa los parámetros de configuración, los más importantes son el HOST, el SID y el ALIAS de la base de datos, mira si coinciden con los datos del equipo que posee la base de datos (el servidor). El TNSNAMES lo encontras por lo general en alguna carpeta llamada Network o bien en NET80 en el caso de algunos clientes ORACLE.
Un típico TNSNAMES de la base de datos es el siguiente:
Aqui_pones_el_alias =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =Aqui_va_el_nombre_del_servidor) (PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Aqui_el_nombre_del_servicio)
)
)
+Revisate bien el nombre del servicio que concuerde con el nombre que Windows le proporciona, en el caso de una base de datos Oracle XE siempre será el servicio XE, en otras instalaciones el servicio se llamará como se le bautiza al momento de crear la base de datos.
ORA-00936: missing expression
(Expresion perdida)
Ejemplo: Estas ejecutando Queryes y de repente te salta este pequeñisimo error.
Causas:
+Andas desconcentrado.
+No sabes SQL o PL/SQL
+Se te olvido la sintaxis.
Soluciones:
+Busca en algun sitio como es la sintaxis de la expresion que buscas.
ORA-01031: insufficient privileges
(privilegios insuficientes)
Ejemplo: Quieres agregar un sinónimo o eliminar algo en especial de una base de datos.
Causas:
+ Tu usuario actual no tiene permisos suficientes para ejecutar la acción.
Soluciones:
+Consulta con tu DBA(Administrador de Base de Datos) si es posible agregar permisos. Si sos tu propio DBA y has creado un usuario y quieres ejecutar alguna acción proporcionale los permisos para realizarlo, lo más sencillo es que te conectes con el usuario SYSTEM y pongas al contraseña que le pusiste a tu base de datos cuando la instalaste y le das GRANT DBA, RESOURCE to Nombre_del_usuario, ya con eso tu usuario tiene permisos full para hacer y deshacer.
ORA-00942: table or view does not exist
(Tabla o vista no existe)
Ejemplo: queres seleccionar la data existentea través de un Query y te das cuenta de este pequeño error.
Causas:
+En realidad no has creado la tabla.
+El usuario que estas usando no tiene privilegios o no han sido creados los sinónimos necesarios para ver la data de la tabla que buscas.
Soluciones:
+Dale privilegios al usuario que utilizas o pide los privilegios.
+Verifica que en realidad exista la tabla, y si la necesitas y no existe creala.
+Crea el sinónimo para revisar la tabla, lo más practico es que lo crees Publico.
ORA-06502: PL/SQL: numeric or value error string
(Error Numérico o de valor)
Ejemplo:
Estoy seguro que más de alguna vez se han encontrado con este error, es bastante común y a veces quiebra la cabeza en la mayoría de los casos es ocasionado cuando declaraste las columnas de una tabla.
Causa:
+Algún campo fue declarada con una extensión menor a la que intentas insertar.
+Quieres meter otro tipo de datos dentro de un campo numérico.
Solución:
+Haz mas larga la extensión de la columna, si por ejemplo tienes una columna con tipo Number(2,0) y el número que estás insertando es 100 es obvio que no podrá ser ingresado, alterala y ponla de tipo Number(4,0) o que se yo lo que estimes conveniente.
+Cambiale el tipo a VARCHAR o el que creas conveniente para usar números y letras o los caracteres que necesites.
ORA-00955: name is already used by an existing object
(El nombre esta siendo usado por un objeto existente)
Ejemplo: Cuando estas creando una tabla o un sinónimo.
Causa:
+Estas creando un objeto (sinónimo, usuario, tabla,etc.) con un nombre de otro objeto que ya existe en tu esquema.
Solución:
+Dale un nombre único al objeto, si por ejemplo tienes una tabla que se llama VENTAS, crea otra con un nombre VENTASM, o que se yo ingeniate un nombre que sea único.
Espero que les sirva si tienen algunas preguntas sobre errores y sus posibles soluciones haganmelas en privado o en este mismo post, actualmente trabajo con Bases de Datos Oracle en una empresa de Tecnología y pues ya hay un poquitín de experiencia acumulada. En especial para los Junior ya se les puede dar una mano.
ORA-06413 - Connection not open
(No se puede abrir la conexión)
Ejemplo: Queres conectarte a una base de datos Oracle desde el manejador de Bases de Datos Toad for Oracle en un equipo con Windows 7.
Causa: El problema es ocasionado por un bug de Oracle, el cual no permite reconocer cuando ejecutas el manejador desde una carpeta con un Path similar a Crogram Files (x86)Quest Software. (x86) es el causante del problema debido al paréntesis.
Soluciones:
+Instala tu manejador de base de datos en otra carpeta que no posea ese '(x86)' por ejemplo en Crogram FilesQuest Software.
+Bajate una versión portable del Toad y guardala en un directorio que no posea caracteres que den problema.
ORA-12154: TNS:could not resolve the connect identifier specified
(No es posible conectarse al identificador especificado)
Ejemplo: Cuando acabas de instalar una base de datos o un cliente de Oracle en un equipo y queres conectarte con los parametros que has definido.
Causas:
+Mala configuracion del TNSNAMES.ORA.
+No se localiza el repositorio donde esta el identificador del nombre del servicio
Soluciones:
+Revisa el archivo TNSNAMES.ORA de la base de datos o del cliente que estes utilizando y revisa los parámetros de configuración, los más importantes son el HOST, el SID y el ALIAS de la base de datos, mira si coinciden con los datos del equipo que posee la base de datos (el servidor). El TNSNAMES lo encontras por lo general en alguna carpeta llamada Network o bien en NET80 en el caso de algunos clientes ORACLE.
Un típico TNSNAMES de la base de datos es el siguiente:
Aqui_pones_el_alias =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =Aqui_va_el_nombre_del_servidor) (PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Aqui_el_nombre_del_servicio)
)
)
+Revisate bien el nombre del servicio que concuerde con el nombre que Windows le proporciona, en el caso de una base de datos Oracle XE siempre será el servicio XE, en otras instalaciones el servicio se llamará como se le bautiza al momento de crear la base de datos.
ORA-00936: missing expression
(Expresion perdida)
Ejemplo: Estas ejecutando Queryes y de repente te salta este pequeñisimo error.
Causas:
+Andas desconcentrado.
+No sabes SQL o PL/SQL
+Se te olvido la sintaxis.
Soluciones:
+Busca en algun sitio como es la sintaxis de la expresion que buscas.
ORA-01031: insufficient privileges
(privilegios insuficientes)
Ejemplo: Quieres agregar un sinónimo o eliminar algo en especial de una base de datos.
Causas:
+ Tu usuario actual no tiene permisos suficientes para ejecutar la acción.
Soluciones:
+Consulta con tu DBA(Administrador de Base de Datos) si es posible agregar permisos. Si sos tu propio DBA y has creado un usuario y quieres ejecutar alguna acción proporcionale los permisos para realizarlo, lo más sencillo es que te conectes con el usuario SYSTEM y pongas al contraseña que le pusiste a tu base de datos cuando la instalaste y le das GRANT DBA, RESOURCE to Nombre_del_usuario, ya con eso tu usuario tiene permisos full para hacer y deshacer.
ORA-00942: table or view does not exist
(Tabla o vista no existe)
Ejemplo: queres seleccionar la data existentea través de un Query y te das cuenta de este pequeño error.
Causas:
+En realidad no has creado la tabla.
+El usuario que estas usando no tiene privilegios o no han sido creados los sinónimos necesarios para ver la data de la tabla que buscas.
Soluciones:
+Dale privilegios al usuario que utilizas o pide los privilegios.
+Verifica que en realidad exista la tabla, y si la necesitas y no existe creala.
+Crea el sinónimo para revisar la tabla, lo más practico es que lo crees Publico.
ORA-06502: PL/SQL: numeric or value error string
(Error Numérico o de valor)
Ejemplo:
Estoy seguro que más de alguna vez se han encontrado con este error, es bastante común y a veces quiebra la cabeza en la mayoría de los casos es ocasionado cuando declaraste las columnas de una tabla.
Causa:
+Algún campo fue declarada con una extensión menor a la que intentas insertar.
+Quieres meter otro tipo de datos dentro de un campo numérico.
Solución:
+Haz mas larga la extensión de la columna, si por ejemplo tienes una columna con tipo Number(2,0) y el número que estás insertando es 100 es obvio que no podrá ser ingresado, alterala y ponla de tipo Number(4,0) o que se yo lo que estimes conveniente.
+Cambiale el tipo a VARCHAR o el que creas conveniente para usar números y letras o los caracteres que necesites.
ORA-00955: name is already used by an existing object
(El nombre esta siendo usado por un objeto existente)
Ejemplo: Cuando estas creando una tabla o un sinónimo.
Causa:
+Estas creando un objeto (sinónimo, usuario, tabla,etc.) con un nombre de otro objeto que ya existe en tu esquema.
Solución:
+Dale un nombre único al objeto, si por ejemplo tienes una tabla que se llama VENTAS, crea otra con un nombre VENTASM, o que se yo ingeniate un nombre que sea único.
Espero que les sirva si tienen algunas preguntas sobre errores y sus posibles soluciones haganmelas en privado o en este mismo post, actualmente trabajo con Bases de Datos Oracle en una empresa de Tecnología y pues ya hay un poquitín de experiencia acumulada. En especial para los Junior ya se les puede dar una mano.

