Oracle 版本: 19.15
OS 版本: Aix 7.2
問題描述:
以 schema level 將 11.2.0.4 的使用者 expdp 出來後,將其 impdp 至 19.15 產生了 ORA-39384: Warning: User SCOTT Has Been Locked And The Password Expired 這個錯誤:
問題分析:
在 impdp 的過程當中,如果資料庫不存在需要的使用者,則會先行建立此使用者,這個訊息就是 impdp 一開始建立使用者的時候發生錯誤,使用者沒有建立起來,後續的物件自然也無法 import 成功。
ORA-39384 顯示使用者被 Locked 或者是密碼過期,可是檢查來源端 11g 的使用者卻沒有 Locked 或是密碼過期,為何 impdp 會無法建立此 User ?
這個問題來自於 Oracle 12c 之後對於安全性的嚴謹度加強,早期資料庫的使用者如果它的 password_versions (select password_versions from dba_users) 為 10G 或是更舊,那麼此使用者 impdp 到 12c 以上的資料庫就會產生此問題。
解決方法:
這個問題的解決思路在於讓 12c 以上的資料庫可以相容於舊資料庫的設定,於 $ORACLE_HOME/network/admin 底下的 sqlnet.ora 設定如下即可正常 impdp :