profile配置资源


资源配置

对资源类的参数限制必须启用该参数,密码类参数限制默认一直启用;
alter system set resource_limit = true scope=spfile;

select * from dba_profiles b where b.resource_name like '%TIME%' AND B.resource_type='KERNEL';


超时时间单位为分钟,超出10分钟后,自动断开;
alter system set resource_limit = true;
create profile idletime limit idle_time 10;
alter user outln profile idletime;


修改idle_time为2分钟
alter profile default limit IDLE_TIME 240;
修改每个用户最多可用session数为3300;
select * from dba_profiles p where p.resource_name like '%SESSION%';
ALTER PROFILE DEFAULT LIMIT SESSIONS_PER_USER 3300;

-----------------------------------------------------------------------------------------
profile:配置文件的名称。Oracle数据库以以下方式强迫资源限制:
1.如果用户超过了connect_time或idle_time的会话资源限制,数据库就回滚当前事务,并结束会话。用户再次执行命令,数据库则返回一个错误,
2.如果用户试图执行超过其他的会话资源限制的操作,数据库放弃操作,回滚当前事务并立即返回错误。用户之后可以提交或回滚当前事务,必须结束会话。
提示:可以将一条分成多个段,如1小时(1/24天)来限制时间,可以为用户指定资源限制,但是数据库只有在参数生效后才会执行限制。
Unlimited:分配该profile的用户对资源使用无限制,当使用密码参数时,unlimited意味着没有对参数加限制。
Default:指定为default意味着忽略对profile中的一些资源限制,Default profile初始定义对资源不限制,可以通过alter profile命令来改变。
Resource_parameter部分
Session_per_user:指定限制用户的并发会话的数目。
Cpu_per_session:指定会话的CPU时间限制,单位为百分之一秒。
Cpu_per_call:指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒。
Connect_time:指定会话的总的连接时间,以分钟为单位。
Idle_time:指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开。但是长时间运行查询和其他操作的不受此限制。
Logical_reads_per_session:指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。
Logical_read_per_call:指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。
Private_sga:指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。(该限制只在使用共享服务器结构时才有效,会话在SGA中的私有空间包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL)。
Composite_limit:指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算cpu_per_session,connect_time,logical_reads_per_session和private-sga总的service units

------------------------------------------------------------------------
创建新的profile示例:
DROP PROFILE PROFILE9959 CASCADE;

CREATE PROFILE PROFILE9959 LIMIT
  SESSIONS_PER_USER UNLIMITED
  CPU_PER_SESSION UNLIMITED
  CPU_PER_CALL UNLIMITED
  CONNECT_TIME UNLIMITED
  IDLE_TIME 120
  LOGICAL_READS_PER_SESSION UNLIMITED
  LOGICAL_READS_PER_CALL UNLIMITED
  COMPOSITE_LIMIT UNLIMITED
  PRIVATE_SGA UNLIMITED
  FAILED_LOGIN_ATTEMPTS 10
  PASSWORD_LIFE_TIME 180
  PASSWORD_REUSE_TIME UNLIMITED
  PASSWORD_REUSE_MAX UNLIMITED
  PASSWORD_LOCK_TIME 1
  PASSWORD_GRACE_TIME 7
  PASSWORD_VERIFY_FUNCTION NULL;


==================================================================

 当设置了resource_limit=true 。通过idle_time限制session idle 时间。session idle超过设置时间,状态为sniped (v$session).,然而OS下的process并不会释放,当session(user process) 再次与server process 通讯,将关闭相应的server process
sqlnet.expire_time 的原理不一样,Oracle Server 发送包探测dead connection ,如果连接关闭,或者不再用,则关闭相应的server process.
以上两者组合使用,减少server process,防止process超过init$ORACLE_SID极限值。

DCD: Dead Connection Detection ,可以用于检测、标记僵死而没有断开会session,再由PMON进行清理,释放资源。
 开启DCD,只需要在服务端的sqlnet.ora文件中添加SQLNET.EXPIRE_TIME参数,单位为分钟:

SQLNET.EXPIRE_TIME=10
如果时间达到这个值,server端就是发出一个”probe” packet 给客户端,如要客户断是正常的,这个packet就被忽略,timer重新计时;如果客户端异常中断,则server端就会收到一个消息,用以释放连接。


数据库profile中设置IDLE_TIME后,如果会话超过这个限制,PMON进程会:
* Mark the V$SESSION as SNIPED
 * Clean up the database resources for the session
 * Remove the V$SESSION entry

经常会有SNIPED状态的会话,这些会话不活动了,但却占用了用户的会话数:
select sid,serial#,paddr,username,status from v$session where status = 'SNIPED';
这里我们看到的现象是v$session中,会话没有被清理,知道客户端再次发出请求,会话才被清理。

kill SNIPED session 脚本
#!/bin/sh
tmpfile=/tmp/.kill_sniped
sqlplus system/manager < spool $tmpfile
select p.spid from v\$process p,v\$session s
where s.paddr=p.addr
and s.status='SNIPED';
spool off
EOF
for x in `cat $tmpfile | grep "^[0123456789]"`
do
kill -9 $x
done
rm $tmpfile


另外补充说明,IDLE_TIME是对于空闲时间超过了它的配置时间就会去强制终止会话,如果该会话中存在事务,但是inactive时间超过了IDLE_TIME配置时间,数据库依然会强制终止会话,并且回滚事务

====================================================================================

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29519108/viewspace-1258980/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29519108/viewspace-1258980/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值