sql >> データベース >  >> RDS >> Oracle

ORA-28000を解決する方法アカウントがロックされています

    ORA-28000アカウントがロックされていますというエラーが頻繁に発生します 日々の活動で。これは、開発者とDBAの両方で発生する可能性があります。

    理由

    これは複数の理由で発生する可能性があります

    a。 OracleDBAは意図的にアカウントをロックしました

    alter user <username> account lock;
    select status from dba_users where username='&1';
    

    b。間違ったパスワードが何度も試行され、ロックが発生しました。 FAILED_LOGIN_ATTEMPTSの数は、以下のクエリを使用して見つけることができます

    select username , profile from dba_users where username='&1';
    -----  ------
    SCOTT TECH_PW
    
    select * from dba_profiles
    where profile='&1' and resource_name='FAILED_LOGIN_ATTEMPTS';
    
    SQL> select RESOURCE_NAME,resource_type,LIMIT from dba_profiles where PROFILE='TECH_PW' ;
    RESOURCE_NAME RESOURCE LIMIT
    -----------    -------  -----
    COMPOSITE_LIMIT KERNEL DEFAULT
    SESSIONS_PER_USER KERNEL DEFAULT
    CPU_PER_SESSION KERNEL DEFAULT
    CPU_PER_CALL KERNEL DEFAULT
    LOGICAL_READS_PER_SESSION KERNEL DEFAULT
    LOGICAL_READS_PER_CALL KERNEL DEFAULT
    IDLE_TIME KERNEL DEFAULT
    CONNECT_TIME KERNEL DEFAULT
    PRIVATE_SGA KERNEL DEFAULT
    FAILED_LOGIN_ATTEMPTS PASSWORD 5
    PASSWORD_LIFE_TIME PASSWORD 90
    PASSWORD_REUSE_TIME PASSWORD UNLIMITED
    PASSWORD_REUSE_MAX PASSWORD 10
    PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
    PASSWORD_LOCK_TIME PASSWORD DEFAULT
    PASSWORD_GRACE_TIME PASSWORD DEFAULT
    
    Default values can be found by querying the default profile
    SQL> select RESOURCE_NAME,resource_type,LIMIT from dba_profiles where PROFILE='DEFAULT';
    RESOURCE_NAME RESOURCE LIMIT
    -------------  -------   ------
    COMPOSITE_LIMIT KERNEL UNLIMITED
    SESSIONS_PER_USER KERNEL UNLIMITED
    CPU_PER_SESSION KERNEL UNLIMITED
    CPU_PER_CALL KERNEL UNLIMITED
    LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
    LOGICAL_READS_PER_CALL KERNEL UNLIMITED
    IDLE_TIME KERNEL UNLIMITED
    CONNECT_TIME KERNEL UNLIMITED
    PRIVATE_SGA KERNEL UNLIMITED
    FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
    PASSWORD_LIFE_TIME PASSWORD UNLIMITED
    PASSWORD_REUSE_TIME PASSWORD UNLIMITED
    PASSWORD_REUSE_MAX PASSWORD UNLIMITED
    PASSWORD_VERIFY_FUNCTION PASSWORD NULL
    PASSWORD_LOCK_TIME PASSWORD UNLIMITED
    PASSWORD_GRACE_TIME PASSWORD UNLIMITED

    監査を有効にすることで、ログインの失敗がすべて発生した場所を見つけることもできます

    audit session whenever not successful;
    
    select OS_USERNAME,USERNAME,USERHOST,to_char(timestamp,'MM-DD-YYYY HH24:MI:SS'), returncode
    from dba_audit_trail
    where returncode > 0
    
    を選択します。

    解決策

    これが意図的に行われていない場合は、以下のアプローチを使用して問題を解決できます

    (1)以下のコマンドを使用してアカウントのロックを解除します

    alter user <username> account unlock;
    

    上記のクエリを実行する前に、エラーの理由が整理されていることを確認してください。そうしないと、エラーが発生します。

    (2)エラーの理由が不明で、問題が解決するまで、無制限のFAILED_LOGIN_ATTEMPTSを使用して別のプロファイルを作成できます

    SQL> CREATE PROFILE TECH_TMP LIMIT
    FAILED_LOGIN_ATTEMPTS UNLIMITED
    ;

    そして、問題が発生しているユーザーに割り当てます

    alter user scott profile TECH_TMP;
    alter user scott account unlock;

    原因が特定され、無効なパスワードの出所がわかったら、ユーザープロファイルを以前のプロファイルに変更し、新しく作成されたプロファイルを削除できます

    alter user scott profile TECH_PW;
    drop profile TECH_TMP;

    ORA-28000のこの投稿が気に入っていただければ幸いです。アカウントはロックされており、日々の活動に役立ちます。フィードバックをお寄せください

    関連記事

    ORA-01017:ユーザー名/パスワードが無効です。ログオンが拒否されました
    Oracleデータベースでパスワードを変更せずにユーザーとしてログインする方法
    Oracleでユーザーを作成する
    Oracleデータベース12cでユーザーとロールを作成する方法
    ORA-00904
    ORA-28002
    https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm


    1. ClusterControl1.7を使用したエージェントベースのデータベース監視の紹介

    2. クエリ間のOracle日付

    3. SQLiteOpenHelperを使用してAndroidでsqliteデータベースをアタッチする

    4. MINまたはMAXにnull値を含めるにはどうすればよいですか?