始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

在Linux下使用strace窥视Oracle LGWR进程

发布时间:  2012/9/17 17:26:49

Linux下的strace可以帮助我们跟踪一下程序的系统调用;LGWR是Oracle中的一个重要进程,专门负责将redo写入online redo log中。
      我们试一下用strace窥视一下LGWR的行为。

      首先找出LGWR的进程号:

1 [Oracle@www.linuxidc.com ~]$ ps -ef | grep $ORACLE_SID | grep lgwr 

2 oracle    5140     1  0 Nov09 ?        00:00:12 ora_lgwr_mydb

      在一个终端中执行命令,我们比较关心LGWR对文件的打开操作:

 
1 [Oracle@www.linuxidc.com ~]$ strace -p 5140 2>&1 | grep -i open

      在sqlplus中执行以下语句,用于添加一组新的online redo log:

 
1 ALTER DATABASE ADD LOGFILE ('/u02/oradata/mydb/redolog/group04/redo05a.log',  

2                             '/u02/oradata/mydb/redolog/group04/redo05b.log')  

3       SIZE 50m;

      然后多次切换logfile:

 
1 alter system switch logfile; 

2 alter system switch logfile; 

3 alter system switch logfile; 

4 alter system switch logfile; 

5 alter system switch logfile; 

6 alter system switch logfile;

      此时 strace 这边就有输出了:

 
01 open("/u02/oradata/mydb/redolog/group04/redo05a.log", O_RDONLY) = 60 

02 open("/u02/oradata/mydb/redolog/group04/redo05a.log", O_RDWR|O_SYNC) = 60 

03 open("/u02/oradata/mydb/redolog/group04/redo05b.log", O_RDONLY) = 61 

04 open("/u02/oradata/mydb/redolog/group04/redo05b.log", O_RDWR|O_SYNC) = 61 

05 open("/proc/5164/stat", O_RDONLY)       = 62 

06 open("/u01/app/admin/mydb/bdump/alert_mydb.log", O_WRONLY|O_CREAT|O_APPEND, 0664) = 8 

07 open("/u01/app/admin/mydb/bdump/alert_mydb.log", O_WRONLY|O_CREAT|O_APPEND, 0664) = 8 

08 open("/u01/app/admin/mydb/bdump/alert_mydb.log", O_WRONLY|O_CREAT|O_APPEND, 0664) = 8 

09 ....... 

10 ....... 

11 .......

      我们可以看到LGWR对新的一组redo进行了打开操作,后面是一堆对 alert文件的打开并写入操作,可以看到LGWR对online redo log的open操作采用 O_SYNC 标志,从google中得知,该标志用于绕过文件系统的缓存。

      我们可以再看看文件系统的缓存的巨大作用,用dd命令来模拟一下:

 
01 [ora11g@FWDB ~]$ time dd if=/dev/zero of=/tmp/bigfile.bin bs=1048576 count=2048 ; time sync ;    

02 2048+0 records in 

03 2048+0 records out 

04 2147483648 bytes (2.1 GB) copied, 11.7151 seconds, 183 MB/s 

05   

06 real    0m11.763s 

07 user    0m0.002s 

08 sys     0m5.189s 

09   

10 real    0m9.671s 

11 user    0m0.000s 

12 sys     0m0.561s 

13   

14   

15 [ora11g@FWDB ~]$ time dd if=/dev/zero of=/tmp/bigfile.bin bs=1048576 count=2048 oflag=sync; time sync ;      

16 2048+0 records in 

17 2048+0 records out 

18 2147483648 bytes (2.1 GB) copied, 17.3505 seconds, 124 MB/s 

19   

20 real    0m17.900s 

21 user    0m0.002s 

22 sys     0m6.546s 

23   

24 real    0m0.150s 

25 user    0m0.000s 

26 sys     0m0.003s

      可以看到文件系统的缓存表面上大大增加了吞吐能力,但是如果一旦断电就有可能产生数据丢失的情况。


 


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线