Si comme moi vous avez récemment construit une instance en 12cR2 et que vous n'arrivez pas à vous connecter en tant que SYSTEM sur votre base, alors que vous avez pourtant bien réinitialisé à plusieurs reprises le password du compte (et probablement l'avez délocké un bon nombre de fois), alors vous allez apprécier ce petit article !
Afin d'éclairer sur le problème que j'ai rencontré, voici un exemple après avoir modifié le password du compte system après la création de l'instance, et tenter de m'y connecter :
SQL> alter user system identified by "mypass"; SQL> select username , account_status from dba_users where username ='SYSTEM'; USERNAME ACCOUNT_STATUS ------------------------ -------------------------------- SYSTEM OPEN SQL> connect system/mypass ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE.
En utilisant un ALIAS TNS, sait on jamais ...
SQL> connect system/mypass@ORADB1 ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE.
Pareil, mais en SYS cela fonctionne pourtant bien :
SQL> connect sys/mypass@ORADB1 as sysdba Connected.
Après un petit mal au crane j'ai du me résigner et me rendre sur le support oracle pour y découvrir une note qui, une fois n'est pas coutume, concerne à 100% mon problème !
Il s'agit de la note ID 2075401.1 qui indique que la conjonction des paramètres SEC_CASE_SENSITIVE_LOGON (instance) et de SQLNET.ALLOWED_LOGON_VERSION_SERVER (sqlnet.ora) serait la cause de cette erreur.
"The new Exclusive Mode default for password-based authentication
in Oracle 12.2 conflicts with case-insensitive password configurations."
Et en effet, le fait d'avoir SQLNET.ALLOWED_LOGON_VERSION_SERVER de non renseigné dans le sqlnet.ora ET d'avoir SEC_CASE_SENSITIVE_LOGON de configuré à FALSE (non default) empêche toute connexion à la base, excepté pour le user SYS.
Note :
Par défaut en 12.2, si SQLNET.ALLOWED_LOGON_VERSION_SERVER n'est pas renseigné, oracle fixe sa valeur défaut à 12 (exclusive mode)
Cf documentation ICI
Comme je rentre pile poil dans ce cas, je prend la solution de fixer SEC_CASE_SENSITIVE_LOGON à TRUE, et cela passe !
SQL> connect system/mypass ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. SQL> connect sys/mypass@ORADB1 as sysdba Connected. SQL> alter system set sec_case_sensitive_logon=TRUE ; System altered. SQL> connect system/mypass Connected
Et le tour est joué !
Attention cependant car en 12.2 l'usage de SEC_CASE_SENSITIVE_LOGON a été déprécié et il est recommandé de gérer la connectivité à la base via le fichier SQLNET.ORA.
LAMI-DBA
commentaires