配置文件的功能:管理密码、限制会话可占用的资源。Oracle建议使用资源管理器来限制资源管理。
1.语法:
创建配置文件:
CREATE PROFILE profile LIMIT { resource_parameters | password_parameters }...;
ALTER PROFILE profile LIMIT { resource_parameters | password_parameters }...;
drop profile profile_name [cascade];
应用配置文件:
alter user user_name profile profile_name;
2.相关参数
1)管理口令:
Failed_login_attempts:锁定用户前,口令可以连续输入错误数。
password_lock_time:密码输错错误导致账户锁定的天数;
password_life_time:口令过期前的天数;
password_grace_time:口令过期后仍然可以登陆的天数;
password_reuse_time:相同口令可以再次使用的时间间隔,以天为单位;
password_reuse_max:在达到PASSWORD_REUSE_TIME指定时间后,要再次使用同一口令前必须改变的次数。
password_verify_function:密码复杂性。
2)资源限制:
SESSIONS_PER_USER:每个用户可以登陆的会话数;
cpu_PER_SESSION:指定会话的cpu时间限制,以百分之一秒为单位。
cpu_PER_CALL cpu时间限制,以百分之一秒为单位。
CONNECT_TIME 连接时间,以分钟为单位
IDLE_TIME 指定会话期间持续不活动时间的允许期间,以分钟表示。 长时间运行的查询和其他操作不受此限制。
LOGICAL_READS_PER_SESSION 指定在会话中读取的数据块的允许数量,包括从内存和磁盘读取的数据块。
LOGICAL_READS_PER_CALL 指定为调用处理sql语句(解析,执行或提取)而读取的数据块的允许数量。
PRIVATE_SGA 指定会话可以在系统全局区域(SGA)的共享池中分配的私有空间量。
只有设置了实例参数,才会应用资源限制:
alter system set resource_limit=true;
3.例子
3.1 创建新的配置文件
创建新的配置文件,供测试使用。
CREATE PROFILE app_user LIMIT
SESSIONS_PER_USER 3
CONNECT_TIME 2
PASSWORD_REUSE_MAX 2;
3.2 查看配置文件的类型
sql> select distinct profile from dba_profiles;
PROFILE
------------------------------
MONITORING_PROFILE
APP_USER
DEFAULT
sql> select * from dba_profiles where profile='APP_USER';#未分配的值,LIMIT字段为DEFAULT。
PROFILERESOURCE_NAMERESOURCE_TYPELIMIT ------------------------------------------------------------------------------------------------------------------- APP_USERCOMPOSITE_LIMITKERNELDEFAULT APP_USERSESSIONS_PER_USERKERNEL3 APP_USERcpu_PER_SESSIONKERNELDEFAULT APP_USERcpu_PER_CALLKERNELDEFAULT APP_USERLOGICAL_READS_PER_SESSIONKERNELDEFAULT APP_USERLOGICAL_READS_PER_CALLKERNELDEFAULT APP_USERIDLE_TIMEKERNELDEFAULT APP_USERCONNECT_TIMEKERNEL2 APP_USERPRIVATE_SGAKERNELDEFAULT APP_USERFailed_LOGIN_ATTEMPTSPASSWORDDEFAULT APP_USERPASSWORD_LIFE_TIMEPASSWORDDEFAULT APP_USERPASSWORD_REUSE_TIMEPASSWORDDEFAULT APP_USERPASSWORD_REUSE_MAXPASSWORD2 APP_USERPASSWORD_VERIFY_FUNCTIONPASSWORDDEFAULT APP_USERPASSWORD_LOCK_TIMEPASSWORDDEFAULT APP_USERPASSWORD_GRACE_TIMEPASSWORDDEFAULT
sql> alter user scott profile app_user;
User altered
#启用资源限制
alter system set resource_limit=true;
#登陆scott,连接会话超过3次会报错
sql> conn scott/tiger
ERROR:
ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit
#连接2分钟之后,执行查询操作报错;如果无操作,scott用户仍不能登陆。
sql> select count(1) from tabs;
select count(1) from tabs
*
ERROR at line 1:
ORA-00604: error occurred at recursive sql level 1
ORA-02399: exceeded maximum connect time,you are being logged off
#修改scott的密码,原密码为tiger
sql> alter user scott identified by scott;
User altered
sql> alter user scott identified by scott;
alter user scott identified by scott
ORA-28007: 无法重新使用口令