ORA-00600 [kpdbModAdminPasswdInRoot: not CDB] when changing password of default account

During the test on Oracle Database 12c I run into an interesting error respectively Chris Antongini has made me aware of it. If you try to change the password of an Oracle default account on a none CDB with SQL*Plus

password
password you run into an ORA-00600 [kpdbModAdminPasswdInRoot: not CDB] and of course the password is not changed. Let’s try it with the DBSNMP account.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> show parameter pluggable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_pluggable_database boolean FALSE
SQL> col username for a20
SQL> select username,account_status,password_versions,ORACLE_MAINTAINED from dba_users
2 where username='DBSNMP';
USERNAME ACCOUNT_STATUS PASSWORD_VER O
-------------------- -------------------------------- ------------ -
DBSNMP EXPIRED & LOCKED 10G 11G Y
SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
SQL> conn / as sysdba
Connected.
SQL> alter user DBSNMP account unlock;
User altered.
SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28001: the password has expired
Changing password for dbsnmp
New password:
Retype new password:
ERROR:
ORA-00600: internal error code, arguments: [kpdbModAdminPasswdInRoot: not CDB],
[], [], [], [], [], [], [], [], [], [], []
Password unchanged
Warning: You are no longer connected to ORACLE.
SQL> show parameter pluggable NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ enable_pluggable_database boolean FALSE SQL> col username for a20 SQL> select username,account_status,password_versions,ORACLE_MAINTAINED from dba_users 2 where username='DBSNMP'; USERNAME ACCOUNT_STATUS PASSWORD_VER O -------------------- -------------------------------- ------------ - DBSNMP EXPIRED & LOCKED 10G 11G Y SQL> conn dbsnmp/dbsnmp ERROR: ORA-28000: the account is locked Warning: You are no longer connected to ORACLE. SQL> conn / as sysdba Connected. SQL> alter user DBSNMP account unlock; User altered. SQL> conn dbsnmp/dbsnmp ERROR: ORA-28001: the password has expired Changing password for dbsnmp New password: Retype new password: ERROR: ORA-00600: internal error code, arguments: [kpdbModAdminPasswdInRoot: not CDB], [], [], [], [], [], [], [], [], [], [], [] Password unchanged Warning: You are no longer connected to ORACLE.
SQL> show parameter pluggable

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
enable_pluggable_database            boolean     FALSE

SQL> col username for a20
SQL> select username,account_status,password_versions,ORACLE_MAINTAINED from dba_users
  2  where username='DBSNMP';

USERNAME             ACCOUNT_STATUS                   PASSWORD_VER O
-------------------- -------------------------------- ------------ -
DBSNMP               EXPIRED & LOCKED                 10G 11G      Y


SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28000: the account is locked


Warning: You are no longer connected to ORACLE.
SQL> conn / as sysdba
Connected.
SQL> alter user DBSNMP account unlock;

User altered.

SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28001: the password has expired


Changing password for dbsnmp
New password: 
Retype new password: 
ERROR:
ORA-00600: internal error code, arguments: [kpdbModAdminPasswdInRoot: not CDB],
[], [], [], [], [], [], [], [], [], [], []


Password unchanged
Warning: You are no longer connected to ORACLE.

As you can see above the account is expired and locked. After unlocking the account I’ll try to login again and will be asked to set a new password. Doing the same on a container database does work without an ORA-00600.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> show parameter pluggable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_pluggable_database boolean TRUE
SQL> col username for a20
SQL> select username,account_status,password_versions,ORACLE_MAINTAINED from dba_users
2 where username='DBSNMP';
USERNAME ACCOUNT_STATUS PASSWORD_VER O
-------------------- -------------------------------- ------------ -
DBSNMP EXPIRED & LOCKED 10G 11G Y
SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
SQL> conn / as sysdba
Connected.
SQL> alter user DBSNMP account unlock;
User altered.
SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28001: the password has expired
Changing password for dbsnmp
New password:
Retype new password:
Password changed
Connected.
SQL> show parameter pluggable NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ enable_pluggable_database boolean TRUE SQL> col username for a20 SQL> select username,account_status,password_versions,ORACLE_MAINTAINED from dba_users 2 where username='DBSNMP'; USERNAME ACCOUNT_STATUS PASSWORD_VER O -------------------- -------------------------------- ------------ - DBSNMP EXPIRED & LOCKED 10G 11G Y SQL> conn dbsnmp/dbsnmp ERROR: ORA-28000: the account is locked Warning: You are no longer connected to ORACLE. SQL> conn / as sysdba Connected. SQL> alter user DBSNMP account unlock; User altered. SQL> conn dbsnmp/dbsnmp ERROR: ORA-28001: the password has expired Changing password for dbsnmp New password: Retype new password: Password changed Connected.
SQL> show parameter pluggable

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
enable_pluggable_database            boolean     TRUE
SQL> col username for a20
SQL> select username,account_status,password_versions,ORACLE_MAINTAINED from dba_users
  2  where username='DBSNMP';

USERNAME             ACCOUNT_STATUS                   PASSWORD_VER O
-------------------- -------------------------------- ------------ -
DBSNMP               EXPIRED & LOCKED                 10G 11G      Y

SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28000: the account is locked


Warning: You are no longer connected to ORACLE.
SQL> conn / as sysdba
Connected.
SQL> alter user DBSNMP account unlock;

User altered.

SQL> conn dbsnmp/dbsnmp
ERROR:
ORA-28001: the password has expired


Changing password for dbsnmp
New password: 
Retype new password: 
Password changed
Connected.

Sure as DBA you may workaround this problem and set the users new password with

alter user
alter user. So far I couldn’t reproduce this problem with a custom test user. According to Oracle this problem is related to an unpublished bug 16901482 which will be fixed with a one off patch 17217733.

One thought on “ORA-00600 [kpdbModAdminPasswdInRoot: not CDB] when changing password of default account

  1. Pingback: Update: ORA-00600 [kpdbModAdminPasswdInRoot: not CDB] when changing password of default account | OraDBA

Comments are closed.