欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle - crfclust.bdb文件太大

程序员文章站 2022-04-09 15:30:05
今天在检查oracle rac集群时,突然才发现服务器的根目录下面占用了很多空间,照道理不应该出现这种情况,初步猜想可能是哪个日志或跟踪文件太大导致。切换到跟目录,使用du -sh *来一层一层查看到底是哪个文件占用了这么多空间,最后定位到目录/u01/app/11.2.0/grid/crf/db/ ......

今天在检查oracle rac集群时,突然才发现服务器的根目录下面占用了很多空间,照道理不应该出现这种情况,初步猜想可能是哪个日志或跟踪文件太大导致。
切换到跟目录,使用du -sh *来一层一层查看到底是哪个文件占用了这么多空间,最后定位到目录/u01/app/11.2.0/grid/crf/db/<hostname>
使用ls -lsrh对文件进行排序,发现“罪魁祸首”是crfclust.bdb

[root@sz-db02 ~]# df -h
filesystem size used avail use% mounted on
/dev/sda2 193g 7.1g 176g 4% /
tmpfs 100g 24g 77g 24% /dev/shm
/dev/sda1 190m 81m 96m 46% /boot
/dev/sda7 261g 2.9g 245g 2% /home
/dev/sda6 3.9g 11m 3.6g 1% /tmp
/dev/sda3 77g 70g 3.5g 96% /u01
[root@sz-db02 sz-db02]# pwd
/u01/app/11.2.0/grid/crf/db/sz-db02
[root@sz-db02 sz-db02]# ls -l /u01/app/11.2.0/grid/bin/crsctl
-rwxr-xr-x 1 root oinstall 8579 jun 14 2018 /u01/app/11.2.0/grid/bin/crsctl
这几个文件是oracle系统服务cluster health monitor(chm)生成的,主要记录节点的cpu、内存等相关信息,该类文件会慢慢长大,而我这个生产库已经跑了4年了,都已经长到了快80g。解决办法就是删掉它。
[root@sz-db02 sz-db02]# ls -ltrh
total 57g
-rw-r----- 1 root root 8.0k jul 20 2018 repdhosts.bdb
-rw-r----- 1 root root 24k dec 29 2018 __db.001
-rw-r--r-- 1 root root 115m dec 29 2018 sz-db02.ldb
-rw-r----- 1 root root 8.0k aug 5 13:33 crfconn.bdb
-rw-r----- 1 root root 16m oct 12 16:47 log.0000007865
-rw-r----- 1 root root 1.3g oct 12 17:33 crfloclts.bdb
-rw-r----- 1 root root 1.1g oct 12 17:33 crfcpu.bdb
-rw-r----- 1 root root 1.1g oct 12 17:33 crfalert.bdb
-rw-r----- 1 root root 850m oct 12 17:33 crfts.bdb
-rw-r----- 1 root root 998m oct 12 17:33 crfhosts.bdb
-rw-r----- 1 root root 52g oct 12 17:33 crfclust.bdb
-rw-r----- 1 root root 16m oct 12 17:33 log.0000007866
-rw-r----- 1 root root 392k oct 12 17:33 __db.002
-rw-r----- 1 root root 56k oct 12 17:33 __db.006
-rw-r----- 1 root root 1.2m oct 12 17:33 __db.005
-rw-r----- 1 root root 2.1m oct 12 17:33 __db.004
-rw-r----- 1 root root 2.6m oct 12 17:33 __db.003
[root@sz-db02 sz-db02]# du -sh *
1.1g crfalert.bdb
52g crfclust.bdb
8.0k crfconn.bdb
1.1g crfcpu.bdb
998m crfhosts.bdb
1.3g crfloclts.bdb
850m crfts.bdb
12k __db.001
392k __db.002
2.6m __db.003
484k __db.004
904k __db.005
12k __db.006
16m log.0000007865
15m log.0000007866
8.0k repdhosts.bdb
115m sz-db02.ldb
解决手段
1.检查ora.crf服务
[root@sz-db02 sz-db02]# /u01/app/11.2.0/grid/bin/crsctl stat res ora.crf -init -t
--------------------------------------------------------------------------------
name target state server state_details
--------------------------------------------------------------------------------
cluster resources
--------------------------------------------------------------------------------
ora.crf
1 online online sz-db02
2.停掉ora.crf服务
[root@sz-db02 sz-db02]# /u01/app/11.2.0/grid/bin/crsctl stop res ora.crf -init
crs-2673: attempting to stop 'ora.crf' on 'sz-db02'
crs-2677: stop of 'ora.crf' on 'sz-db02' succeeded
[root@sz-db02 sz-db02]#
[root@sz-db02 sz-db02]# /u01/app/11.2.0/grid/bin/crsctl stat res ora.crf -init -t
--------------------------------------------------------------------------------
name target state server state_details
--------------------------------------------------------------------------------
cluster resources
--------------------------------------------------------------------------------
ora.crf
1 offline offline
[root@sz-db02 sz-db02]# ls -ltrh
total 57g
-rw-r----- 1 root root 8.0k jul 20 2018 repdhosts.bdb
-rw-r----- 1 root root 24k dec 29 2018 __db.001
-rw-r--r-- 1 root root 115m dec 29 2018 sz-db02.ldb
-rw-r----- 1 root root 8.0k aug 5 13:33 crfconn.bdb
-rw-r----- 1 root root 16m oct 12 16:47 log.0000007865
-rw-r----- 1 root root 56k oct 12 17:33 __db.006
-rw-r----- 1 root root 850m oct 12 17:34 crfts.bdb
-rw-r----- 1 root root 1.3g oct 12 17:34 crfloclts.bdb
-rw-r----- 1 root root 1.1g oct 12 17:34 crfcpu.bdb
-rw-r----- 1 root root 1.1g oct 12 17:34 crfalert.bdb
-rw-r----- 1 root root 998m oct 12 17:34 crfhosts.bdb
-rw-r----- 1 root root 52g oct 12 17:34 crfclust.bdb
-rw-r----- 1 root root 16m oct 12 17:34 log.0000007866
-rw-r----- 1 root root 1.2m oct 12 17:34 __db.005
-rw-r----- 1 root root 2.1m oct 12 17:34 __db.004
-rw-r----- 1 root root 2.6m oct 12 17:34 __db.003
-rw-r----- 1 root root 392k oct 12 17:34 __db.002
3.删掉这些文件
[root@sz-db02 sz-db02]# rm crfclust.bdb
rm: remove regular file `crfclust.bdb'? yes
[root@sz-db02 sz-db02]# du -sh
5.3g .
4.启动ora.crf服务
[root@sz-db02 sz-db02]# /u01/app/11.2.0/grid/bin/crsctl start res ora.crf -init
crs-2672: attempting to start 'ora.crf' on 'sz-db02'
crs-2676: start of 'ora.crf' on 'sz-db02' succeeded
重新查看这些文件,会发现文件已经初始化了
[root@sz-db02 sz-db02]# ls -ltrh *.bdb
-rw-r----- 1 root root 8.0k oct 12 17:35 crfconn.bdb
-rw-r----- 1 root root 128k oct 12 17:35 crfclust.bdb
-rw-r----- 1 root root 8.0k oct 12 17:35 crfhosts.bdb
-rw-r----- 1 root root 8.0k oct 12 17:35 crfts.bdb
-rw-r----- 1 root root 8.0k oct 12 17:35 crfalert.bdb
-rw-r----- 1 root root 8.0k oct 12 17:35 crfcpu.bdb
-rw-r----- 1 root root 8.0k oct 12 17:35 crfloclts.bdb
[root@sz-db02 sz-db02]# df -h
filesystem size used avail use% mounted on
/dev/sda2 193g 7.1g 176g 4% /
tmpfs 100g 24g 77g 24% /dev/shm
/dev/sda1 190m 81m 96m 46% /boot
/dev/sda7 261g 2.9g 245g 2% /home
/dev/sda6 3.9g 11m 3.6g 1% /tmp
/dev/sda3 77g 13g 60g 18% /u01
[root@sz-db02 sz-db02]#
[root@sz-db02 sz-db02]# pwd
/u01/app/11.2.0/grid/crf/db/sz-db02
注意集群的每个节点都做一遍

一些不严格测试
我通过zabbix监控数据库io的时候也发现,即使数据库没有任何操作,服务器对根目录的io稳定在150kb/s的写,刚开始没想通为什么会出现这种情况,通过上面的排查,才知道集群某些服务(例如chm)会持续写日志,所以才会有持续的io写。
crfclust.bdb在10min内从4m到40m,速度也长的蛮快的,所以应该定期清理。
-rw-r----- 1 root root 4.2m may 22 11:33 crfclust.bdb
-rw-r----- 1 root root 41m may 22 11:42 crfclust.bdb

通过iostat -dxk 20 2测试关掉chm服务前后的磁盘io,这里舍弃第一次的展示结果,因为第一次出现的结果是系统启动以来的平均值,没有参考价值
关闭chm服务
开启chm服务
可以看到开启chm服务,会占用100多kb/s的磁盘io,这也就解释了数据库服务器没有任何操作情况下,仍然有io的原因。目前不清楚关掉这个chm服务是否对数据库有影响,谨慎起见还是让它打开,仅在清理这些文件时临时关闭即可。
转自 https://blog.csdn.net/weixin_34209851/article/details/93950106