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.

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” ):

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“:

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:

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.

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:

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”.

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

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

Verifiqué que las cuentas estaban efectivamente desbloqueadas:

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“:

Ejecuté el archivo como SYSDBA:

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

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

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 página Cómo desbloquear una cuenta de BBDD Oracle sin cambiar su contraseña ha sido originalmente publicada en MyBIJourney