zoukankan      html  css  js  c++  java
  • 在Linux下使用strace窥视Oracle LGWR进程

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

          我们试一下用strace窥视一下LGWR的行为。

          首先找出LGWR的进程号:

    [oracle@test02 ~]$ ps -ef | grep $ORACLE_SID | grep lgwr
    oracle    5140     1  0 Nov09 ?        00:00:12 ora_lgwr_mydb

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

    [oracle@test02 ~]$ strace -p 5140 2>&1 | grep -i open 

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

    ALTER DATABASE ADD LOGFILE ('/u02/oradata/mydb/redolog/group04/redo05a.log', 
                                '/u02/oradata/mydb/redolog/group04/redo05b.log') 
          SIZE 50m;

          然后多次切换logfile:

    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;

          此时 strace 这边就有输出了:

    open("/u02/oradata/mydb/redolog/group04/redo05a.log", O_RDONLY) = 60
    open("/u02/oradata/mydb/redolog/group04/redo05a.log", O_RDWR|O_SYNC) = 60
    open("/u02/oradata/mydb/redolog/group04/redo05b.log", O_RDONLY) = 61
    open("/u02/oradata/mydb/redolog/group04/redo05b.log", O_RDWR|O_SYNC) = 61
    open("/proc/5164/stat", O_RDONLY)       = 62
    open("/u01/app/admin/mydb/bdump/alert_mydb.log", O_WRONLY|O_CREAT|O_APPEND, 0664) = 8
    open("/u01/app/admin/mydb/bdump/alert_mydb.log", O_WRONLY|O_CREAT|O_APPEND, 0664) = 8
    open("/u01/app/admin/mydb/bdump/alert_mydb.log", O_WRONLY|O_CREAT|O_APPEND, 0664) = 8
    .......
    .......
    .......

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

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

    [ora11g@FWDB ~]$ time dd if=/dev/zero of=/tmp/bigfile.bin bs=1048576 count=2048 ; time sync ;   
    2048+0 records in
    2048+0 records out
    2147483648 bytes (2.1 GB) copied, 11.7151 seconds, 183 MB/s
    
    real    0m11.763s
    user    0m0.002s
    sys     0m5.189s
    
    real    0m9.671s
    user    0m0.000s
    sys     0m0.561s
    
    
    [ora11g@FWDB ~]$ time dd if=/dev/zero of=/tmp/bigfile.bin bs=1048576 count=2048 oflag=sync; time sync ;     
    2048+0 records in
    2048+0 records out
    2147483648 bytes (2.1 GB) copied, 17.3505 seconds, 124 MB/s
    
    real    0m17.900s
    user    0m0.002s
    sys     0m6.546s
    
    real    0m0.150s
    user    0m0.000s
    sys     0m0.003s

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

  • 相关阅读:
    RAID卡 BBU Learn Cycle周期的影响
    Linux下查看Raid磁盘阵列信息的方法
    ROS导航包的介绍
    ROS源码解读(二)--全局路径规划
    ROS源码解读(一)--局部路径规划
    VS运行release版本正常,直接执行exe文件会出现问题
    IFM设备 Linux方面资料
    Map-making Robots: A Review of the Occupancy Grid Map Algorithm
    Eigen 介绍及简单使用
    绘制二维障碍栅格地图
  • 原文地址:https://www.cnblogs.com/killkill/p/1878735.html
Copyright © 2011-2022 走看看