strace对lgwr的探查

LGWR进程调用

3s
    commit;
    日志缓存达到1M
    大于1/3log_buffer
    日志优化先、

准备:准备匿名过程

begin
for i in 1 .. 1000000
loop
insert into t1 values(i,‘AAAAAAAAAAA‘||i);
end loop;
commit;
end;
/

用于循环插入 1000000条数据

1.查寻lgwr的进程PID

[[email protected] ~]$ ps -ef |grep lgwr
oracle 4446 4399 0 00:21 pts/1 00:00:00 grep lgwr
oracle 5248 1 0 Oct27 ? 00:00:01 ora_lgwr_orcl

2.从上图中看出lgwr的pid为5248。使用strace 跟踪

[[email protected] ~]$ strace -fr -o /tmp/lgwrtest.log -p 5248
Process 5248 attached - interrupt to quit
Process 5248 detached

3.[[email protected] ~]$ tail -f /tmp/lgwr8702.log

4.可以过滤出pwrite函数,次函数为为向日志文件写日志

5.观察跟踪日志的过程

5248 0.000179 pwrite(259, "\1\"\0\0\251\216\0\0\16\0\0\0\20\200\200s8\1\0\0\5\1\0\0\257\263\22\0\1\0\22\0"..., 1048576, 18698752) = 1048576
5248 0.012716 pwrite(259, "\1\"\0\0\251\226\0\0\16\0\0\0\0\201>X\3\0\377\377&\f\300\0\320\263\22\0\0\0\0\0"..., 512, 19747328) = 512
5248 0.000095 pwrite(259, "\1\"\0\0\252\226\0\0\16\0\0\0\20\200\234\0168\1\0\0\5\0\0\0\321\263\22\0\1\0\0\0"..., 1048576, 19747840) = 1048576
5248 0.004920 pwrite(259, "\1\"\0\0\252\236\0\0\16\0\0\0\330\200\305\327\5\0\36\0\227\3\0\0\274\0G\0\365)\1\0"..., 512, 20796416) = 512
5248 0.000136 pwrite(259, "\1\"\0\0\253\236\0\0\16\0\0\0\20\200\237.8\1\0\0\5\0\0\0\362\263\22\0\1\0\0\0"..., 727040, 20796928) = 727040
5248 0.000091 pwrite(259, "\1\"\0\0007\244\0\0\16\0\0\0\20\200\7\332`\0\0\0\5\3\0\0\f\264\22\0\1\0\366\0"..., 2048, 21523968) = 2048
5248 0.000042 pwrite(259, "\1\"\0\0;\244\0\0\16\0\0\0\20\200\312\23p\0\0\0\5A\0\0\17\264\22\0\1\0\0\0"..., 512, 21526016) = 512
5248 0.000144 pwrite(259, "\1\"\0\0<\244\0\0\16\0\0\0\20\200\ncl\0\0\0\5\0\0\0\21\264\22\0\1\0\0\0"..., 396288, 21526528) = 396288
5248 0.004110 pwrite(259, "\1\"\0\0B\247\0\0\16\0\0\0\260\200\202\32\0\0\0\0i\f\300\0\274\0\20\0i\4\0\1"..., 652800, 21922816) = 652800
5248 0.000186 pwrite(259, "\1\"\0\0=\254\0\0\16\0\0\0\20\200\250\3138\1\0\0\5\0\0\0008\264\22\0\1\0L\0"..., 1048576, 22575616) = 1048576
5248 0.019982 pwrite(259, "\1\"\0\0=\264\0\0\16\0\0\0\260\200\261\222\0\0\0\0\235\f\300\0\275\0I\0G\4\0\1"..., 512, 23624192) = 512
5248 0.000093 pwrite(259, "\1\"\0\0>\264\0\0\16\0\0\0\20\200{\2018\1\0\0\5\3\0\0Y\264\22\0\1\0\2\1"..., 1048576, 23624704) = 1048576
5248 0.009052 pwrite(259, "\1\"\0\0>\274\0\0\16\0\0\0\20\200d\377\f\1\0\0\1\0\0\0z\264\22\0\10\0:\0"..., 512, 24673280) = 512
5248 0.000100 pwrite(259, "\1\"\0\0?\274\0\0\16\0\0\0\20\200‘\3338\1\0\0\5\2\0\0{\264\22\0\1\0\0\1"..., 902656, 24673792) = 902656
5248 0.008642 pwrite(259, "\1\"\0\0\"\303\0\0\16\0\0\0\344\200\3r\24\0\0\0D\0\252\0\"\0\0\0\5\0\36\0"..., 145920, 25576448) = 145920
5248 0.000168 pwrite(259, "\1\"\0\0?\304\0\0\16\0\0\0\20\200f\2408\1\0\0\5\f\0\0\234\264\22\0\1\0\0\0"..., 1048576, 25722368) = 1048576
5248 0.018422 pwrite(259, "\1\"\0\0?\314\0\0\16\0\0\0\20\200+9\f\1\0\0\1\3\0\0\277\264\22\0X\0\1\0"..., 9728, 26770944) = 9728
5248 0.000130 pwrite(259, "\1\"\0\0R\314\0\0\16\0\0\0\20\200\316\0248\1\0\0\5A\0\0\301\264\22\0\1\0R\0"..., 1048576, 26780672) = 1048576
5248 0.012305 pwrite(259, "\1\"\0\0R\324\0\0\16\0\0\0D\200m\200\210\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512, 27829248) = 512
5248 0.000094 pwrite(259, "\1\"\0\0S\324\0\0\16\0\0\0\20\200ZX8\1\0\0\5\0\0\0\343\264\22\0\1\0\0\0"..., 1048576, 27829760) = 1048576
5248 0.000095 pwrite(259, "\1\"\0\0S\334\0\0\16\0\0\0\20\200\356\"8\1\0\0\5\0\0\0\4\265\22\0\1\0\22\0"..., 351744, 28878336) = 351744
5248 0.003979 pwrite(259, "\1\"\0\0\2\337\0\0\16\0\0\0008\200\352A\0\0\0\0\32\0r\0\0\0\0\0\1\0\36\0"..., 697344, 29230080) = 697344
5248 0.000095 pwrite(259, "\1\"\0\0T\344\0\0\16\0\0\0\20\200\17\2438\1\0\0\5\0\0\0&\265\22\0\1\0\0\0"..., 1048576, 29927424) = 1048576
5248 0.010336 pwrite(259, "\1\"\0\0T\354\0\0\16\0\0\0\34\200\2658AAA231998\r\300\0\0\0\0\0"..., 512, 30976000) = 512
5248 0.000094 pwrite(259, "\1\"\0\0U\354\0\0\16\0\0\0\20\200\204\3158\1\0\0\5\2\0\0L\265\22\0\1\0\0\1"..., 1048576, 30976512) = 1048576
5248 0.009271 pwrite(259, "\1\"\0\0U\364\0\0\16\0\0\0\260\200\7\261\0\0\0\0\240\r\300\0\277\0`\0\342\4\0\1"..., 512, 32025088) = 512
5248 0.000099 pwrite(259, "\1\"\0\0V\364\0\0\16\0\0\0\20\200~:8\1\0\0\5\264\0\0o\265\22\0\1\0\365)"..., 858112, 32025600) = 858112
5248 0.097013 pwrite(259, "\1\"\0\0\342\372\0\0\16\0\0\0`\200\221\307\277\0+\0\317\4\0\1\252\0\0\1\372\22\2\1"..., 190464, 32883712) = 190464
5248 0.000154 pwrite(259, "\1\"\0\0V\374\0\0\16\0\0\0\20\2008\2158\1\0\0\5\0\0\0\221\265\22\0\1\0\365)"..., 1048576, 33074176) = 1048576
5248 0.044251 pwrite(259, "\1\"\0\0V\4\1\0\16\0\0\0008\200(\210\0\0\0\0\32\0\16\0\0\0\0\0\1\0\0\0"..., 1048576, 34122752) = 1048576
5248 0.010451 pwrite(259, "\1\"\0\0V\f\1\0\16\0\0\0`\200\235\f\300\0\v\0\315\4\0\1\252\0\0\1\372\22\2\1"..., 358400, 35171328) = 358400
5248 0.000144 pwrite(259, "\1\"\0\0\22\17\1\0\16\0\0\0\20\200:\3338\1\0\0\0055\0\0\340\265\22\0\1\0\0\0"..., 1007616, 35529728) = 1007616
5248 0.010915 pwrite(259, "\1\"\0\0\302\26\1\0\16\0\0\0\334\200\6\37\"\0\0\0\5\0\36\0\227\3\0\0\300\0\17\0"..., 41472, 36537344) = 41472
5248 0.000117 pwrite(259, "\1\"\0\0\23\27\1\0\16\0\0\0\20\200xY8\1\0\0\5\0\0\0\3\266\22\0\1\0L\0"..., 1048576, 36578816) = 1048576
5248 0.000096 pwrite(259, "\1\"\0\0\23\37\1\0\16\0\0\0\20\200+I8\1\0\0\5\0\0\0$\266\22\0\1\0\10\0"..., 1048576, 37627392) = 1048576
5248 0.000096 pwrite(259, "\1\"\0\0\23‘\1\0\16\0\0\0\20\200\274R8\1\0\0\5\4\0\0F\266\22\0\1\0\2\1"..., 1048576, 38675968) = 1048576
5248 0.010101 pwrite(259, "\1\"\0\0\23/\1\0\16\0\0\0\0\201\21\213\3\0\377\377\216\16\300\0f\266\22\0\0\0\0\0"..., 512, 39724544) = 512
5248 0.000051 pwrite(259, "\1\"\0\0\24/\1\0\16\0\0\0\20\200\216\0038\1\0\0\5\0\0\0g\266\22\0\1\0\36\0"..., 35328, 39725056) = 35328
5248 0.000047 pwrite(259, "\1\"\0\0Y/\1\0\16\0\0\0\20\200\214\350`\0\0\0\5\4\0\0j\266\22\0\1\0\2\1"..., 1024, 39760384) = 1024
5248 0.000046 pwrite(259, "\1\"\0\0[/\1\0\16\0\0\0\20\200\202\245`\0\0\0\5\16\0\0l\266\22\0\1\0\0\1"..., 1024, 39761408) = 1024
5248 0.000043 pwrite(259, "\1\"\0\0]/\1\0\16\0\0\0\20\200\327\300`\0\0\0\5\16\0\0o\266\22\0\1\0\0\0"..., 1024, 39762432) = 1024

仔细观察可以发现,里面的1048576为最大值

SQL> select 1048576/1024/1024 from dual;

发现正好是1M。当日志缓存达到1M时即会记执行lgwr进程写日志。

3S很容易可以观察出来,刷新的时间间隔

时间: 2024-10-12 08:01:56

strace对lgwr的探查的相关文章

用oradebug short_stack及strace -p分析oracle进程是否dead或出现故障

1,可以采用oradebug或者strace -p跟踪后台或前台进程是否dead或hang住2,如果进程出现故障,必会在对应的TRC文件写入最新信息,基于此可以获取非常重要的信息进一步分析与诊断   日志文件在background_dump_dest3,采用 ll -lhrt *lgwr*|tail -10f  获取最新的进程的TRC文件4,而且出现故障时,多半会在ALERT日志记录相关信息,此是排除故障重要且首要的方法及思路5,oradebug setospid ospid  oradebug

[转帖]强大的strace命令用法详解

文章转自: https://www.linuxidc.com/Linux/2018-01/150654.htm strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等. strace底层使用内核的ptrace特性来实现其功能. 在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能.strace作为一种动态跟踪工具,能够帮助运维高效地定位进

技巧: 使用truss、strace或ltrace诊断软件的&quot;疑难杂症&quot;

简介 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss.strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症". truss和strace用来 跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来 跟踪进程调用库函数的情况.truss是早期为System V R4开发的调试程序,包括Aix.FreeBSD在内的大部分Unix系统都自

linux 工具系列之 - strace

 what is strace ? Linux 解释 从字面意思上就可道 strace 跟踪程序执行时候的系统调用和信号. how use? man 一下strace 发现它的参数一大坨,是不是很郁闷,不用担心,其实我们只要记住几个常用的参数就可以搞定绝对大多数问题啦 注意 test指可执行文件 strace  -i 查看可执行文件的系统调用 -i  查看可执行文件在那个地址进行了系统调用,可配合gdb -p " pid of test" 附加到运行的进程 Ctrl  +c 结束 -o

strace常用命令学习

strace是一个非常简单的工具,它可以跟踪系统调用的执行.它常用来跟踪进程执行时的系统调用和所接受的信号.在调试的时候,strace能帮助我们追踪到一个程序所执行的而系统调用.当我们想知道程序和操作系统如何交互的时候,这时极其方便的,比如我们想知道执行了哪些系统调用,并且以何种顺序执行.我们知道,在linux中,进程不能直接访问硬件设备,当进程需要直接访问硬件设备(比如读取磁盘文件,接受网络数据时),必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备.strance可以追踪到一个进程产

Linux --- strace 工具

一.strace strace命令是一个集诊断.调试.统计与一体的工具,可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的. 当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器. strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了.在命令执行的过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值. 二.strace 命令 的

【转】手把手教你用Strace诊断问题

原博客地址:http://huoding.com/2015/10/16/474 早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你用 strace 挂上去看看,不过当你挂上去了,看着满屏翻滚的字符,却十有八九看不出个所以然.本文通过一个简单的案例,向你展示一下在用 strace 诊断问题时的一些套路. 如下真实案例,如有雷同,实属必然!让我们看一台高负载服务器的 top 结果: top 技巧:运行 top 时

使用strace追踪 mysqld

转载请注明出处: http://www.ttlsa.com/html/1841.html strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息.追踪程序运行时的整个生命周期,输出每一个系统调用的名字,参数,返回值和执行消耗的时间等. strace常用参数: -p 跟踪指定的进程 -f 跟踪由fork子进程系统调用 -F 尝试跟踪vfork子进程系统调吸入,与-f同时出现时, vfork不被跟踪 -o filename 默认strace将结果输

性能调优利器之strace

最近需要对一个自己开发的socket server的性能进行分析,刚开始还想了好长时间怎么来分析.后来才意识到其实使用strace就足够了. 观察到的现象是server单进程CPU使用率97,但磁盘i/o只有400MB/s,但这块磁盘可以达到>1GB/s的速度,于是在server开始跑之后直接用 strace -r -p pid -o outfile cat outfile |awk -F'(' '{print $1}'|awk '{print $1,$2}' >outfile.count 之