首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle 怎么查看单位时间的commit次数

2012-12-30 
oracle 如何查看单位时间的commit次数因为数据量比较大,导致生产I/O出现堵塞现象,分析发现是oracle单位时

oracle 如何查看单位时间的commit次数
因为数据量比较大,导致生产I/O出现堵塞现象,分析发现是oracle单位时间的commit事务量太大,对程序进行修改,现在想看看修改后的单位时间内commit的个数,又没有运维使用的那种系统工具,亲们,这个如何查看单位时间数据库commit的次数呢?
[解决办法]
select * from V$STATNAME where name like '%commit%';
一般是user commits

然后结合v$sesstat 查找哪些session的commit次数过多,找到session之后,找到sid之后,后面怎么看就不用多说了吧
[解决办法]
oracle 怎么查看单位时间的commit次数深入研究commit是比较复杂的,和参数commit_write有关
查看单位时间数据库commit的次数可以比较粗劣找出
同时启动两个session, 一个以sys用户登陆, 一个以用户session登陆
1)在linux shell下运行strace -T -c -p , 跟踪lgwr在这段时间的所有系统调用统计
2)在用户session下运行do_loop procedure 

create or replace procedure do_loop (p_type  in  varchar2) as 

   l_start  NUMBER;  

   l_loops  NUMBER := 10000;  

 BEGIN 

   l_start := DBMS_UTILITY.get_time;  

   FOR i IN 1 .. l_loops LOOP  

     INSERT INTO commit_test (id, description)  

     VALUES (seq_commit_test.nextval, 'Description for ' 
[解决办法]
 i);  

     commit;  

   END LOOP;  

   DBMS_OUTPUT.put_line(RPAD('COMMIT WRITE ' 
[解决办法]
 p_type, 30) 
[解决办法]
 ': ' 
[解决办法]
 (DBMS_UTILITY.get_time - l_start));  

 END;  

 / 

3)在sys 用户下得到lgwr 在此段时间的跟踪统计

里面的字段io_submit的次数基本与commit次数一致

热点排行