[20160830]清除日誌與跟蹤檔案.txt
[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- git clean清除未跟蹤檔案Git
- [zt] oracle跟蹤檔案與跟蹤事件Oracle事件
- oracle跟蹤檔案與跟蹤事件(zt)Oracle事件
- 【LOG】Oracle資料庫清理日誌、跟蹤檔案利器Oracle資料庫
- Windows下用命令列工具ADRCI跟蹤日誌檔案Windows命令列
- Git跟蹤與提交檔案Git
- 檔案-跟蹤檔案
- 跟蹤session 與 trace檔案分析Session
- 跟蹤SESSION 與 trace 檔案解析Session
- 將跟蹤與Windows效能日誌資料關聯Windows
- oracle跟蹤檔案和跟蹤事件(zt)Oracle事件
- Oracle跟蹤檔案Oracle
- 基礎知識3——警報日誌,跟蹤檔案,各種檢視
- 資料庫引數檔案控制檔案日誌檔案資料檔案跟蹤檔案等8大檔案的字典資料庫
- mysql 主從日誌檔案mysql-bin檔案清除方法MySql
- Oracle跟蹤檔案trace檔案Oracle
- 呼叫鏈與日誌的關聯式跟蹤查詢
- Oracle RMAN 清除歸檔日誌Oracle
- Oracle RMAN清除歸檔日誌Oracle
- Linux/Unix shell 指令碼清除歸檔日誌檔案Linux指令碼
- 刪除日誌檔案組與日誌檔案成員
- 解析listener跟蹤檔案
- git 忽略跟蹤檔案Git
- 尋找跟蹤檔案
- 控制檔案的跟蹤檔案全文
- [20120723跟蹤檔案的定位.txt
- 獲取跟蹤檔案位置
- 獲取跟蹤檔案_eygle
- 跟蹤 sql 的trace檔案SQL
- tkprof: 分析ORACLE跟蹤檔案Oracle
- [20161130]11g跟蹤檔案位置.txt
- [20160704]從跟蹤檔案抽取sql語句.txtSQL
- [20140217]在toad使用跟蹤檔案.txt
- 新增日誌檔案組與日誌檔案成員
- oracle 10g 歸檔日誌清除Oracle 10g
- 清除SqlServer日誌SQLServer
- Oracle 跟蹤檔案和檔案轉儲(dump)Oracle
- 【YashanDB知識庫】windows配置ODBC跟蹤日誌, 使用日誌定位問題Windows