[20160830]清除日誌與跟蹤檔案.txt

lfree發表於2016-08-31

[20160830]清除日誌與跟蹤檔案.txt

--我們資料庫的dataguard磁碟空間非常緊張,前幾天因為一些異常業務操作,導致dataguard磁碟空間不足,
--日誌切換情況:
Date                Day    Total   H0   h1   h2   h3   h4   h5   h6   h7   h8   h9  h10  h11  h12  h13  h14  h15  h16  h17  h18  h19  h20  h21  h22  h23     Avg
------------------- ------ ----- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -------
2016-08-24 00:00:00 Wed        2    0    0    0    0    0    2    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0     .08
2016-08-23 00:00:00 Tue       52    0    0    0    0    0    4    0    0    1    2    1    1    2    0    1    1    3    1    2   16   17    0    0    0    2.17
2016-08-22 00:00:00 Mon       13    0    0    0    0    0    4    0    0    0    0    1    0    1    0    2    0    1    1    0    2    1    0    0    0     .54
2016-08-21 00:00:00 Sun        4    0    0    0    0    0    4    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0     .17
2016-08-20 00:00:00 Sat       10    0    1    0    0    2    4    0    0    0    1    0    0    0    0    0    2    0    0    0    0    0    0    0    0     .42

--//一旦出現dataguard磁碟空間不足,主庫的日誌切換就非常頻繁,注意看8/23日19點-20點的日誌切換情況.實際上8-22甚至8-20號就已經
--//出現異常,正常1天切換4-6個(我們日誌檔案設定很大,1個6G,5點切換4個那是因為做備份)

--異常的業務操作已經交給開發解決,我開始清理跟蹤檔案以及一些日誌.當檢查目錄/u01/app/oracle/admin/dbcndg/adump時我發現:
--這個目錄佔用5g的空間.我進入目錄執行如下:

ls -l
或者
ls -l | head

--甚至出現假死的情況.沒有辦法我只能暫時關閉dg,直接rm -rf /u01/app/oracle/admin/dbcndg/adump.
--然後建立新的/u01/app/oracle/admin/dbcndg/adump目錄,啟動dg資料庫.繼續觀察:

# ls -ltr
..
-rw-r----- 1 oracle oinstall 939 2016-08-24 15:55:25 dbcndg_ora_5520_20160824155525803511143795.aud
-rw-r----- 1 oracle oinstall 939 2016-08-24 15:55:40 dbcndg_ora_5526_20160824155540809233143795.aud
-rw-r----- 1 oracle oinstall 939 2016-08-24 15:55:55 dbcndg_ora_5530_20160824155555805718143795.aud
-rw-r----- 1 oracle oinstall 939 2016-08-24 15:56:10 dbcndg_ora_5533_20160824155610804032143795.aud
-rw-r----- 1 oracle oinstall 939 2016-08-24 15:56:25 dbcndg_ora_5535_20160824155625805177143795.aud
-rw-r----- 1 oracle oinstall 939 2016-08-24 15:56:40 dbcndg_ora_5540_20160824155640806221143795.aud
-rw-r----- 1 oracle oinstall 939 2016-08-24 15:56:55 dbcndg_ora_5552_20160824155655804836143795.aud

--//15秒有一個aud,導致磁碟慢慢消耗。實際上這個非常恐怖,1天產生86400/15=5760個檔案,2天就1萬多個.怪不得ls 都無法執行.
--//仔細檢查內容,發現12c 不斷的在登陸檢查dg庫,建議修改檢查的頻次,個人認為5分鐘比較合適.
--//btw:我同事修改1小時,這個好像又有點過了.

--這讓我想到如何定期清理的問題?我可以寫指令碼定期執行,或者使用logrotate來清理.突然想起來oracle本身就帶有這個功能,只不過時間間隔太長.
--反正這個是dg,一般這些資訊保留10天足夠了.

$ rlwrap adrci
ADRCI: Release 11.2.0.4.0 - Production on Wed Aug 31 10:16:38 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
ADR base = "/u01/app/oracle"
adrci> show homes
ADR Homes:
diag/rdbms/dummy/book
diag/rdbms/book/book
diag/rdbms/book1/book

adrci> set homes diag/rdbms/book/book

adrci> show control
ADR Home = /u01/app/oracle/diag/rdbms/book/book:
*************************************************************************
ADRID      SHORTP_POLICY LONGP_POLICY LAST_MOD_TIME                     LAST_AUTOPRG_TIME                 LAST_MANUPRG_TIME                 ADRDIR_VERSION ADRSCHM_VERSION ADRSCHMV_SUMMARY ADRALERT_VERSION CREATE_TIME
---------- ------------- ------------ --------------------------------- --------------------------------- --------------------------------- -------------- --------------- ---------------- ---------------- ---------------------------------
2363806166 720           8760         2015-11-24 09:10:20.616251 +08:00 2016-08-31 08:41:06.737564 +08:00 2016-05-16 08:44:53.358797 +08:00 1              2               80               1                2015-11-24 09:10:20.616251 +08:00
1 rows fetched

--//裡面的單位是小時.

--//確定程式號。
$ pgrep adrci
53405

--//使用strace跟蹤:
$ strace -p 53405

--可以發現要開啟
open("/u01/app/oracle/diag/rdbms/book/book/metadata/ADR_CONTROL.ams", O_RDONLY|O_SYNC|O_DIRECT) = 3

SCOTT@book> @ &r/10to16 2363806166
10 to 16 HEX   REVERSE16
-------------- -----------------------------------
000008ce4d1d6 0xd6d1e48c-00000000

SCOTT@book> @ &r/10to16 720
10 to 16 HEX   REVERSE16
-------------- -----------------------------------
00000000002d0 0xd0020000-00000000
 
SCOTT@book> @ &r/10to16 8760
10 to 16 HEX   REVERSE16
-------------- -----------------------------------
0000000002238 0x38220000-00000000

--//透過bvi檢視檔案/u01/app/oracle/diag/rdbms/book/book/metadata/ADR_CONTROL.ams.
0000BED0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000BEE0  00 00 00 00 00 00 00 00 00 6C 00 0B 00 04 8C E4 .........l......
                                                    ~~~~~
0000BEF0  D1 D6 04 00 00 02 D0 04 00 00 22 38 0D 78 73 0B .........."8.xs.
          ~~~~~    ~~~~~`~~~~~    ~~~~~~~~~~~    
0000BF00  18 02 0B 15 24 BB 3E 78 1C 3C 0D 78 74 08 1F 01 ....$.>x.<.xt...
0000BF10  2A 07 2B F6 55 60 1C 3C 0D 78 74 05 10 01 2D 36 *.+.U`.<.xt...-6
0000BF20  15 62 CE C8 1C 3C FF 04 00 00 00 02 04 00 00 00 .b...<..........
0000BF30  50 FF 0D 78 73 0B 18 02 0B 15 24 BB 3E 78 1C 3C P..xs.....$.>x.<
0000BF40  6C 00 0B 00 04 8C E4 D1 D6 04 00 00 02 D0 04 00 l...............
0000BF50  00 22 38 0D 78 73 0B 18 02 0B 15 24 BB 3E 78 1C . 8.xs.....$.>x.
0000BF60  3C 0D 78 74 05 0F 02 18 1D 33 47 1E F8 1C 3C FF <.xt.....3G...<.
0000BF70  FF 04 00 00 00 02 04 00 00 00 50 FF 0D 78 73 0B ..........P..xs.
0000BF80  18 02 0B 15 24 BB 3E 78 1C 3C 6C 00 0B 00 04 8C ....$.>x.<l.....
0000BF90  E4 D1 D6 04 00 00 02 D0 04 00 00 22 38 0D 78 73 ..........."8.xs
0000BFA0  0B 18 02 0B 15 24 BB 3E 78 1C 3C FF FF FF 04 00 .....$.>x.<.....
0000BFB0  00 00 02 04 00 00 00 50 FF 0D 78 73 0B 18 02 0B .......P..xs....
0000BFC0  15 24 BB 3E 78 1C 3C AC 00 06 01 00 01 00 00 00 .$.>x.<.........
0000BFD0  00 05 00 00 00 00 00 00 00 00 02 FF FF 06 FF FF ................
0000BFE0  00 00 00 00 06 FF FF 00 00 00 00 06 FF FF 00 00 ................
0000BFF0  00 00 06 FF FF 00 00 00 00 06 FF FF 00 00 00 00 ................
0000C000  06 01 05 00 0C 00 00 00 1B 2D 00 00 01 00 00 00 .........-......
0000C010  00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ................
0000C020  00 00 00 00 01 00 02 00 00 00 00 00 00 00 00 00 ................

--//仔細可以找到對應資訊,也就是修改僅僅修改這些檔案。
--//~前面的0x04 估計表示內容佔用長度。

$ cd  /u01/app/oracle/admin/book/adump
$ touch -d 2016/08/10 aaa
$ ls -l aaa
-rw-r--r-- 1 oracle oinstall 0 2016-08-10 00:00:00 aaa
$ ls -l *.aud |wc
   5299   42392  529192

set control (SHORTP_POLICY = 1)
set control (LONGP_POLICY =  2)

adrci> show control
ADR Home = /u01/app/oracle/diag/rdbms/book/book:
*************************************************************************
ADRID      SHORTP_POLICY LONGP_POLICY LAST_MOD_TIME                     LAST_AUTOPRG_TIME                 LAST_MANUPRG_TIME                 ADRDIR_VERSION ADRSCHM_VERSION ADRSCHMV_SUMMARY ADRALERT_VERSION CREATE_TIME
---------- ------------- ------------ --------------------------------- --------------------------------- --------------------------------- -------------- --------------- ---------------- ---------------- ---------------------------------
2363806166 1             2            2016-08-31 10:41:12.862865 +08:00 2016-08-31 08:41:06.737564 +08:00 2016-08-31 10:51:14.415887 +08:00 1              2               80               1                2015-11-24 09:10:20.616251 +08:00
1 rows fetched

--//透過bvi檢視檔案/u01/app/oracle/diag/rdbms/book/book/metadata/ADR_CONTROL.ams.
0000BEE0  00 00 00 00 00 00 00 00 00 6C 00 0B 00 04 8C E4 .........l......
0000BEF0  D1 D6 04 00 00 00 01 04 00 00 00 02 0D 78 74 08 .............xt.
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0000BF00  1F 03 2A 0D 33 6E 46 68 1C 3C 0D 78 74 08 1F 01 ..*.3nFh.<.xt...
0000BF10  2A 07 2B F6 55 60 1C 3C 0D 78 74 05 10 01 2D 36 *.+.U`.<.xt...-6
0000BF20  15 62 CE C8 1C 3C FF 04 00 00 00 02 04 00 00 00 .b...<..........

--可以發現修改已經生效。手工執行看看:
adrci> purge
adrci>

$ ls -l *.aud |wc
   5299   42392  529192

--昏,並不能清除adump的檔案。僅僅能清除trace下的檔案。

$ ls -l  /u01/app/oracle/diag/rdbms/book/book/trace
total 6608
-rw-r----- 1 oracle oinstall  249061 2016-08-31 10:40:03 alert_book.log
-rw-r----- 1 oracle oinstall 1416938 2016-03-01 09:20:17 alert_book.log_20160301
-rw-r----- 1 oracle oinstall 4717869 2016-08-17 10:29:59 alert_book.log_20160817
-rw-r----- 1 oracle oinstall  315449 2016-08-31 10:44:39 book_mmon_48622.trc
-rw-r----- 1 oracle oinstall   33347 2016-08-31 10:44:39 book_mmon_48622.trm

$ cd /u01/app/oracle/diag/rdbms/book/book/trace
$ touch -d '2016/08/10' aaa
$ ls -l aaa
-rw-r--r-- 1 oracle oinstall 0 2016-08-10 00:00:00 aaa

adrci> purge
$ ls -l aaa
-rw-r--r-- 1 oracle oinstall 0 2016-08-10 00:00:00 aaa

--//依舊存在。

$ mv aaa book_mmon_48623.trc

adrci> purge

$ ls -l aaa
ls: aaa: No such file or directory

--看來要滿足特定的格式。

--//從幫助看也可以確定purge並不清楚adump命令。
adrci> help purge

  Usage: PURGE [[-i <id1> | <id1> <id2>] |
               [-age <mins> [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]]]:

  Purpose: Purge the diagnostic data in the current ADR home. If no
           option is specified, the default purging policy will be used.

  Options:
    [-i id1 | id1 id2]: Users can input a single incident ID, or a
    range of incidents to purge.

    [-age <mins>]: Users can specify the purging policy either to all
    the diagnostic data or the specified type. The data older than <mins>
    ago will be purged

    [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]: Users can specify what type of
    data to be purged.

  Examples:
    purge
    purge -i 123 456
    purge -age 60 -type incident

--看來要清除adump目錄的內容,要採用別的方式,寫著寫著又亂了。僅當做隨筆吧!

--收尾工作:
adrci> set control (LONGP_POLICY =  720)
adrci> set control (SHORTP_POLICY = 240)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2124249/,如需轉載,請註明出處,否則將追究法律責任。

相關文章