fnd_web_sec.change_password still works in R12.2.10. It is recommended to use it only in some special/urgent needs because it ignores the restrictions by EBS Profile options 'Signon%'.
Before change the password for troubleshooting, verify if the EBS account is disabled/inactive or not:
SQL> SELECT fu.user_name, fu.description, fu.start_date, fu.end_date,
CASE
WHEN fu.end_date IS NOT NULL and fu.end_date < SYSDATE THEN 'Inactive' ELSE 'Active' END AS account_status
FROM fnd_user fu
WHERE fu.user_name = 'EBS_userID'
-- and fu.end_date IS NOT NULL
-- and fu.end_date < SYSDATE
ORDER BY fu.user_name;
If it is inactive, run below statement to enable it if needed. And then even try to retrieve the passowrd.
SQL> exec apps.fnd_user_pkg.enableuser('EBS_userID');
If it becomes necessary, below statement by APPS will change EBS_userID password:
SQL> SELECT fnd_web_sec.change_password('EBS_userID','newPwd4U') FROM dual;
FND_WEB_SEC.CHANGE_PASSWORD('EBS_USERID','NEWPWD4U')
-------------------------------------------------------------------------------------
Y
You can use below line to confirm a password:
SQL> select fnd_web_sec.validate_login('EBS_userID', 'newPwd4U') from dual;
FND_WEB_SEC.VALIDATE_LOGIN('EBS_USERID','NEWPWD4U')
--------------------------------------------------------------------------------
Y
SQL> select fnd_web_sec.validate_login('EBS_userID', 'myPWD_01') from dual;
FND_WEB_SEC.VALIDATE_LOGIN('EBS_USERID','MYPWD_01')
--------------------------------------------------------------------------------
N
SQL> select fnd_message.get from dual;
GET
--------------------------------------------------------------------------------
PASSWORD_INVALID
One day, EBS users cannot log onto EBS site. The login webpage shows up but does not allow any users in. Since there is no error on EBS apps side, we do not know it is a security/password problem or other problems. I used below queries to show it is a database problem
SQL> show user
USER is "APPS"
SQL> select HOST_NAME, INSTANCE_NAME from v$instance;
HOST_NAME INSTANCE_NAME
------------------ -------------------------
ebsdb1q CEBSQA
SQL> select fnd_web_sec.validate_login('EBS_userID', 'XXXXxxx') from dual;
ERROR at line 1:
ORA-03113: end-of-file on communication channel
SQL> select sysdate from dual;
ERROR:
ORA-03114: not connected to ORACLE
NOTES 1: FND_WEB_SEC.validate_password( ) is aonther function.
SQL> select fnd_web_sec.validate_password('EBS_userID', 'newPwd4U') from dual;
FND_WEB_SEC.VALIDATE_PASSWORD('EBS_USERID','NEWPWD4U')
--------------------------------------------------------------------------------
N
SQL> select fnd_message.get from dual;
GET
--------------------------------------------------------------------------------
Must not reuse a recently used password. Please supply a different password.
NOTES 2: fnd_message.get can be used sometimes to get useful information. For example, after a Java load errored out in Sql*Plus, below line gives some details:
SQL> select fnd_message.get from dual;
GET
--------------------------------------------------------------------------------
Unable to load Java class oracle.apps.xxfnd.custom.security.PasswordValidation specified in profile option SIGNON_PASSWORD_CUSTOM. Please verify that the class exists and that it implements the Java interface oracle.apps.fnd.security.PasswordValidation.