はじめに
ORA-28007対応時のポイント
-- プロファイル確認
SQL> SELECT PROFILE, RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_TYPE='PASSWORD' ORDER BY 1;
SQL> select profile, resource_name, limit from dba_profiles where resource_type='PASSWORD' order by 1,2;
-- 対応案1(プロファイル毎)
SQL> alter user SCOTT profile default;
-- 対応案2(個別設定)
ALTER PROFILE SCOTT LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1;
参考サイト
◆Oracle Database 11g の標準セキュリティ設定について#2
https://koutashiobara.blogspot.com/2012/02/oracle-database-11g-2.html
◆Oracle Autonomous Databaseに慣れる(1)
https://qiita.com/plusultra/items/213b754cc7732ae75c78
◆[oracle-memo] パスワード管理ポリシー
http://orcl.usamimi.info/?orcl&ctgr=06&part=02
◆ORA-28007: the password cannot be reused
https://www.thegeekdiary.com/ora-28007-the-password-cannot-be-reused/
◆ALTER PROFILE
https://docs.oracle.com/cd/E16338_01/server.112/b56299/statements_2008.htm
ORA-01017対応時のポイント
どうも、systemユーザーのログイン誤りを何回も繰り返してロックかかっていたようで...
合っているはずなのに「as sysdba」を付与しないと下記エラーでログインできなかった。
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
ORA-01017: invalid username/password; logon denied
-- これはOK
> sqlplus system/manager@XE as sysdba
-- ORA-01017発生...なぜだ
> sqlplus system/manager@XE
-- 各アカウントのパスワード状況を簡潔に出力
-- (※この時点でsystemがLOCKED(TIMED)になってた...)
select username || '/' || profile || '/' || account_status || '/' || to_char(lock_date,'HH24:MI:SS') as account_password_status from dba_users;
-- デフォルトのプロファイルのパスワード有効期限を無期限に
-- ※これはなくてもOKだが、毎回定期的に設定するの大変なので
-- (セキュリティ的には微妙ですが)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
-- エラーでログインできないユーザのパスワードを再設定
ALTER USER system IDENTIFIED BY manager;
-- ロックされているアカウントのロックを解除
ALTER USER system ACCOUNT UNLOCK;
-- これで以下がOKとなる
> sqlplus system/manager@XE
参考サイト
◆ORA-28001:パスワードが期限切れです
https://www.dbsheetclient.jp/blog/?p=716
※対応することは、ここに書いてあることを実施
◆Oracle 19cのユーザーのパスワードの有効期限を無期限に変更する手順
https://souiunogaii.hatenablog.com/entry/Oracle-PasswordLifeTime
◆アカウントステータスの遷移と対処方法のまとめ
https://cosol.jp/knowledge/knowledge_post/ob0004_account_status/
◆ユーザーアカウント状態とロックされた日付を確認
https://qiita.com/AtsushiTamashiro@github/items/c6b0aeab2aa89ff2f328
※今回は「LOCKED(TIMED):ログイン失敗再試行回数上限オーバーによるロック」だった
◆Oracle 11g でパスワードの大文字・小文字を区別しないようにする
https://www.projectgroup.info/tips/Oracle/Oracle_000014.html
※「Oracle Database では 11g 以降、パスワードの大文字と小文字を区別するのが標準になりました。」とのこと。これにも気をつけないと...はまったので。
◆Oracle Database 12c 以降のパスワード管理で気をつけるべき事例
http://www.intellilink.co.jp/article/column/ora-report20180925.html
※下記条件が一致するとORA-01017発生とのこと
・初期化パラメータ : SEC_CASE_SENSITIVE_LOGON = false
・sqlnet.ora に設定するパラメータ : SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12