DBA_PROFILES 用来显示所有配置文件及其限制。
在11g数据库环境中,dba_profiles的结构只有4个字段,分别是 PROFILE\RESOURCE_NAME\RESOURCE_TYPE\LIMIT;在12c及以上的Oracle数据库中,新增了COMMON\INHERITED\IMPLICIT。
1.通过 select 语句查看所有配置及限制。
select * from dba_profiles;
2.通过 where 子句查看符合条件的记录。
select * from dba_profiles
where resource_name = 'PASSWORD_LOCK_TIME';
Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念。所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件。将概要文件赋予某个数据库用户,在用户连接并访问数据库服务器时,系统就按照概要文件给他分配资源。在有的书中将其翻译为配置文件,其作用包括:
管理数据库系统资源
利用Profile来分配资源限额,必须把初始化参数resource_limit设置为true。
ALTER SYSTEM SET resource_limit=TRUE SCOPE=BOTH;
管理数据库密码及验证方式
默认给用户分配的是DEFAULT概要文件,将该文件赋予了每个创建的用户。但该文件对资源没有任何限制,因此管理员常常需要根据自己数据库系统的环境自行建立概要文件。
通过数据字典查看缺省资源配置内容:
select * from dba_profiles order by profile;
当一个用户连接到数据库上以后,如果在某一段时间内没有任何动作的话,该进程就会自己中断,这样在应用程序就会因为进程超时自动断开而不能正常执行。
分析原因,应该是该进程的用户的概要文件(profile)配置问题。发现用户所在的profile的IDLE_TIME为30。即30秒该进程没有任何操作,就会自动断开。
PROFILE的管理(资源文件)当需要设置资源限制时,必须设置数据库系统启动参数RESOURCE_LIMIT,此参数默认值为FALSE。
可以使用如下命令来启动当前资源限制:
alter system set RESOURCE_LIMIT=true;
当需要以后启动时也启动限制,必须在init<SID>.ora中设置
RESOURCE_LIMIT=true
建立语法:
CREATE PROFILE profile LIMIT
{ resource_parameters | password_parameters }
[ resource_parameters | password_parameters ]...;
{ { SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL |CONNECT_TIME |IDLE_TIME
| LOGICAL_READS_PER_SESSION | LOGICAL_READS_PER_CALL |COMPOSITE_LIMIT }
{ integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA { integer [ K | M ] | UNLIMITED | DEFAULT }
}
{ { FAILED_LOGIN_ATTEMPTS | PASSWORD_LIFE_TIME |PASSWORD_REUSE_TIME
| PASSWORD_REUSE_MAX | PASSWORD_LOCK_TIME | PASSWORD_GRACE_TIME}
{ expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION { function | NULL | DEFAULT }
}
CREATE PROFILE new_profile
LIMIT PASSWORD_REUSE_MAX DEFAULT
PASSWORD_REUSE_TIME UNLIMITED;
CREATE PROFILE app_user LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 3000
CONNECT_TIME 45
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL 1000
PRIVATE_SGA 15K
COMPOSITE_LIMIT 5000000;
CREATE PROFILE app_user2 LIMIT
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LIFE_TIME 365
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 10;
一、PROFILE的管理内容:
1、CPU的时间
2、I/O的使用
3、IDLE TIME(空闲时间)
4、CONNECT TIME(连接时间)
5、并发会话数量
6、密码机制:
二、DEFAULT PROFILE:
1、所有的用户创建时都会被指定这个PROFILE
2、DEFAULT PROFILE的内容为空,无限制
三、PROFILE的划分:
If a user attempts to perform an operation that exceeds the limitfor other session resources,Oracle aborts the operation, rolls back the current statement, andimmediately returns an error.
The user can then commit or roll back the current transaction, andmust then end the session.
翻译:如果用户试图执行超出其他会话资源限制的操作,Oracle将终止该操作,回滚当前语句,并立即返回错误。然后,用户可以提交或回滚当前事务,然后必须结束会话。
1、CALL级LIMITE:
对象是语句:
当该语句资源使用溢出时:
A、该语句终止;
B、事物回退;
C、SESSION连接保持;
2、SESSION级LIMITE:
对象是:整个会话过程;
溢出时:连接终止;
四、如何创建PROFILE:
1、命令:
CREATE PROFILE 名称
LIMIT
SESSION_PER_USER 2
CPU_PER_SESSION 1000
IDLE_TIME 60 用户在数据库终止前,可以让连接空闲多长时间(分钟)
CONNECT_TIME 480
五、限制(资源)参数:
LIMIT
0、NULL
1、UNLIMITED 取消资源限制(无限制)
2、DEFAULT 缺剩资源限制,即使用default资源限制
六、打开资源限制:
1、RESOURCE_LIMT:资源文件中含有
2、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
3、默认不打开
七、修改PROFIE的内容:
1、ALTER PROFILE 名称 LIMIT 参数 新值
例如:
--允许空闲会话的时间,单位(分钟),配置60分钟
alter profile DEFAULT LIMIT IDLE_TIME 60;
--密码验证函数 也就是密码复杂度验证
--默认 NULL 不做检验
--VERIFY_FUNCTION 是一个检验密码复杂度的函数
alter profile DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;
2、对于当前连接修改不生效。
3、DROP一个PROFILE
1、DROP PROFILE 名称
删除一个新的尚未分配给 用户 的PROFILE
2、DROP PROFILE 名称 CASCADE;
3、注意事项
A、一旦用户创建的PROFILE被删除,用户将被自动加载 DEFAULT PROFILE
B、对于当前连接无影响
C、DEFAULT PROFILE 不可以被删除
八、PROFILE的密码机制限制
1、限制内容
A、限制连续多少次登录失败, 用户被加锁
--密码错误登录的次数 10次,将被锁定
alter profile DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 10;
B、限制密码的生命周期
--密码有效期,配置 365 天
alter profile DEFAULT LIMIT PASSWORD_LIFE_TIME 365;
C、限制密码的使用间隔
--当密码过期之后,还有多少天可以使用原密码,配置10天
alter profile DEFAULT LIMIT PASSWORD_GRACE_TIME 10;
--密码被修改后原有密码隔多少天被重新使用,默认为UNLIMITED
alter profile DEFAULT LIMIT PASSWORD_REUSE_TIME 10;
--密码被修改后原有密码被修改多少次才允许被重新使用
alter profile DEFAULT LIMIT PASSWORD_REUSE_MAX 10;
2、限制生效的前提:
A、RESOURCE_LIMIT:=TRUE
B、ORACLE\RDBMS\ADMIN\UTLPWDMG.SQL
3、创建密码限制策略:
CREATE PROFILE 名称
LIMIT FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LIFE_TIME 365
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 10
PASSWORD_REUSE_TIME 10
PASSWORD_REUSE_MAX 10
PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;
总结:
failed_login_attempts 10 --密码错误登录的次数 10次
password_lock_time 1/24 --超过密码登录错误次数,锁定的时间,1小时
password_grace_time 10 --当密码过期之后还有多少天可以使用原密码,10天
password_life_time 365 --密码有效期,设置365天
sessions_per_user unlimited --每个用户允许的并行会话数,配置为不限制
idle_time 60 --允许空闲会话的时间,单位分钟,配置60分钟
password_verify_function verify_function --密码验证函数 也就是密码复杂度验证 verify_function是一个函数
composite_limit unlimited --资源分配
cpu_per_session unlimited --一个会话可以使用多少cpu,单位百分之一秒,配置为不限制
cpu_per_call unlimited --一次sql调用的的cpu时间,配置为不限制
logical_reads_per_session unlimited --限制会话调用数据块,单位块,配置为不限制
logical_reads_per_call unlimited --限制sql调用数据块,单位块,配置为不限制
connect_time unlimited --限制会话连接时间,配置为不限制
private_sga unlimited --限制会话对shared pool私用空间配置,配置为不限制
password_reuse_time unlimited --密码可重用间隔时间无上限
password_reuse_max unlimited --密码可用最大改变次数无上限
标签:PROFILE,DEFAULT,dba,profiles,--,LIMIT,TIME,Oracle,PASSWORD
From: https://blog.51cto.com/baoyw/9182041