如何查找疯狂增长arch的进程

如果我们要找到是什么进程引起了arch疯狂增长,我们可以用这样的方法来查找:

我们假设我们要生成一个大表,用ctas的方法来做,由于是ddl语句,我们在v$sqlarea里面找不到对应的语句,但是我们发现这个session产生大量的arch,那么我们怎么去找这个session呢?

我们这边可以看到我当前的sid是11,我们用ctas创建一个大表x3。此时arch开始飞快的增长……

由于一般这样的故障,都是由于一个session引发了大量的归档日志,在这里我们用v$sestat来看在单位时间内哪个session生成的redo量最多,哪个session切换redo次数最多。
注:statname中的两个参数说明:
redo size:Total amount of redo generated in bytes;
redo entries:Number of times a redo entry is copied into the redo log buffer

我们看到sid为11的session产生了大量的redo,因此使得arch疯狂的增长。在此,我们可以kill掉这个罪魁祸首了。

由于我们的语句是ddl语句,因此我们如果去找对应的sql,我们会发现其实里面是在操作数据字典:

我们虽然不能找到sql,但是我们已经能发现这个session,kill之:)

如果问题已经发生了,我们只能用logmnr来分析arch了,但是在这里ctas的ddl在arch中也是类似对数据字典的操作:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据