故障诊断 | 系统级追踪诊断方法及案例分享

我们在进行Oracle故障调试和内核原理工作的时候,经常需要了解后台运行的动作和细节。一些故障场景,如ORACLE后台进展慢、程序无法启动、无法登陆、相同环境执行结果却大不相同等问题,就需要操作系统级别监控,检查定位问题。

Oracle自身已经提供了很多这类型的工具,如oradebug、各种等待事件和跟踪方式。此外,各类型的操作系统提供出很多系统级别工具,帮助我们进行监控。

我们先来看一个简单的示例:

LGWR进程写 online redo log是否用到缓存?

这里的这个缓存不是指数据库缓存,操作系统的文件缓存,如果对这个问题不明白,我们先看另外一个问题,我们如果怀疑存储有问题,经常会使用DD命令对磁盘进行测试,相关命令如下所示,那这个命令对磁盘的操作是直接写磁盘还是把数据写到文件缓存里去?

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

故障诊断 | 系统级追踪诊断方法及案例分享_第1张图片

我们来实地进行测试验证看一下,这是在我电脑虚拟机上的一个测试结果,DD了2G的文件,花了4.99秒的时间,实际上这个命令结束的时候数据没真正写到磁盘上去,对于磁盘的写到缓存就返回了。我们另外看一条命令

故障诊断 | 系统级追踪诊断方法及案例分享_第2张图片

这里加了一个标志,就是ofag=sync,加完这个标示之后,我们发现写磁盘的速度下降了,写2G的文件花了8秒,多用了60%的时间。这就是文件系统缓存的作用,文件系统缓存大大增加了主机的性能。

我们现在回到之前那个问题,LGWR进程写redo log 会不会用到缓存呢?我们使用strace –p命令来跟踪LGWR进程,为方便观察我们添加一组新的redo日志组并进行切换。

故障诊断 | 系统级追踪诊断方法及案例分享_第3张图片

通过分析TRACE信息我们发现,LGWR进程对online redo log打开使用了o_sync标示,该标示表示直接写入存储设备。

TRUSS/TUSC/STRACE是什么?

下面我引用一下TRUSS的官方解释,TUSC与STRACE工具功能基本一样。

原文链接

你可能感兴趣的:(故障诊断 | 系统级追踪诊断方法及案例分享)