当前位置:  数据库>oracle

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

    来源: 互联网  发布时间:2017-03-29

    本文导语: Linux下的strace可以帮助我们跟踪一下程序的系统调用;LGWR是Oracle中的一个重要进程,专门负责将redo写入online redo log中。       我们试一下用strace窥视一下LGWR的行为。       首先找出LGWR的进程号: 1 [oracle@www.linuxidc.com ...

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

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

if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 21523; var cb_entryId = 1878735; var cb_blogApp = "killkill"; var cb_blogUserGuid = "5560360b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2010/11/16 17:12:00';

    
 
 

您可能感兴趣的文章:

  • linux僵尸(zombie)进程介绍及清除
  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • linux下进程占用内存空间详解
  • linux命令如何实现重启父进程而不会使其子进程退出
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • Linux中最多同时可以开多少个进程,一个进程可以开多少个线程?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • Linux守护进程 的子进程 终端处理
  • Linux内核进程与应用进程的通信方式有哪些?
  • 在linux,如何用共享内存来实现进程间的通讯?(这些进程没有父子关系)
  • linux下system函数调用shell命令后,怎样让主进程不等子进程返回,接着执行(在线)?
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何linux下监控进程及其子进程占用资源?
  • linux下的进程如何访问另外一个进程建立的mutex?
  • linux中用killall命令杀死进程的时候会释放掉该进程所占有的内存吗?
  • linux内核高手进!关于调用__fork()时0号进程的子进程才能与父进程共享PID的困惑
  • 请教:在Linux下怎么样检测一个进程是否是僵尸进程??
  • 请问linux进程的哪些信息保存在内核里?哪些信息又保存在进程空间里?谢谢
  • Linux下请教一个父进程杀死子进程的问题.
  • 怎么查看Linux中所运行的进程,并且知道哪些是停止响应的,用什么命令可以杀掉停止响应的进程?
  • 【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • linux支持ti-rpc么?ti-rpc在linux中是不是只使用udp协议,不能使用tcp协议
  • linux下free命令显示的内存使用情况分析
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • linux下不使用sudo命令执行docker的操作步骤
  • 在XP下使用VMWare安装了Linux AS 5.6之后,使用FTP工具可以远程连接Linux,而在cmd命令行中却连接不上,什么原因 ?
  • 如何使用linux下gdb来调试python程序
  • 原来装了linux和win2k,使用LiLO启动,现在重新win2k,如何恢复使用LILO来引导使得Linux可用
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 在shell中使用数组需要什么特殊的条件马? 怎么在有的linux下能够用,在有的linux下就不能能使用?
  • linux下c/c++使用hash_map方法介绍
  • asp程序使用的access在Linux下如何使用!
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • [请置顶]关于Linux的安装使用问题 请放到 软件使用/操作系统 里提问
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 新装的Linux使用root用户不能使用FTP?
  • linux top命令详解以及top命令的各项使用技巧详细说明
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • linux系统下使用使用性能监视工具的前提?
  • 使用VWMARE安装linux的内存使用问题
  • 嵌入式Linux使用外挂Vsftpd不能正常使用, 请高手解答,谢谢。
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3