导读:
同学们是不是都用遇到过这种情况,一个业务系统开发期业务并发量只是估算一个值,而系统上线后这个并发量可能会出现溢出或是不够的
 
情况。在这种情况下我们DBA怎么给出合理的性能优化建议呢?本文就是利用数据给出session并发量的合理值。
 
目的:
利用数据给出ORACLE性能优化session的合理值。
 
环境:
OS: 6.1 AIX
Oracle: 11.2.0.4  rac on 2 nodes
 
1.实例启动后用户最大并发session?
select SESSIONS_CURRENT,SESSIONS_HIGHWATER from v$license;
 
 
2.数据库是否有大量的inactive session?
select
(select count(*) from v$session where status='INACTIVE') as "session inactive" ,
(select count(*) from v$session ) as "session total" from dual;
 
--可以初步判断中间件连接数设置是否合理。如果inactive/total比值大于0.6考虑是否可以优化(个人建议)
 
3.数据库大量inactive session都是什么业务?
select username,count(*) from v$session where status='INACTIVE' group by username;
 
--可以初步判断是什么业务有过多的inactive,联系业务是否可以优化(对“症”下药)
 
4.既然发现了数据库有大量的inactive存在,怎么样有理有据的给出优化建议呢?
我的方法:
写一个统计total session 与active session的脚本,定时执行脚本并将统计结果写入一张表。经过大量的统计(业务高峰与低峰)就可以
 
得到合理的session值,可以把这个合理的并发session值反馈给业务,进而最优使用系统资源,而不是产生大量的inactive session
 
 
4-1.创建一个收集统计信息的表dou_tunning
create table dou_tunning (
username varchar2(40),
total number,
active number,
osdate date);
 
4-2.编写一个收集session的脚本
vi check_session.sh
#oracle用户的环境变量,一定编辑在脚本中#
sqlplus -s 'system/system' <

insert into  dou_tunning (select t.username,t.total,d.active,sysdate from (select username,count(*) as total from gv\
 
$session where username is not null and username not in ('SYSTEM','SYSMAN','DBSNMP') group by username ) t ,(select
 
username,count(*) as active from gv\$session where username is not null and status='ACTIVE' group by username ) d where
 
t.username=d.username) ;
commit;
exit;
EOF
 
 
 
4-3.定时执行收集session的脚本
doudou1:/home/oracle$crontab -l
5,15,25,35,45,55  * * * * sh /home/oracle/check_session.sh
 
--AIX中的crontab不支持“/”,很无奈只能写成这样了。当然了,你也可以每分钟收集一次session信息,给客户更详尽的优化数据。
 
4-4.根据收集来的数据,根据业务的高峰期并发session值,进而给出最优并发session值
 
5.CASE分析
select * from dou_tunning where username='TAB_DOUDOU'
TAB_DOUDOU 363 1 2014/8/12 13:25:01
TAB_DOUDOU 361 1 2014/8/12 13:28:00
TAB_DOUDOU 358 1 2014/8/12 13:30:01
TAB_DOUDOU 358 3 2014/8/12 13:31:00
TAB_DOUDOU 358 2 2014/8/12 13:32:00
TAB_DOUDOU 358 3 2014/8/12 13:33:00
TAB_DOUDOU 358 2 2014/8/12 13:34:01
TAB_DOUDOU 362 1 2014/8/12 13:36:00
TAB_DOUDOU 363 4 2014/8/12 13:37:00
TAB_DOUDOU 363 2 2014/8/12 13:38:01
TAB_DOUDOU 366 3 2014/8/12 13:39:00
TAB_DOUDOU 368 2 2014/8/12 13:40:00
TAB_DOUDOU 364 2 2014/8/12 13:41:00
TAB_DOUDOU 364 1 2014/8/12 13:42:00
TAB_DOUDOU 358 3 2014/8/12 13:43:00
TAB_DOUDOU 362 1 2014/8/12 13:44:00
TAB_DOUDOU 362 2 2014/8/12 13:47:00
TAB_DOUDOU 360 1 2014/8/12 13:48:00
TAB_DOUDOU 358 1 2014/8/12 13:50:00
TAB_DOUDOU 357 3 2014/8/12 13:51:01
TAB_DOUDOU 357 1 2014/8/12 13:52:00
TAB_DOUDOU 358 1 2014/8/12 13:53:00
TAB_DOUDOU 356 1 2014/8/12 13:55:00
TAB_DOUDOU 362 4 2014/8/12 14:05:00
TAB_DOUDOU 362 2 2014/8/12 14:15:00
TAB_DOUDOU 363 1 2014/8/12 14:45:00
TAB_DOUDOU 363 2 2014/8/12 14:55:01
TAB_DOUDOU 361 3 2014/8/12 15:05:00
TAB_DOUDOU 362 1 2014/8/12 15:15:01
TAB_DOUDOU 366 1 2014/8/12 15:25:00
TAB_DOUDOU 360 1 2014/8/12 15:35:00
TAB_DOUDOU 359 2 2014/8/12 15:45:00
TAB_DOUDOU 361 1 2014/8/12 15:55:00
TAB_DOUDOU 361 1 2014/8/12 16:05:00
 
--以上是一个核心业务统计的session值,可以看到接近400的session,多数都是inactive,这个一个资源利用严重不合理的案例,当然了,
 
我会继续给这个系统进行分析与比较,最终给客户提出一个有建设性意义的session值。
 
 
总结:
合理的利用资源也是一种优化的方式。优化其实是一种思想。

oracle session 相关优化的更多相关文章

  1. Oracle session相关数据字典(一)

    (一)session相关视图 (1)视图 v$session v$active_session_history dba_hist_active_session_history 如果是多节点数据库,v$ ...

  2. Oracle 查看相关优化器参数

    select x.ksppinm name, y.ksppstvl value, y.ksppstdf isdefault, decode(bitand(y.ksppstvf, 7), 1, 'MOD ...

  3. 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)

    基于Oracle的SQL优化(社区万众期待数据库优化扛鼎巨著) 崔华 编   ISBN 978-7-121-21758-6 2014年1月出版 定价:128.00元 856页 16开 编辑推荐 本土O ...

  4. oracle里的优化器

    1.1 oracle里的优化器 RBO(Rule-Based-Optinizer):基于规则的优化器 CBO(Cost-Based-Optinizer): 基于成本的优化器 SQL语句执行过程 待执行 ...

  5. Oracle之SQL优化专题01-查看SQL执行计划的方法

    在我2014年总结的"SQL Tuning 基础概述"中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执 ...

  6. 《Oracle RAC性能优化》

    一 RAC环境 RAC架构,2节点信息 节点1 SQL> show parameter instance NAME                                 TYPE    ...

  7. Oracle之SQL优化专题03-如何看懂SQL的执行计划

    专题第一篇<Oracle之SQL优化专题01-查看SQL执行计划的方法>讲到了查看SQL执行计划的方法,并介绍了各种方法的应用场景,那么这一篇就主要介绍下如何看懂SQL的执行计划.毕竟如果 ...

  8. Oracle 性能相关常用脚本(SQL)

    在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考.以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整 ...

  9. 读书笔记-《基于Oracle的SQL优化》-第一章-3

    优化器: 1.优化器的模式: 用于决定在Oracle中解析目标SQL时所用优化器的类型,以及决定当使用CBO时计算成本值的侧重点.这里的“侧重点”是指当使用CBO来计算目标SQL各条执行路径的成本值时 ...

随机推荐

  1. 浅析五大ASP.NET数据控件

    转自:http://kb.cnblogs.com/page/69207/ 摘要:ASP.NET中有不少的控件,在这当中有一部分是用来处理数据的控件.在这里我们正要讨论的就是ASP.NET数据控件,希望 ...

  2. js中的时间转换—毫秒转换成日期时间

    转自:http://www.javascript100.com/?p=181 前几天,在项目中遇到js时间增加问题,要将js毫秒时间转换成日期时间 var oldTime = (new Date(&q ...

  3. 如何解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题

    为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头.这作为一个”特征符”或”字节顺序标记(byte-o ...

  4. leecode Binary Tree Level Order Traversal II java

    做完这道题,只能说基本功很重要,数组中套数组就不会用了,过几天吧1做了,看自己到底等没. https://oj.leetcode.com/problems/binary-tree-level-orde ...

  5. 关于MySQL的分区(partion)

    1 CREATE TABLE part_tab ( c1 int default NULL, c2 ) default NULL, c3 date default NULL ) engine=myis ...

  6. 解决windows10搜索不到内容的问题

    windows 10的搜索突然搜不到程序了, 网上查询说要重建索引,方法如下: 1.按ctr+R键,输入%LocalAppData%\Packages\windows.immersivecontrol ...

  7. 用chrome按F12抓包 页面跳转POST一瞬间就闪没了

  8. [Python]网络爬虫(一):抓取网页的含义和URL基本构成

    一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个 ...

  9. Asp.net mvc 自定义全局的错误事件HandleErrorAttribute无效

    Asp.net mvc 自定义全局的错误事件HandleErrorAttribute,结果无效, 原因: 1.没有在RegisterGlobalFilters 里面添加或者你要的位置添加. 2.你把这 ...

  10. WCF客户端和服务器时间不一致,导致通道建立失败的问题)

    本文转载:http://www.cnblogs.com/bcbr/articles/2288374.html 最近,经常有客户反应,前天还用的好好的系统,今天就不能用了. 考虑到系统近来没有做过改动和 ...