実稼働データベースに問題があります。パスワードの有効期限が切れており、パスワードを変更しましたが、まだ有効期限が切れていると表示されます。見知らぬ人でさえ、私は実動Webアプリケーションと開発Webアプリケーションを持っています。どちらも同じデータベースにアクセスします。実動Webアプリケーションは完全に機能し、開発Webアプリケーションでは常に次のようになります。
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
私はすでにサーバーにログインして、これをしました:
bash
cd /opt/Oracle/admin/<SID>
. ./setenv.ora
sqlplus / as sysdba
>sql: ALTER USER <user> IDENTIFIED BY <new password>;
以下に情報を示します ジムからのリクエスト :
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.
私は自分の設定が正しいことを100%確信しています。私はすべてのローカルデータを生産的なアプリサーバーのファイルで上書きしていました。まだ成功していません。
問題は、このパスワードの有効期限の問題が開発中に突然発生したことでもあるため、何も変更しなかったと確信しています。
しかし、テストシステムにログインし、そこでパスワードをリセットしました。私のテストシステムには100行、生産的なアプリには100万行が含まれているので、私は間違いなく正しいデータベースにいると言えるでしょう。
テストシステムのパスワードをリセットした後、再度ログインできます!したがって、このストーリー全体は非常に奇妙です。ご支援ありがとうございます。
Oracle DB(Oracle-XEのSAMPLEでも動作するはず)がUnix、ssh-in、および:
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
次の結果を投稿できますか?また、使用しているOracleのバージョンは何ですか? 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>'
使用しているプロファイルと設定を確認したいと思います。
私も同じ問題に直面していました。以下の手順に従って問題を解決した後、
dba_usersからユーザー名、プロファイル、account_status、expiry_dateを選択します。
「ALTER USER」を選択||ユーザー名|| '{password}で識別;;' account_statusが「EXPIRED%」およびユーザー名!=「XS $ NULL」のようなdba_usersから。
「ALTER USER」を選択||ユーザー名|| 'アカウントのロック解除;' account_statusが 'LOCKED%'およびユーザー名!= 'XS $ NULL'のようなdba_usersから。
プロファイルの変更DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
リファレンス: http://jaredsoablogaz.blogspot.in/2013/04/weblogic-server-not-starting-due-to.html
-サンディープ
SQLPlusと影響を受けるユーザーとDBに接続するだけです。 SQLPlusは、パスワードの変更を求めるプロンプトを表示します。
簡単な方法は、それをやるだけです:)
C:\>sqlplus /nolog
SQL> connect / as SYSDBA
SQL> select * from dba_profiles;
SQL> alter profile default limit password_life_time unlimited;
SQL> alter user hse identified by Oracle;
SQL> commit;
SQL> exit;
パスワードの有効期限のOracleで同様の問題に直面しました.PLSQLを起動しようとしたときにこの問題を解決するために、ユーザー名/パスワードでプロンプトが表示され、正しいパスワードを入力しましたが、パスワードのリセット入力とともにパスワード有効期限エラーが表示されます。パスワードをリセットした後、Oracleデータベースに接続できました。
このクエリを実行するだけです:
ALTER USER user_name IDENTIFIED BY new_user_name ;
ALTER USER user_name IDENTIFIED BY user_name ;
コミット;