Tengan en cuenta que a partir del Release 2 de Oracle Database 12c, el parámetro ALLOWED_LOGON_VERSION_SERVER tiene como valor numérico predeterminado 12.
Este valor predeterminado corresponde a un modo exclusivo como sigue: SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12
Este cambio en el modo de autenticación predeterminado del servidor hace que el antiguo "O3LOGON Hash" de la contraseña ( referido como la versión de la contraseña 10G ) no sea generado de facto para utilizarse para la autenticación.
En particular, los clientes sin la O5L_NP, modo de autenticación en 12c, pueden obtener el siguiente error al conectarse a la versión de Oracle Database 12c R2 (12.2) o posterior:
ORA-28040 "Sin protocolo de autenticación coincidente."
Para resolver esta situación existen dos formas de hacerlo:
- Puedes buscar el PSU al cliente en donde exista para añadir el indicador de capacidad O5L_NP.
- Cambiar el valor del parámetro en el archivo SQLNET.ORA a un valor compatible más bajo, para permitir la conexión.
Con respecto al punto 2, es necesario tener en cuenta, que a los usuarios ya previamente creados, deberás actualizar la contraseña, para activar el modo de autenticación O3LOGON.
Veamos una ilustración de cada caso:
Verificamos inicialmente la información del tipo de autentificación registrada para un usuario particular. En este caso utilicemos el usuario de pruebas HR.
SQL> connect sys@pdb1 as sysdba
Enter password:
Connected.
SQL> SELECT PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='HR';
PASSWORD_VER
------------
11G 12C
Como pueden observar, el método registrado para este usuario reconoce sólo los métodos de autentificación para 11g y 12c, ya que no se han hecho cambios en el valor del archivo SQLNET.ORA.
Vamos a crear un nuevo usuario, para verificar este comportamiento.
SQL> create user test identified by test;
User created.
SQL> SELECT PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='TEST';
PASSWORD_VER
------------
11G 12C
SQL> grant create session to test;
Grant succeeded.
SQL> connect test@pdb1
Enter password:
Connected.
SQL> exit
Ahora hagamos los cambios en la configuración del archivo de protocolo de comunicación.
[oracle@lab3 ~]$ cd $ORACLE_HOME
[oracle@lab3 dbhome_1]$ cd network
[oracle@lab3 network]$ cd admin
[oracle@lab3 admin]$ ls -la
total 28
drwxr-xr-x. 3 oracle oinstall 4096 Nov 12 12:06 .
drwxr-xr-x. 10 oracle oinstall 4096 Sep 23 13:48 ..
-rw-r--r--. 1 oracle oinstall 332 Sep 23 13:58 listener.ora
drwxr-xr-x. 2 oracle oinstall 4096 Sep 23 13:40 samples
-rw-r--r--. 1 oracle oinstall 1441 Aug 28 2015 shrept.lst
-rw-r--r--. 1 oracle oinstall 195 Sep 23 13:58 sqlnet.ora
-rw-r-----. 1 oracle oinstall 1061 Nov 12 12:06 tnsnames.ora
[oracle@lab3 admin]$ more sqlnet.ora
# sqlnet.ora Network Configuration File: /opt/app/oracle/product/12.2.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
[oracle@lab3 admin]$ vi sqlnet.ora
[oracle@lab3 admin]$ more sqlnet.ora
# sqlnet.ora Network Configuration File: /opt/app/oracle/product/12.2.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
En cursiva y negrita, tenemos la nueva línea que hemos agregado al archivo SQLNET.ORA. Ahora vamos a validar el comportamiento de este parámetro, recreado el usuario "test".
[oracle@lab3 admin]$ sqlplus sys@pdb1 as sysdba
SQL*Plus: Release 12.2.0.0.2 Beta on Fri Nov 25 00:17:39 2016
Copyright (c) 1982, 2015, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.2 - 64bit Beta
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> SELECT PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='TEST';
PASSWORD_VER
------------
11G 12C
SQL> drop user test;
User dropped.
SQL> create user test identified by test;
User created.
SQL> SELECT PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='TEST';
PASSWORD_VER
------------
10G 11G 12C
Listo ahora pueden ver como registra las opciones de autentificación O3LOGON y OL5_NP para nuestro usuario de pruebas.
Vamos a remover la línea de configuración del archivo SQLNET.ORA y actualizamos el password de nuestro usuario "test", para ver que sucede.
[oracle@lab3 ~]$ cd /opt/app/oracle/product/12.2.0/dbhome_1/network/admin/
[oracle@lab3 admin]$ ls -la
total 28
drwxr-xr-x. 3 oracle oinstall 4096 Nov 25 06:37 .
drwxr-xr-x. 10 oracle oinstall 4096 Sep 23 13:48 ..
-rw-r--r--. 1 oracle oinstall 332 Sep 23 13:58 listener.ora
drwxr-xr-x. 2 oracle oinstall 4096 Sep 23 13:40 samples
-rw-r--r--. 1 oracle oinstall 1441 Aug 28 2015 shrept.lst
-rw-r--r--. 1 oracle oinstall 234 Nov 25 03:10 sqlnet.ora
-rw-r-----. 1 oracle oinstall 1075 Nov 25 06:36 tnsnames.ora
Vamos a hacer los cambios en el archivo de configuración.
[oracle@lab3 admin]$ vi sqlnet.ora
[oracle@lab3 admin]$ more sqlnet.ora
# sqlnet.ora Network Configuration File: /opt/app/oracle/product/12.2.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
# SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
[oracle@lab3 admin]$ sqlplus sys@pdb1 as sysdba
SQL> SELECT PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='TEST';
PASSWORD_VER
------------
10G 11G 12C
Reasignamos nuevamente la clave de autentificación al usuario y vemos el resultado. Con esto terminamos el tema de manejo de conexiones a la base de datos con sistemas de autentificación distintos a los de facto en 12c.
SQL> alter user test identified by test;
User altered.
SQL> SELECT PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='TEST';
PASSWORD_VER
------------
11G 12C
No hay comentarios:
Publicar un comentario
Te agradezco tus comentarios. Te esperamos de vuelta.