配置文件的功能:管理密码、限制会话可占用的资源。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
3.3 查看配置文件的内容
SQL> select * from dba_profiles where profile='APP_USER';#未分配的值,LIMIT字段为DEFAULT。
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
------------------------------ -------------------------------- ------------- ----------------------------------------
APP_USER COMPOSITE_LIMIT KERNEL DEFAULT
APP_USER SESSIONS_PER_USER KERNEL 3
APP_USER CPU_PER_SESSION KERNEL DEFAULT
APP_USER CPU_PER_CALL KERNEL DEFAULT
APP_USER LOGICAL_READS_PER_SESSION KERNEL DEFAULT
APP_USER LOGICAL_READS_PER_CALL KERNEL DEFAULT
APP_USER IDLE_TIME KERNEL DEFAULT
APP_USER CONNECT_TIME KERNEL 2
APP_USER PRIVATE_SGA KERNEL DEFAULT
APP_USER FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
APP_USER PASSWORD_LIFE_TIME PASSWORD DEFAULT
APP_USER PASSWORD_REUSE_TIME PASSWORD DEFAULT
APP_USER PASSWORD_REUSE_MAX PASSWORD 2
APP_USER PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
APP_USER PASSWORD_LOCK_TIME PASSWORD DEFAULT
APP_USER PASSWORD_GRACE_TIME PASSWORD DEFAULT
3.4 修改SCOTT用户的默认配置文件
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: 无法重新使用口令