zoukankan      html  css  js  c++  java
  • oracle session 相关优化

    导读:
    同学们是不是都用遇到过这种情况,一个业务系统开发期业务并发量只是估算一个值,而系统上线后这个并发量可能会出现溢出或是不够的
     
    情况。在这种情况下我们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值。
     
     
    总结:
    合理的利用资源也是一种优化的方式。优化其实是一种思想。
  • 相关阅读:
    【leetcode】1295. Find Numbers with Even Number of Digits
    【leetcode】427. Construct Quad Tree
    【leetcode】1240. Tiling a Rectangle with the Fewest Squares
    【leetcode】1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold
    【leetcode】1291. Sequential Digits
    【leetcode】1290. Convert Binary Number in a Linked List to Integer
    【leetcode】1269. Number of Ways to Stay in the Same Place After Some Steps
    【leetcode】1289. Minimum Falling Path Sum II
    【leetcode】1288. Remove Covered Intervals
    【leetcode】1287. Element Appearing More Than 25% In Sorted Array
  • 原文地址:https://www.cnblogs.com/travel6868/p/4949981.html
Copyright © 2011-2022 走看看