Je suis confronté à un problème avec ma base de données de production. Le mot de passe a expiré et bien que j'ai changé le mot de passe, il indique toujours qu'il a expiré. Encore plus étrange, j'ai une application Web de production et une application de développement Web. Les deux accèdent à la même base de données. L'application Web de production fonctionne parfaitement et, avec l'application Web de développement, je reçois toujours:
10:25:42,919 WARN [JBossManagedConnectionPool] Throwable while attempting to get a new connection: null
org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (Java.sql.SQLException: ORA-28001: the password has expired
)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.Java:225)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.Java:195)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.Java:633)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.Java:267)
at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.Java:622)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.Java:404)
at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.Java:381)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.Java:496)
at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.Java:941)
at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.Java:89)
at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPassword(DatabaseServerLoginModule.Java:173)
at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.Java:245)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:601)
at javax.security.auth.login.LoginContext.invoke(LoginContext.Java:784)
at javax.security.auth.login.LoginContext.access$000(LoginContext.Java:203)
at javax.security.auth.login.LoginContext$4.run(LoginContext.Java:698)
at javax.security.auth.login.LoginContext$4.run(LoginContext.Java:696)
at Java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.Java:695)
at javax.security.auth.login.LoginContext.login(LoginContext.Java:594)
at org.jboss.security.plugins.auth.JaasSecurityManagerBase.defaultLogin(JaasSecurityManagerBase.Java:552)
at org.jboss.security.plugins.auth.JaasSecurityManagerBase.authenticate(JaasSecurityManagerBase.Java:486)
at org.jboss.security.plugins.auth.JaasSecurityManagerBase.isValid(JaasSecurityManagerBase.Java:365)
at org.jboss.security.plugins.JaasSecurityManager.isValid(JaasSecurityManager.Java:160)
at org.jboss.web.Tomcat.security.JBossWebRealm.authenticate(JBossWebRealm.Java:384)
at org.Apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.Java:258)
at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:417)
at org.jboss.web.Tomcat.security.JaccContextValve.invoke(JaccContextValve.Java:92)
at org.jboss.web.Tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.Java:126)
at org.jboss.web.Tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.Java:70)
at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:127)
at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:102)
at org.jboss.web.Tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.Java:158)
at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:109)
at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:330)
at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:829)
at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:598)
at org.Apache.Tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.Java:447)
at Java.lang.Thread.run(Thread.Java:722)
Caused by: Java.sql.SQLException: ORA-28001: the password has expired
at Oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.Java:439)
at Oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.Java:388)
at Oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.Java:381)
at Oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.Java:564)
at Oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.Java:431)
at Oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.Java:436)
at Oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.Java:186)
at Oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.Java:366)
at Oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.Java:752)
at Oracle.jdbc.driver.T4CConnection.logon(T4CConnection.Java:359)
at Oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.Java:531)
at Oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.Java:221)
at Oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.Java:32)
at Oracle.jdbc.driver.OracleDriver.connect(OracleDriver.Java:503)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.Java:207)
... 41 more
Je me suis déjà connecté au serveur et ai fait ceci:
bash
cd /opt/Oracle/admin/<SID>
. ./setenv.ora
sqlplus / as sysdba
>sql: ALTER USER <user> IDENTIFIED BY <new password>;
Voici les informations demandées par Jim :
SQL> select * from dba_users where username = 'user';
USERNAME USER_ID PASSWORD ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE
------------------------------ ---------- ------------------------------ -------------------------------- ------------------- -------------------
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE CREATED PROFILE INITIAL_RSRC_CONSUMER_GROUP
------------------------------ ------------------------------ ---------------------- ------------------------------ ------------------------------
EXTERNAL_NAME
------------------------------------------------------------------------------------------------------------------------------------------------------
PASSWORD E AUTHENTI
-------- - --------
<user> 50 OPEN
<userDAT> TEMP 29.07.2010 17:38:32 DEFAULT DEFAULT_CONSUMER_GROUP
10G 11G N PASSWORD
SQL> select p.* from dba_users u, dba_profiles p where u.profile = p.profile and u.userName = 'user';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------------------------------------
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED
DEFAULT CPU_PER_SESSION KERNEL UNLIMITED
DEFAULT CPU_PER_CALL KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT CONNECT_TIME KERNEL UNLIMITED
DEFAULT PRIVATE_SGA KERNEL UNLIMITED
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
16 rows selected.
Je suis à 100% sûr que ma configuration est correcte. J'écrasais toutes les données locales avec les fichiers du serveur d'applications productif. Toujours pas de succès.
Le problème est aussi que ce problème d’expiration de mot de passe est venu soudainement alors qu’il se développait, alors je suis sûr de ne rien changer.
Cependant, je me suis connecté au système de test et y ai réinitialisé le mot de passe. Mon système de test contient environ 100 lignes, mon application productive environ 1 million, je peux donc vous dire que je suis sur la bonne base de données.
Après avoir réinitialisé le mot de passe du système de test, je peux me reconnecter! Donc toute cette histoire est très étrange. Merci pour le soutien.
En supposant que la base de données Oracle (devrait également fonctionner pour SAMPLE d’Oracle-XE) est sous Unix, ssh-in et:
sqlplus /nolog
SQL> connect / as SYSDBA
Connected.
SQL> SELECT username, account_status FROM dba_users WHERE ACCOUNT_STATUS LIKE '%EXPIRED%';
# ... your locked account should be listed ...
SQL> ALTER USER sample IDENTIFIED BY sample;
User altered.
SQL> ALTER USER sample ACCOUNT UNLOCK;
User altered.
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.
SQL> exit
Pouvez-vous afficher les résultats de ce qui suit? En outre, quelle version d'Oracle utilisez-vous? Je suppose 11G?
select *
from dba_users
where username = '<yourUserName>'
select p.*
from dba_users u
, dba_profiles p
where u.profile = p.profile
and u.userName = '<yourUserName>'
Je serais curieux de voir quel profil vous utilisez et quels sont vos paramètres.
Même je faisais face au même problème. Le problème a été résolu après avoir suivi les étapes mentionnées ci-dessous,
sélectionnez nom d'utilisateur, profil, status_compte, date d'expiration de dba_users;
sélectionnez 'ALTER USER' || nom d'utilisateur || 'identifié par {mot de passe};' de dba_users où account_status comme 'EXPIRED%' et nom d'utilisateur! = 'XS $ NULL';
sélectionnez 'ALTER USER' || nom d'utilisateur || "compte déverrouillé;" de dba_users où account_status comme 'LOCKED%' et nom d'utilisateur! = 'XS $ NULL';
modifier le profil DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Référence: http://jaredsoablogaz.blogspot.in/2013/04/weblogic-server-not-starting-due-to.html
-Sandeep
Connectez-vous simplement avec SQLPlus et l'utilisateur concerné à votre base de données. SQLPlus vous demandera de changer votre mot de passe.
J'ai rencontré un problème similaire avec l'expiration du mot de passe Oracle. Pour résoudre ce problème lorsque j'ai essayé de lancer PLSQL, le nom d'utilisateur/mot de passe m'a été demandé. Après avoir réinitialisé mon mot de passe, j'ai pu me connecter à la base de données Oracle.
il suffit d'exécuter cette requête:
ALTER USER user_name IDENTIFIED BY new_user_name ;
ALTER USER user_name IDENTIFIED BY user_name ;
commettre;