Oracle已连接会话的五个状态

  1. 会话有ACTIVE、INACTIVE、KILLED、CACHED、SNIPED五个状态,一般比较常见的有ACTIVE、INACTIVE、KILLED三个状态。
  2. ACTIVE :处于此状态的会话,表示正在执行,处于活动状态。
  3. INACTIVE :处于此状态的会话表示不是正在执行的
  4. KILLED :处于此状态的会话,表示出现了错误或进程被杀掉,正在回滚,当然,这个状态的会话也占用系统资源的。还有一点就是, KILLED的状态一般会持续较长时间,如果你想快速杀掉回话,可以参考ORACLE快速彻底Kill掉的会话
  5. CACHED : Session temporarily cached for use by Oracle*XA
  6. SNIPED : Session inactive, waiting on the client。 标记为SNIPED的进程被释放有两种条件:

    • 相关的terminal再一次试图登录及执行sql
    • 手动的在操作系统后台kill掉相应的spid

查询数据库允许的最大会话数和进程数

# 查询数据库当前设置的连接数
select value from v$parameter where name = 'processes'; 
# 查询数据库当前的会话数
select value from v$parameter where name = 'sessions';   
只要会话连接数超过上面的process数或者sessions数,再来一个的会话进程,就会产生ORA-12516错误。

查看进程,会话的历史最大数和最大数

select resource_name,max_utilization,limit_value from v$resource_limit where resource_name in('processes','sessions');

修改会话数和连接数

# 注意一下processes的值和sessions的值,Oracle官方文档中要求
sessions=processes*1.5+5

# 下面以修改连接数为1000作为示例
alter system set processes=1000 scope=spfile;

alter system set sessions=1105 scope=spfile;

# 修改完参数要重启启动数据库

shutdown immediate; # 关闭数据库

startup; # 重新启动数据库

select * from v$version;  # 启动完成数据库后查看数据库的版本

设置会话超时时间

# 查看default 配置文件的内容
select PROFILE,RESOURCE_NAME,LIMIT from dba_profiles where PROFILE='DEFAULT';  
# 查询用户所使用的配置文件
select username,profile from dba_users where username='username';  
# 查看会话的空闲时间
select PROFILE,RESOURCE_NAME,LIMIT from dba_profiles where RESOURCE_NAME='IDLE_TIME'; 
# 查询资源限制相关的
select name,value from gv$parameter where name='resource_limit';  
# 开启数据库资源限制使用
alter system set resource_limit=true; 
# 设置空闲时间,参数的单位为分钟
alter profile default limit idle_time 10;  
分类: 数据库 标签: 数据库Oracle

评论

-- 评论已关闭 --

目录