При миграции с Oracle Database 10g может возникнуть пренеприятнейшая ситуация с тем, что после переезда возможно получить пул заблокированных пользователей, включая SYSTEM
ORA-39384: Warning: User READONLYUSER has been locked and the password expired.
ORA-39384: Warning: User USER has been locked and the password expired.
ORA-39384: Warning: User SUPERROOT has been locked and the password expired.
Связано это с тем, что до oracle 10g включительно пароли не CASE INSENSITIVE.
Более того, такие проблемы представлены в непубличных багах оракла с говорящими названиями:
- USERS LOCKED AND PASSWD EXPIRED AFTER MIGRATE DB 10205 TO 12.2
- SHOULD NO LONGER IMPORT 10G VERIFIERS BY DEFAULT. Since 10g style verifiers are no longer supported in 12.2
- DataPump will mark such users as locked and expire the password when they are imported.
- Oracle 12.2 requires a new password encryption algorithm which is different from Oracle 10g.
Проверить версии текущих пользователей во избежание проблем при миграции
SQL> select username, password_versions from DBA_USERS where username='USER';
USERNAME PASSWORD
------------------------------ --------
USER 10G
Oracle Database 12С и выше не поддерживает password_versions 10G, поэтому для бесшовности переезда заранее на источнике следует подготовить пользователей. В продуктивной среде, чтобы пароли имели PASSWORD_VERSIONS="10G 11G" нужно их переопределить / переназначить.
PASSWORD_VERSIONS="10G 11G"
Проверить
SQL> select username, password_versions from DBA_USERS where username='SYSTEM';
USERNAME PASSWORD
------------------------------ --------
SYSTEM 10G 11G
Если в перенесенной базе данных на новую СУБД разлочить и создать пароль его все таки нужно знать, а это не всегда представляется возможным. В этом случае выполнить на новой перенесенной базе зная пароль:
ALTER USER <username> ACCOUNT UNLOCK;
ALTER USER <username> IDENTIFIED BY <password>;
Будьте внимательны!
Источник: Finding and Resetting User Passwords That Use the 10G Password Version