Cómo desbloquear una cuenta de BBDD Oracle sin cambiar su contraseña

A veces se necesita desbloquear una cuenta de BBDD Oracle sin restablecer su contraseña. Una solución consiste en utilizar el paquete de utilidades “DBMS_metadata” para obtener el “hash” de la contraseña y desbloquear la cuenta sin conocer su contraseña. En este tutorial vamos a ver cómo lo hice.

Desbloquear una cuenta de BBDD Oracle
Desbloquear una cuenta de BBDD Oracle

Esta mañana estaba iniciando los servidores de Oracle BI cuando recibí el mensaje de error “Failed to start one or more Servers (return 3)” (“Error al iniciar uno o más servidores” ):

Error al iniciar uno o más servidores
Error al iniciar uno o más servidores

Todo funcionaba perfectamente antes y no había modificado la configuración del servidor recientemente. Estaba desconcertado y decidí comprobar si había algún mensaje de error “ORA” en el archivo “AdminServer.out“:

grep "ORA" AdminServer.out
grep “ORA” AdminServer.out

El origen del problema estaba claramente identificado con las líneas “java.sql.SQLException: ORA-28001: the password has expired”: la contraseña de algunas cuentas de base de datos había caducado. Recordé que hace unas semanas había modificado la contraseña de la cuenta de base de datos “system” después de recibir un mensaje de advertencia “ORA-28002: the password will expire within 7 days” (la contraseña caducará en 7 días). Seguramente lo mismo estaba ocurriendo ahora con las cuentas de BBDD Oracle utilizadas por la instalación del servidor Oracle BI. Puede ver cómo creé un perfil de usuario de Oracle 19c DB para desactivar la caducidad de la contraseña en esta página.

Utilice “sqlplus” para conectarme a la instancia de BBDD Oracle como sysdba. Seleccioné la PDB utilizada por el servidor Oracle BI y busqué si había usuarios “BI” (el prefijo que había elegido durante la instalación) con una contraseña caducada:

SELECT username, account_status, profile FROM dba_users where username like 'BI_%' AND (account_status like '%EXPIRED%' or account_status like '%LOCKED%') ORDER BY username;
SELECT username, account_status, profile FROM dba_users where username like ‘BI_%’ AND (account_status like ‘%EXPIRED%’ or account_status like ‘%LOCKED%’) ORDER BY username;

Como puede ver en la captura de pantalla anterior, siete cuentas “BI” de base de datos tenían una contraseña caducada. Esto se resuelve comúnmente desbloqueando las cuentas de la base de datos con una nueva contraseña. Pero estas cuentas habían sido creadas durante la instalación y la configuración inicial del servidor Oracle BI, y no estaba seguro de poder actualizar fácilmente la configuración de este servidor con las nuevas contraseñas. Otra solución habría sido desbloquear estas cuentas reutilizando sus contraseñas actuales. Pero esto requería conocer estas contraseñas.

Afortunadamente, había otra solución: podía usar “DBMS_METADATA.GET_DDL()” para obtener la definición de las cuentas de base de datos con los “hashes” de las contraseñas actuales. Podía luego usar estos “hashes” para modificar las cuentas sin conocer sus contraseñas.

Quería almacenar la información en un archivo de texto para poder usarla, así que cambié los parámetros de configuración que se muestran en la figura inferior para evitar que los valores “hash” estuvieran en varias líneas y almacené la salida de las sentencias en el archivo BI_USERS.txt.

SPOOL BI_USERS.txt
SPOOL BI_USERS.txt

Ejecuté la sentencia “select DBMS_METADATA.GET_DDL(‘USER’, ‘cuentausuario’) from dual;” para las siete cuentas de base de datos “BI” bloqueadas. La cadena de texto larga después del “IDENTIFIED BY VALUES” era el “hash” de la contraseña:

select DBMS_METADATA.GET_DDL('USER', 'BI_PLATFORM') from dual;"
select DBMS_METADATA.GET_DDL(‘USER’, ‘BI_PLATFORM’) from dual;”

Abrí con un editor el archivo BI_USERS.txt que se había generado y copié las líneas “CREATE USER … IDENTIFIED BY VALUES” con los “hashes” de las contraseñas en un nuevo archivo que llamé “ALTER_BI_USERS.sql”.

CREATE USER "BI_PLATFORM" IDENTIFIED BY VALUES "password_hash_value"
CREATE USER “BI_PLATFORM” IDENTIFIED BY VALUES “password_hash_value”

Reemplacé las sentencias “CREATE USER” por sentencias “ALTER USER” en este archivo y lo guardé como ALTER_BI_USERS.sql.

ALTER USER statements
ALTER USER statements

Ejecuté el archivo como SYSDBA para desbloquear los siete usuarios BI reutilizando los “hashes” de las contraseñas actuales.

@ALTER_BI_USERS.sql
@ALTER_BI_USERS.sql

Verifiqué que las cuentas estaban efectivamente desbloqueadas:

SELECT username, account_status, profile from dba_users;
SELECT username, account_status, profile from dba_users;

Decidí asociar estas cuentas con el perfil NOPWDEXPIRATION que había creado en un tutorial anterior para evitar que las contraseñas de las cuentas caduquen en el futuro. Creé un pequeño archivo ALTER_BI_USERS_PROFILE.sql con las sentencias “ALTER USER … PROFILE C##NOPWDEXPIRATION;” para asignar este perfil a las cuentas “BI“:

ALTER USER ... PROFILE C##NOPWDEXPIRATION;
ALTER USER … PROFILE C##NOPWDEXPIRATION;

Ejecuté el archivo como SYSDBA:

@ALTER_BI_USERS_PROFILE.sql
@ALTER_BI_USERS_PROFILE.sql

Reinicié los servidores Oracle BI y después de unos minutos tuve la confirmación de que esta vez se habían iniciado correctamente:

Finished starting servers
Finished starting servers

Abrí un navegador web y me conecté a Oracle BI Analytics para realizar una última comprobación:

Oracle BI Analytics
Oracle BI Analytics

Todo funcionaba bien otra vez, ¡genial!

Conclusión: no olvide deshabilitar la política de caducidad de la contraseña para las cuentas de BBDD BI creadas durante la instalación y configuración de un servidor Oracle BI!

Descargo de responsabilidad

La información contenida en este sitio web es solo para fines de información general. Tratamos de mantener esta información actualizada y correcta, pero no asumimos ninguna responsabilidad por errores u omisiones en el contenido del sitio web. El Portal no garantiza ni asume responsabilidad alguna respecto a los posibles daños y perjuicios causados por el uso y utilización de la información o de los gráficos contenidos en el sitio web.

La página Cómo desbloquear una cuenta de BBDD Oracle sin cambiar su contraseña ha sido originalmente publicada en MyBIJourney

Todas las marcas comerciales mencionadas pertenecen a sus respectivos propietarios.
FacebookTwitterPinterestWhatsAppMail