lunes, 7 de septiembre de 2015

ERROR ORA-01017: invalid username/password; logon denied

Si estamos intentando logarnos en una base de datos Oracle y por desconocer la contraseña o el usuario no podemos realizarlo, necesitaremos acceder a ella de una manera especial para poder cambiar la password de usuario en cuestión o chequear su nombre. Esto vale para cualquier usuario incluidos los usuarios SYS y SYSTEM.
Cuando se realiza la instalación de Oracle XE en linux, se añade al sistema el usuario oracle pero sin contraseña. Lo primero que tendremos que hacer es ponerle una contraseña al usuario, si no se la hemos puesto, realizando lo siguiente:

1-Nos logamos como root en el sistema.
[root@oracle ~]#su -
Password:

2-Ahora nos logamos con el usuario oracle
[root@oracle ~]#su - oracle

3-Le cambiamos la contraseña con el comando passwd
-bash-3.2$  passwd oracle
Changing password for user oracle.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

Antes de continuar deberemos tener bien definidas las variables de entorno si no nos dará errores tales como SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory, SP2-0667: Message file sp1<lang>.msb not found, ...etc. Para definirlas deberemos lanzar las siguientes sentencias:

-bash-3.2$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
-bash-3.2$ export ORACLE_SID=XE
-bash-3.2$ export PATH=$ORACLE_HOME/bin:$PATH

Tras esto entramos en el directorio donde se encuentra el comando sqlplus y lo lanzamos con los parámetros que a continuación se indican:

-bash-3.2$ cd /u01/app/oracle/product/11.2.0/xe/bin/
-bash-3.2$ ./sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Mon Aug 31 15:22:20 2015
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> 

Una vez estemos dentro podremos realizar cualquier acción sobre la base de datos (cambiar la contraseña de un usuario, darle permisos sobre un tablespace,...etc). Como en la mayoría de los casos el error "ORA-01017: invalid username/password; logon denied" se debe a no conocer el nombre correcto o la contraseña correcta de un usuario realizaremos lo siguiente:

1-Lanzamos la consulta que pongo a continuación para ver los usuarios dados de alta en el servidor de base de datos (en mi caso están solo los usuarios que se generan por defecto en todas las instalaciones).

SQL> SELECT USERNAME FROM DBA_USERS;

USERNAME
------------------------------
SYSTEM
SYS
ANONYMOUS
APEX_PUBLIC_USER
APEX_040000
OUTLN
XS$NULL
XDB
CTXSYS
MDSYS
FLOWS_FILES
HR

2-Cambiamos la contraseña que tiene el usuario system por la que queramos. En mi caso estableceré 12345678 como nueva contraseña con la siguiente consulta (la estructura es alter user usuario identified by “password”; ):

SQL> alter user system identified by “12345678”;
User altered.

Tras esto podremos realizar login con el siguiente comando si ningún problema:
-bash-3.2$ ./sqlplus system/12345678

No hay comentarios:

Publicar un comentario