oralce 密码长度

时间:2024-06-17 18:35:37

Oracle 11G的新特性所致, Oracle 11G创建用户时缺省密码过期限制是180天, 如果超过180天用户密码未做修改则该用户无法登录。
Oracle提示错误消息ORA-28001: the password has expired
按照如下步骤进行操作:

1、查看用户的proifle是哪个,一般是default:

sql>SELECT username,PROFILE FROM dba_users;

2、查看指定概要文件(如default)的密码有效期设置:

sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

3、将密码有效期由默认的180天修改成“无限制”:

sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重启动数据库,会立即生效。

4、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;

已经被提示的帐户必须再改一次密码,举例如下:

$sqlplus / as sysdba

sql> alter user smsc identified by  <原来的密码>   ----不用换新密码

oracle11g启动参数resource_limit无论设置为false还是true,密码有效期都是生效的,所以必须通过以上方式进行修改。以上的帐户名请根据实际使用的帐户名更改。

使用sqlplus登陆短消息oracle数据库时提示“ORA-28000: 帐号被锁定”。
按照如下步骤进行操作:

1、查看用户的proifle是哪个,一般是default:

sql>SELECT username,PROFILE FROM dba_users;

2、查看指定概要文件(如default)的密码有效期设置:

sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';

3、将尝试登录失败次数由默认的10次修改成“无限制”:

sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

4、修改后,还没有被提示ORA-28000警告的用户不会再碰到同样的提示;

已经被锁定的帐户必须解除锁定,举例如下:

$sqlplus / as sysdba

sql> alter user smsc identified by oracle account   unlock;

5、修改后default profile应该如下:

sql> select * from dba_profiles WHERE dba_profiles.profile='DEFAULT';

PROFILE     RESOURCE_NAME           RESOURCE_TYPE   LIMIT

------------------------------ -------------------------------- ------------- ----------------------

DEFAULT    FAILED_LOGIN_ATTEMPTS     PASSWORD      UNLIMITED

DEFAULT    PASSWORD_LIFE_TIME        PASSWORD      UNLIMITED

修改之后不需要重启动数据库,会立即生效。

密码长度设置为8位以下
$ cd $ORACLE_HOME/rdbms/admin/
$ grep -il 'password' utl*
utlhttp.sql
utlpwdmg.sql
$ cat utlpwdmg.sql |grep length
$vi utlpwdmg.sql
--  Enable this if you want older version of the Password Profile parameters
ALTER PROFILE DEFAULT LIMIT  //去掉前面的--注释
 --PASSWORD_LIFE_TIME 60
 --PASSWORD_GRACE_TIME 10
 --PASSWORD_REUSE_TIME 1800
 --PASSWORD_REUSE_MAX UNLIMITED
 --FAILED_LOGIN_ATTEMPTS 3
 --PASSWORD_LOCK_TIME 1/1440
PASSWORD_VERIFY_FUNCTION verify_function; //去掉前面的--注释

-- Check for the minimum length of the password
   IF length(password) < 6 THEN     //8改成6
      raise_application_error(-20001, 'Password length less than 8');
   END IF;