Overview
In rare cases, the WebAFIS service may fail during startup with the following Oracle error visible in the application logs:
ORA-00001: unique constraint (%s.%s) violatedAlthough ORA-00001 normally indicates a duplicate insert/update in the database, this specific variant is misleading in the WebAFIS context.
The error:
occurs during service startup
is triggered while establishing the Oracle connection pool
does not contain a real constraint name (
%s.%sis displayed)
This behavior is related to Oracle client/driver handling during login.
Example log output:
FAST_CONN creating Oracle pool ! Unable to load application: OCIError: ORA-00001: unique constraint (%s.%s) violated rake aborted! OCIError: ORA-00001: unique constraint (%s.%s) violated connection_pool.c:144:in oci8lib_260.so
Root Cause
Although the error looks like a database uniqueness violation, in this startup scenario it is most commonly caused by:
Oracle Password Expiration Grace Period Warning
If the Oracle database account used by WebAFIS is approaching password expiration, Oracle generates a login warning:
ORA-28002: password will expire soon
Certain OCI/OCCI client versions may incorrectly handle this warning when connection pooling is enabled, resulting in the misleading startup failure:
ORA-00001: unique constraint (%s.%s) violated
This is therefore not an application-level unique constraint issue, but an Oracle account/password policy condition.
How to Confirm
Check Oracle Account Expiry Status (SYSDBA)
SELECT username, account_status, expiry_date FROM dba_users WHERE username = 'USER';
If the account is in EXPIRED(GRACE) or near expiration, this issue may occur during WebAFIS startup.
Resolution
Immediate Fix
Reset or change the password for the Oracle service account used by WebAFIS:
ALTER USER your_user IDENTIFIED BY "new_password";
Update the DB configuration for other services accordingly and restart the services.
Permanent Fix (Recommended for Service Accounts)
To prevent future startup failures, disable password expiration for technical/service accounts by adjusting the assigned profile:
ALTER PROFILE <profile_name> LIMIT PASSWORD_LIFE_TIME UNLIMITED; This prevents Oracle expiration warnings from being raised during login.