10g中的Profile 主要是对数据库连接对象的资源起到限制的作用,修改密码前先确认限制状况。
先查看下Profile的维护表DBA_PROFILES,该表还算简单就4个字段
PROFILE 用户管理名
RESOURCE_NAME 资源名
RESOURCE_TYPE 资源类型
LIMIT 限制
PROFILE RESOURCE_NAME RESOURCE LIMIT ---------- ------------------------- -------- -------------------- DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED PROFILE RESOURCE_NAME RESOURCE LIMIT ---------- ------------------------- -------- -------------------- DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD SFDB_PASSWD_COMPLEX DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED
FAILED_LOGIN_ATTEMPTS 限制的默认情况为10次,但是修改密码后,应用端反复尝试通过错误的密码连接数据库,可能会导致用户的锁定。
因此,将该限制修改为unlimited的:
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited
修改完成后再次确认该参数的限制后,开始修改数据库的密码,数据库密码的策略须符合几个原则:
1、必须由数字、字符和特殊字符中的任意两者以上组成
2、至少8位
3、Oracle保留字符不可用
10G的密码不区分大小写,以下是针对普通用户的密码修改方式:修改sys用户的密码需要通过修改密码文件来使其生效:
alter user user_name identified by new_password;
SYS用户的密码修改命令如下:
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n> nosysdba=<y/n>
密码文件路径及命名方式:
$ORACLE_HOME/dbs/
orapw+实例名
而11G之后进行了改进,可以统一通过alter语句进行用户密码的修改,并且11G区分大小写。
参考eygle http://www.eygle.com/archives/2009/07/profile_failed_login_attempts.html