はじめに
DBCSのdbcliコマンドの一覧を見ていると、「create-autoLogCleanPolicy」というコマンドがあります。このコマンドは、マニュアルでは、以下のように記載されており、ログの自動クリーンアップをしてくれるそうです。
dbcli create-autoLogCleanPolicy
dbcli create-autoLogCleanPolicyコマンドを使用して、ログの自動クリーンアップ(パージ)のポリシーを作成します。
マニュアルに記載されている、指定可能なパラメータを見てみると、以下の項目を指定できそうです。
① ログの削除対象は、GI / Database / DCSの3つのようだ。(-c)
② ログ削除を実行するトリガーとして、以下の3種類の閾値を指定できそうだ。
・空き容量のパーセンテージ (-f)
・使用サイズ (-uMB)
・使用量のパーセンテージ(-uPer)
③ 何日より前のログを削除対象にするか(-o)
試してみる
ポリシーを作成してみる
create-autologCleanPolicyを実行して、どのような動作をするか観察してみました。
対象コンポーネントとしてgi/database/dcsのすべてを設定して、その他のオプションはデフォルトにしました。実行後の標準出力を見ると、各コンポーネントにfreeSpaceBelowPercentageが20に設定されて、olderThanが30、OlderThanUnitがDayに設定されました。「空き用量が20%以下になったときに、30日以上前のログを削除する」というポリシーのようです。
# dbcli create-autoLogCleanPolicy -c gi,database,dcs
Component UsageOverPercentage freeSpaceBelowPercentage UsageOverMB OlderThan OlderThanUnit
-------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
gi 0 20 0 30 Day
database 0 20 0 30 Day
dcs 0 20 0 30 Day
スケジュールを見てみると、「Log files Cleanup」というタスクが追加されていました。(★部分)
autoLogCleanPolicy以外にも、デフォルトでいくつかのハウスキーピングっぽいジョブがスケジュールされているようです。
# dbcli list-schedules
ID Name Description CronExpression Disabled
---------------------------------------- ------------------------- -------------------------------------------------- ------------------------------ --------
012a9b48-8980-4055-91f5-3ec545152b9e metastore maintenance internal metastore maintenance 0 0 0 1/1 * ? * false
038dddb7-6fc4-43f0-94cd-eda0709db453 backupreport maintenance backup reports deletion 0 0 0 1/3 * ? * false
1d3769aa-2935-483c-8dcf-f2aae045b0b0 bom maintenance bom reports generation 0 0 1 ? * SUN * false
63ca5ca5-bdb3-4f53-b308-5e964c1f2922 Big File Upload Cleanup clean up expired big file uploads. 0 0 1 ? * SUN * false
72839a79-fd79-4061-a9ad-43f9138fb01a AgentState metastore cleanup internal agentstateentry metastore maintenance 0 0 0 1/1 * ? * false
9d587048-ed45-4d0b-b370-8645aedf272a audit_files_auto_cleanup_<DBユニーク名> audit_files_auto_cleanup : <DB名> 0 0 0 1/1 * ? * false
★ faebd558-8604-400c-a4a0-b9f679d2d8fb Log files Cleanup Auto log file purge bases on policy 0 0 3 1/1 * ? * false
fd4f1b98-3a29-409a-81e7-8894f8fb0f6c Update infrastructure components Update infra components job 0 0 0 */7 * ? * false
cronExpressionの列にスケジュールが設定されていますが、ここは注意が必要です。
linuxのcron式は列が5つで、それぞれの列は以下の意味を持っていますが、
<分> <時間> <日> <月> <曜日>
dbcliで設定するスケジュールは、列を7つ持っています。どうやら、Javaのcron用ライブラリであるQuartzのcron式を使用するようです。
<秒> <分> <時間> <日> <月> <曜日> <年>
なので、0 0 3 1/1 * ? * は、「日次で3:00 AMに実行する」を意味してそうです。
続いて、「空き用量が20%以下になったとき」ですが、どこの空き容量が20%になったときなのでしょうか。
dbcli list-logSpaceUsageコマンドを実行してみると、以下のように出力されました。どうやら、dcsは/ファイルシステムの空き容量、giとdatabaseは/u01の空き容量を対象に空き容量を確認していそうです。
# dbcli list-logSpaceUsage
Timestamp: July 11, 2021 9:41:44 PM JST
----------------------------------------------------------------
Component Size(MB) Partition LogUsagePercentage PartitionFreePercentage
-------------------- -------------------- -------------------- -------------------- --------------------
dcs 9233.00 /dev/mapper/VolGroupSys0-LogVolRoot 20.41 57.00
gi 490.57 /dev/sdd 0.24 87.00
database 40.98 /dev/sdd 0.02 87.00
# df -Ph -T |grep -e /dev/mapper/VolGroupSys0-LogVolRoot -e /dev/sdd
/dev/mapper/VolGroupSys0-LogVolRoot ext4 45G 18G 25G 43% /
/dev/sdd ext4 197G 25G 163G 13% /u01
ログ削除ジョブで、何が削除されるのかを観察する
giとdatabaseのログ削除処理を実行させるには、/u01の使用率を80%以上(空き容量20%以下)にする必要がありそうです。テストのため、ダミーのファイルを作成して、/u01の使用率を80%以上にしてみます。
/u01のサイズが約200GBなので、使用率を80%にするために、ダミーファイルを作成して使用量を160GBにします。現在の使用量が25GBなので、10GBのファイルを14個作成しました。
## /u01配下にディレクトリを作成して
# mkdir /u01/test
# cd /u01/test
## 1つ10GBのダミーファイルを14個作成します
# for i in $(seq -w 1 14)
do
dd if=/dev/zero of=./10g.data.$i bs=1024k count=10240 &
done
使用率が80%を超えました。実行が3:00 AMなので、この状態で一晩寝かせます。
# df -Ph /u01
Filesystem Size Used Avail Use% Mounted on
/dev/sdf 197G 165G 24G 88% /u01
翌朝に、dbcli list-jobsコマンドを実行してみると、3:00 AM ごろに「log file clenaup」ジョブが2つ実行されています。(★部分)
# dbcli list-jobs
ID Description Created Status
---------------------------------------- --------------------------------------------------------------------------- ----------------------------------- ----------
//省略//
47b8d207-9f06-4527-8353-a78a0412cd0a Manage AHF telemetry Tuesday, June 22, 2021, 17:41:55 JST Success
c637099f-75c2-46ea-bfeb-7a8ed1c70002 Remove Audit files for DB: <DB名> Wednesday, July 07, 2021, 00:00:00 JST Success
7c3d526a-5ba0-4baa-8ae3-7440b7e70ce5 log file cleanup Wednesday, July 07, 2021, 03:00:05 JST Success ★
e5c91224-02ad-4183-b774-5ffbcc9220e3 log file cleanup Wednesday, July 07, 2021, 03:00:17 JST Success ★
それぞれのジョブをdescribe-jobで確認してみます。両方とも、「Clean TFA logs」と出力されていました。
# dbcli describe-job -i 7c3d526a-5ba0-4baa-8ae3-7440b7e70ce5
Job details
----------------------------------------------------------------
ID: 7c3d526a-5ba0-4baa-8ae3-7440b7e70ce5
Description: log file cleanup
Status: Success
Created: July 7, 2021 3:00:05 AM JST
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Clean TFA logs July 7, 2021 3:00:06 AM JST July 7, 2021 3:00:17 AM JST Success
# dbcli describe-job -i e5c91224-02ad-4183-b774-5ffbcc9220e3
Job details
----------------------------------------------------------------
ID: e5c91224-02ad-4183-b774-5ffbcc9220e3
Description: log file cleanup
Status: Success
Created: July 7, 2021 3:00:17 AM JST
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Clean TFA logs July 7, 2021 3:00:17 AM JST July 7, 2021 3:00:25 AM JST Success
これだけだと、何が実行されたのかよくわかりません。そういう時は、dcs-agentのログを見ると何が実行されたのかわかることがよくあります。まずは、database関連のログを抜粋して、見てみます。
# less /opt/oracle/dcs/log/dcs-agent.0.0.log
★3:00 AMに「log file Cleanup」ジョブが実行されています
[2021-07-07 03:00:00,005] INFO [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.agent.schedule.DcsJobMonitor: Job : maintenance.Log files Cleanup is going to start...
★ tfactl managelogs -show usageコマンドを使用して、databaseコンポーネントの使用率を確認しているようです。
[2021-07-07 03:00:00,079] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/u01/app/oracle.ahf/tfa/bin/tfactl managelogs -show usage -database]'
★ databaseの使用量合計は、38.40MBのようです。
[2021-07-07 03:00:05,786] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.agent.service.logfiles.LogFileUtils: getTfaTotalSizeMb | Total | 38.40 MB |
###############################################################################
★ 翌日、実際にこのコマンドを実行してみました、38.4MBの内訳は以下のようです
# /u01/app/oracle.ahf/tfa/bin/tfactl managelogs -show usage -database
Output from host : <ホスト名>
------------------------------
.----------------------------------------------------------------------.
| Database Homes Usage |
+-----------------------------------------------------------+----------+
| Location | Size |
+-----------------------------------------------------------+----------+
| /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>/alert | 2.83 MB |
| /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>/incident | 7.66 MB |
| /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>/trace | 16.06 MB |
| /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>/cdump | 11.84 MB |
| /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>/hm | 4.00 KB |
| /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>/log | 40.00 KB |
+-----------------------------------------------------------+----------+
| Total | 38.43 MB |
'-----------------------------------------------------------+----------'
###############################################################################
★続いて、dfコマンドでもDIAG_BASE/rdbms/<DBユニーク名>/<DB名>ディレクトリが含まれるファイルシステムの使用率を確認しています。
[2021-07-07 03:00:05,786] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.agent.service.logfiles.LogFileUtils: Get partion info for /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>
[2021-07-07 03:00:05,786] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/bin/df -m /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>]'
★ 使用率は88%です。
[2021-07-07 03:00:05,831] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils: Output :
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/sdf 201458 167523 23680 88% /u01
★ 閾値の80%を超えていることを検知しています。
[2021-07-07 03:00:05,833] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.agent.schedule.jobs.AutoLogCleanJob: Current partition free space percentage is 12.0, less than 20.Need to purge logs for database
★ジョブが作成されました。
[2021-07-07 03:00:05,848] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.task.report.TaskReportRecorder: Compile task plan for ServiceJobReport
'{
"updatedTime" : 1625594405843,
"jobId" : "7c3d526a-5ba0-4baa-8ae3-7440b7e70ce5",
"status" : "Created",
"message" : null,
"reports" : [ ],
"createTimestamp" : 1625594405844,
"percentageProgress" : "totalWeight=0:completedWeight=0",
"resourceList" : [ ],
"description" : "log file cleanup",
"cause" : null,
"action" : null
}'...
★ ジョブから、tfactl managelogs -purgeコマンドを-older 30d -databaseオプションで実行していました。
[2021-07-07 03:00:06,194] FINE [Clean TFA logs : JobId=7c3d526a-5ba0-4baa-8ae3-7440b7e70ce5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/u01/app/oracle.ahf/tfa/bin/tfactl managelogs -purge -older 30d -database | /bin/sed -r "s/\x1B\[([0-9]{1,
続いて、DCSコンポーネント関連のログを抜粋してみます。
# less /opt/oracle/dcs/log/dcs-agent.0.0.log
★ dcsコンポーネントのログ使用量を確認しています。
[2021-07-07 03:00:05,939] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.agent.schedule.jobs.AutoLogCleanJob: Start to decide the need to clean logs based on policy LogCleanPolicy{nodeId=node_0, component=dcs, freeSpaceBelowPercentage=20, usageOverMB=0, usageOverPercentage=0, olderThan=30, olderThanUnit=Day}
★duコマンドを使用して、/opt/oracle/dcs/log、/opt/oracle/oak/log、/opt/oracle/dcs/repo/node_0/logの使用率を確認しています。
2021-07-07 03:00:05,939] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/usr/bin/du -sm /opt/oracle/dcs/log]'
…
[2021-07-07 03:00:06,094] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/usr/bin/du -sm /opt/oracle/oak/log]'
…
[2021-07-07 03:00:06,173] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/usr/bin/du -sm /opt/oracle/dcs/repo/node_0/log]'
★続いて、dfコマンドを使用して/opt/oracle/oakディレクトリを含むファイルシステムの使用率を確認しています。
[2021-07-07 03:00:06,251] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/bin/df -m /opt/oracle/oak/]'
★今回、/ファイルシステムの使用率はそのままにしているので21%です。閾値未満なので何もしていません。
[2021-07-07 03:00:06,315] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils: Output :
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/VolGroupSys0-LogVolRoot 45229 8811 34098 21% /
最後に、gi関連のログを抜粋してみます。
★ tfactl managelogs -show usage コマンドを使用してgi関連ログの使用量を確認しています。
[2021-07-07 03:00:06,377] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/u01/app/oracle.ahf/tfa/bin/tfactl managelogs -show usage -gi]'
★ dfコマンドを使用して、/u01/app/grid/diag/crs/<ホスト名>/crsディレクトリが存在するファイルシステムの使用率を確認しています。
[2021-07-07 03:00:17,779] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/bin/df -m /u01/app/grid/diag/crs/<ホスト名>/crs]'
★ 使用率は88%です。
[2021-07-07 03:00:17,819] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.utils.CommonsUtils: Output :
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/sdf 201458 167523 23680 88% /u01
★ 閾値である80%を超えていることを検知しています。
[2021-07-07 03:00:17,820] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.agent.schedule.jobs.AutoLogCleanJob: Current partition free space percentage is 12.0, less than 20.Need to purge logs for gi
★ ジョブが作成されました。
[2021-07-07 03:00:17,885] FINE [DefaultQuartzScheduler_Worker-5] com.oracle.dcs.commons.task.report.TaskReportRecorder: Compile task plan for ServiceJobReport
'{
"updatedTime" : 1625594417843,
"jobId" : "e5c91224-02ad-4183-b774-5ffbcc9220e3",
"status" : "Created",
"message" : null,
"reports" : [ ],
"createTimestamp" : 1625594417829,
"percentageProgress" : "totalWeight=2:completedWeight=0",
"resourceList" : [ ],
"description" : "log file cleanup",
"cause" : null,
"action" : null
}'...
★ 作成されたジョブの中で、tfactl managelogs -purge -older 30dを使用して、gi関連のログを削除しています。
[2021-07-07 03:00:18,043] FINE [Clean TFA logs : JobId=e5c91224-02ad-4183-b774-5ffbcc9220e3] com.oracle.dcs.commons.utils.CommonsUtils:
run: cmd= '[su,
-,
root,
-c,
/u01/app/oracle.ahf/tfa/bin/tfactl managelogs -purge -older 30d -gi | /bin/sed -r "s/\x1B\[([0-9]{1,
2}(;
[0-9]{1,
2})?)?[m|K]//g"]'
どうやら、create-autoLogCleanPolicyのgiとdatabaseコンポーネントは、tfactl managelogsを利用してログメンテナンスをしているようです。
では、tfactl managelogsはどのようにログを削除しているのでしょうか。マニュアルを見ても、詳しく書いてないですね。。
なので、やっぱりログを見てみます。tfactl managelogの実行ログは、/u01/app/oracle.ahf/data/repository/suptools/<ホスト名>/managelogs/root配下にありそうです。ありました。
# cd /u01/app/oracle.ahf/data/repository/suptools/*/managelogs/root
# ls -ltr --full-time
total 40
-rw-r--r-- 1 root root 3479 2021-07-06 21:23:46.855599991 +0900 purgelogs_61226.trc
-rw-r--r-- 1 root root 3479 2021-07-06 21:45:10.153493733 +0900 purgelogs_80016.trc
-rw-r--r-- 1 root root 3479 2021-07-06 21:48:06.056736781 +0900 purgelogs_83407.trc
-rw-r--r-- 1 root root 3479 2021-07-06 21:48:35.358934932 +0900 purgelogs_84674.trc
-rw-r--r-- 1 root root 879 2021-07-07 03:00:04.614101730 +0900 purgelogs_42226.trc
-rw-r--r-- 1 root root 1909 2021-07-07 03:00:16.190330440 +0900 purgelogs_42607.trc
-rw-r--r-- 1 root root 2745 2021-07-07 03:00:16.306332876 +0900 purgelogs_42642.trc
-rw-r--r-- 1 root root 6016 2021-07-07 03:00:24.499502929 +0900 purgelogs_43106.trc
-rw-r--r-- 1 root root 879 2021-07-07 08:08:16.529972193 +0900 purgelogs_87972.trc
purgeが行われた時間のログを見てみます。まずは、databaseのpurgeが行われた時間のログを確認します。どうやら、adrciを使用して、diag/rdbms/<DBユニーク名>/<DB名>に対して、purge -age 43200(30日)を実行してるみたいですね。
# cat purgelogs_42607.trc
2021-07-07 03:00:15: OTHER ARG [purge : 1]
2021-07-07 03:00:15: OTHER ARG [older : 30d]
2021-07-07 03:00:15: INFO Purging files older than 30 days
2021-07-07 03:00:15: INFO Space is calculated in bytes [without round off]
2021-07-07 03:00:15: OTHER [ Option : Purge Database ]
2021-07-07 03:00:15: DEBUG Found Diag Dest for RDBMS <DBユニーク名>: /u01/app/oracle
2021-07-07 03:00:15: DEBUG export ADR_BASE=/u01/app/oracle;export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
2021-07-07 03:00:15: DEBUG ADRCI command is: /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/adrci exec='show base'
2021-07-07 03:00:15: DEBUG Proposed ADR Base: /u01/app/oracle, Actual ADR Base: /u01/app/oracle
2021-07-07 03:00:15: DEBUG The ADR Base for RDBMS <DBユニーク名> is: /u01/app/oracle
2021-07-07 03:00:15: DEBUG export ADR_BASE=/u01/app/oracle;export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
2021-07-07 03:00:15: DEBUG ADRCI command is: /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/adrci exec='show homes'
2021-07-07 03:00:15: MESSAGE Cleaning Database ADR Destinations for Database : <DBユニーク名>
2021-07-07 03:00:15: DEBUG Cleaning destination : /u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>
2021-07-07 03:00:15: DEBUG export ADR_BASE=/u01/app/oracle;export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
★ 2021-07-07 03:00:15: DEBUG ADRCI command is: /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/adrci exec='set homepath diag/rdbms/<DBユニーク名>/<DB名>;purge -age 43200'
2021-07-07 03:00:16: INFO Diagnostic Destination "/u01/app/oracle/diag/rdbms/<DBユニーク名>/<DB名>" Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:16: MESSAGE Diagnostic Destinations for Database Home(s) Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:16: MESSAGE Calculating Filesystem Before/After Sizes...
==== Database Home(s) ADR Filesystem(s) Size Summary ====
同じようにGIのpurge logを見てみます。こちらは、クラスタ・コンポーネントの各種パスに対してadrci purge -age 43200(30日)を実行しているようです。
# cat purgelogs_43106.trc
2021-07-07 03:00:22: OTHER ARG [purge : 1]
2021-07-07 03:00:22: OTHER ARG [older : 30d]
2021-07-07 03:00:22: INFO Purging files older than 30 days
2021-07-07 03:00:22: INFO Space is calculated in bytes [without round off]
2021-07-07 03:00:22: OTHER [ Option : Purge GI ]
2021-07-07 03:00:22: INFO Cleaning Grid Infrastructure ADR Destinations
//省略//
2021-07-07 03:00:23: DEBUG ADRCI command is: /u01/app/19.0.0.0/grid/bin/adrci exec='set homepath diag/crs/<ホスト名>/crs;purge -age 43200'
2021-07-07 03:00:23: INFO Diagnostic Destination "/u01/app/grid/diag/crs/<ホスト名>/crs" Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:23: DEBUG ADR Home in Hash for /u01/app/grid is: diag/asm/+asm/+ASM1
2021-07-07 03:00:23: DEBUG Cleaning destination : /u01/app/grid/diag/asm/+asm/+ASM1
2021-07-07 03:00:23: DEBUG export ADR_BASE=/u01/app/grid;export ORACLE_HOME=/u01/app/19.0.0.0/grid
2021-07-07 03:00:23: DEBUG ADRCI command is: /u01/app/19.0.0.0/grid/bin/adrci exec='set homepath diag/asm/+asm/+ASM1;purge -age 43200'
2021-07-07 03:00:23: INFO Diagnostic Destination "/u01/app/grid/diag/asm/+asm/+ASM1" Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:23: DEBUG ADR Home in Hash for /u01/app/grid is: diag/apx/+apx/+APX1
2021-07-07 03:00:23: DEBUG Cleaning destination : /u01/app/grid/diag/apx/+apx/+APX1
2021-07-07 03:00:23: DEBUG export ADR_BASE=/u01/app/grid;export ORACLE_HOME=/u01/app/19.0.0.0/grid
2021-07-07 03:00:23: DEBUG ADRCI command is: /u01/app/19.0.0.0/grid/bin/adrci exec='set homepath diag/apx/+apx/+APX1;purge -age 43200'
2021-07-07 03:00:23: INFO Diagnostic Destination "/u01/app/grid/diag/apx/+apx/+APX1" Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:23: DEBUG ADR Home in Hash for /u01/app/grid is: diag/tnslsnr/<ホスト名>/listener
2021-07-07 03:00:23: DEBUG Cleaning destination : /u01/app/grid/diag/tnslsnr/<ホスト名>/listener
2021-07-07 03:00:23: DEBUG export ADR_BASE=/u01/app/grid;export ORACLE_HOME=/u01/app/19.0.0.0/grid
2021-07-07 03:00:23: DEBUG ADRCI command is: /u01/app/19.0.0.0/grid/bin/adrci exec='set homepath diag/tnslsnr/<ホスト名>/listener;purge -age 43200'
2021-07-07 03:00:24: INFO Diagnostic Destination "/u01/app/grid/diag/tnslsnr/<ホスト名>/listener" Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:24: DEBUG ADR Home in Hash for /u01/app/grid is: diag/tnslsnr/<ホスト名>/asmnet1lsnr_asm
2021-07-07 03:00:24: DEBUG Cleaning destination : /u01/app/grid/diag/tnslsnr/<ホスト名>/asmnet1lsnr_asm
2021-07-07 03:00:24: DEBUG export ADR_BASE=/u01/app/grid;export ORACLE_HOME=/u01/app/19.0.0.0/grid
2021-07-07 03:00:24: DEBUG ADRCI command is: /u01/app/19.0.0.0/grid/bin/adrci exec='set homepath diag/tnslsnr/<ホスト名>/asmnet1lsnr_asm;purge -age 43200'
2021-07-07 03:00:24: INFO Diagnostic Destination "/u01/app/grid/diag/tnslsnr/<ホスト名>/asmnet1lsnr_asm" Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:24: MESSAGE Diagnostic Destinations for GI Home Purged: - 0 files deleted , 0 bytes space recovered
2021-07-07 03:00:24: MESSAGE Calculating Filesystem Before/After Sizes...
==== Grid Infrastructure ADR Filesystem(s) Size Summary ====
テストが終わったので、ダミーファイルを削除します。
# cd /u01/
# rm -rfv test/
…
補足
今回dbcliのcreate-autoLogCleanPolicyを使いましたが、そのほかにもcreate-logCleanJobという機能があります。
create-autoLogCleanPolicyでは、ジョブをスケジュールして閾値をもとにログメンテナンスを実行するかどうか制御していましたが、create-logCleanJobは、スケジューリングや閾値確認はせずに、コマンド実行直後にログメンテナンスを実行するようです。linuxのcronなどを使用して、ジョブの実行時間をユーザ側で制御したい場合は、こちらを使う方がよいかもしれません。(またはtfactlのmanagelogsを直接実行するか)
# dbcli create-logCleanJob -h
Usage: create-logCleanJob [options]
Options:
--components, -c
components list delimited by comma,values are "gi|database|dcs", e.g.
'gi,dcs'.
--help, -h
get help
--json, -j
json output
--olderThan, -o
clean logs older than specified time interval. Default is 30 if it is
not specified.
--unit, -u
unit for the "olderThan" parameter, values are "Day|Hour|Minute".
Default is 'Day' if it is not specified.
さいごに
autoLogCleanPolicyのgi/databaseコンポーネントを対象としたログ削除は、tfactl managelogsを実行しているようだということがわかりました。ただし、この挙動はマニュアルに記載されているものではないため、あくまで現時点(2021年7月)時点での実装であり、将来的に予告なく変更される可能性があることにはご留意ください。時間があればdcsのログ削除は何をやっているのかも、追加でしらべようと思います。