2016-09-09 20 views
1

Oracleの検証機能には、最後のパスワードの距離をチェックする設定が含まれています。 ora12c_verify_function:Oracle検証機能12c - 文字列の距離

-- Check if the password differs from the previous password by at least 
    -- 3 characters 
    IF old_password IS NOT NULL THEN 
    differ := string_distance(old_password, password); 
    IF differ < 3 THEN 
     raise_application_error(-20010, 'Password should differ from the ' 
           || 'old password by at least 3 characters'); 
    END IF; 
    END IF ; 

    RETURN(TRUE); 
END; 

なぜ1つの異なる文字でパスワードを変更できるのですか?

Connected to: 
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production 

SQL> ALTER USER TEST PROFILE DEFAULT; 
SQL> ALTER PROFILE default LIMIT PASSWORD_VERIFY_FUNCTION ora12c_verify_function; 

SQL> alter user test identified by "123456789_abc!"; 

User altered. 

SQL> alter user test identified by "123456789_abc!"; 
alter user test identified by "123456789_abc!" 
* 
ERROR at line 1: 
ORA-28007: the password cannot be reused 


SQL> alter user test identified by "123456789_abcd!"; 

User altered. 

答えて

2

Oracle Support Doc ID 816932.1で解決されました。この問題は、ALTER USER権限ではユーザーが古いパスワードを知る必要がないため、この権限が使用されたときにこの古いパスワードをチェックしないという事実に関連しています。特権がなければ、ユーザーはREPLACEコマンドで古いパスワードを提供する必要があります。

ALTER USER SCOTT IDENTIFIED BY NEWPASSWORD REPLACE TIGER; 
関連する問題