Starting with Oracle Database 12.2.0.1 the orapwd utility – used to create Password Files for remote authentication – enforces complexity rules for the provided password.
Problem
When you try to create a password file with a less secure password, the orapwd terminates with an OPW-00029 error.
123 | $ orapwd file =$ORACLE_HOME /dbs/orapwDB01 password=oracle force=y OPW-00029: Password complexity failed for SYS user : Password must contain at least 8 characters. |
The provided password must succeed the validation of the following password characteristics (extracted from the orapwd utility code).
- Password must contain at least 8 characters
- Password must not contain double quotes
- Password must contain at least 1 letter
- Password must contain at least 1 digit
- Password must contain at least 1 special character
- Password must not contain the username
- Password must not contain username reversed
Solution
Use strong password
To get rid of the above error, provide a password which fulfills all complexity requirements.
1 | $ orapwd file =$ORACLE_HOME /dbs/orapwDB01 password=welcome1! force=y |
Create Password File in 12c format
If you cannot set a strong password, you can use the old 12c Release 1 format using the format parameter – the default for this parameter is 12.2.
1 | $ orapwd file =$ORACLE_HOME /dbs/orapwDB01 password=oracle format =12 force=y |
Using the older 12c format has the disadvantage, that the following features are not supported.
- Granting administrative privileges to external users
- Enable SSL and Kerberos authentication for administrative users
But you have the possibilty to migrate a Password File to a newer format. During this migration the password complexity rules are ignored. You have to use different names for the involved Password Files.
123456 | # Create dummy Password File with old format $ orapwd file =$ORACLE_HOME /dbs/orapwDB01 .tmp password=oracle format =12 # Migrate (copy) Password File to 12.2 format $ orapwd file =$ORACLE_HOME /dbs/orapwDB01 input_file=$ORACLE_HOME /dbs/orapwDB01 .tmp # Remove dummy Password File $ rm $ORACLE_HOME /dbs/orapwDB01 .tmp |
Conclusion
A strong password for remote authentication using SYSDBA, SYSBACKUP etc. privilege is a good starting point to archieve a higher level of security accessing the database from the outside. The decision of Oracle to enforce a strong(er) password during creation time of the Password File is a little but good enhancement of the orapwd utility.
To verify the format of your Password File, just use the describe command of the orapwd utility.
12 | $ orapwd describe file =$ORACLE_HOME /dbs/orapwDB01 Password file Description : format =12.2 |
References
credit: https://christian-gohmann.de/2017/05/08/orapwd-enforces-password-complexity-rules-in-12-2-0-1/