OCI Base DBインスタンスでADRCIユーティリティを使う

本ブログは、[オラクル・クラウドの個人ブログ](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)の1つです。

# 初めに
自動診断リポジトリ・コマンド・インタプリタ(<font color=blue>ADRCI</font>)ユーティリティは、Oracle Database診断データ（トレース、ダンプ、アラート・ログなど）を管理するためのコマンドライン・ツールです。 

ADRCIは、Oracle DB 11gから利用可能であり、オンプレミス環境とクラウドの両方で使用できます。以下では、OCI (Oracle Cloud Infrastructure) のBase DBインスタンスでADRCIを使用する方法を簡単に説明します。

__検証環境__
DBタイプ：OCI Base DB (VM) (シングル・ノード)
DBバージョン: 19c Standard Edition

__ステップ__
[1. ADRCIホームパスの確認](#1-adrciホームパスの確認)
[2. ADRCIホームパスの設定](#2-adrciホームパスの設定)
[3. トレースファイルの表示と削除](#3-トレースファイルの表示と削除)
[4. バッチ・モードでのADRCIの使用](#4-バッチモードでのadrciの使用)

# 1. ADRCIホームパスの確認
__「oracle」ユーザへの切り替え__
DBインスタンスにログインし、「oracle」ユーザーに切り替えます。
コマンド: `sudo su - oracle`

__ホームパスの確認__
ADRホームは、特定のオラクル社の製品またはコンポーネントの特定のインスタンスに対するすべての診断データ(トレース、ダンプ、アラート・ログなど)のルート・ディレクトリです。

複数のADRホーム間で診断データの相関付けを行うことができるようにするために、ADRホームは<font color=blue>ADRベース</font>と呼ばれる同じルート・ディレクトリ下でグループ化されます。例えば、Oracle RAC環境では、ADRベースが共有ディスク上に存在し、各Oracle RACインスタンスのADRホームがこのADRベース下に配置される場合があります。

ADRベースの場所は、`DIAGNOSTIC_DEST`初期化パラメータによって設定されます。

```sql
SQL> show parameter  DIAGNOSTIC_DEST

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /u01/app/oracle
SQL>
```
ADRベースのパスは、`/u01/app/oracle`であることを確認できます。

OCI Base DBの場合、ADRホームのパスは、次のようになります。 
<ADR Base>/diag/rdbms/<font color=blue>\<一意のデータベース名></font>/<font color=green>\<データベース名></font>


<font color=blue>\<一意のデータベース名></font>のフォーマット:
<font color=green>\<データベース名></font>_\<リージョン・キー>\<自動作成された文字列３桁>

OCIコンソールより<font color=blue>\<一意のデータベース名></font>と<font color=green>\<データベース名></font>の内容を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/e93a8867-fd03-382a-b420-2c38505bccee.png)
それで、ADRホームの絶対パスは以下の通りです。
`/u01/app/oracle/diag/rdbms/db19cse_nrt1mn/db19cse`

ホームパスの下に、診断データが格納されています。

```
[oracle@db19c db19cse]$ pwd
/u01/app/oracle/diag/rdbms/db19cse_nrt1mn/db19cse
[oracle@db19c db19cse]$ ll
total 96
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 alert
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 cdump
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 hm
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 incident
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 incpkg
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 ir
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 lck
drwxr-x--- 8 oracle asmadmin  4096 Jul 26 04:08 log
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 metadata
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 metadata_dgif
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 metadata_pv
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 stage
drwxr-x--- 2 oracle asmadmin  4096 Jul 26 04:08 sweep
drwxr-x--- 2 oracle asmadmin 40960 Sep 27 02:05 trace
[oracle@db19c db19cse]$
```

# 2. ADRCIホームパスの設定
__ADRCIの起動__

```sql
[oracle@db19c db19cse]$ adrci

ADRCI: Release 19.0.0.0.0 - Production on Mon Sep 27 09:49:59 2021

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

No ADR base is set
adrci> help

 HELP [topic]
   Available Topics:
        CREATE REPORT
        ECHO
        ESTIMATE
        EXIT
        HELP
        HOST
        IPS
        PURGE
        RUN
        SELECT
        SET BASE
        SET BROWSER
        SET CONTROL
        SET ECHO
        SET EDITOR
        SET HOMES | HOME | HOMEPATH
        SET TERMOUT
        SHOW ALERT
        SHOW BASE
        SHOW CONTROL
        SHOW HM_RUN
        SHOW HOMES | HOME | HOMEPATH
        SHOW INCDIR
        SHOW INCIDENT
        SHOW LOG
        SHOW PROBLEM
        SHOW REPORT
        SHOW TRACEFILE
        SPOOL

 There are other commands intended to be used directly by Oracle, type
 "HELP EXTENDED" to see the list

adrci>
```

__ホームパスの設定__
各種の診断ファイルを使用する前に、ADRホームパスを設定する必要があります。
相対パスでADRホームパスを設定できます。(ADRベースの`/u01/app/oracle`は省略でき、`diag/`で始まります。)

```sql
adrci> show home
No ADR homes are set
adrci> set homepath diag/rdbms/db19cse_nrt1mn/db19cse
adrci> show home
ADR Homes:
diag/rdbms/db19cse_nrt1mn/db19cse
adrci>
```

# 3. トレースファイルの表示と削除
__トレースファイルの表示__

```sql
adrci> show tracefile
     diag/rdbms/db19cse_nrt1mn/db19cse/trace/sbtio.log
     diag/rdbms/db19cse_nrt1mn/db19cse/trace/db19cse_vktm_8822.trc
     diag/rdbms/db19cse_nrt1mn/db19cse/trace/db19cse_vkrm_8992.trc
......
......
     diag/rdbms/db19cse_nrt1mn/db19cse/trace/alert_db19cse.log
adrci>
```

__古いトレースファイルの削除__
次のコマンドは、三日間以上前のトレースファイルを全て削除します（4320分 / 60 = 72時間）。

```sql
adrci> purge -age 4320 -type trace
adrci>
```
# 4. バッチ・モードでのADRCIの使用
古いトレース/アラートファイルを削除する際には、<font color=blue>日次バッチ・ジョブ</font>を実行すると役立ちます。

２種類のパラメータがあります。
<font color=blue>EXEC</font>: ADRCIを起動するオペレーティング・システム・コマンドラインで、1つ以上のADRCIコマンドを発行できます。コマンドが複数ある場合は、セミコロン(;)で区切ります。

<strong>コマンド</strong>: `adrci exec="COMMAND[; COMMAND]..."`
<strong>実施例</strong>:

```
[oracle@db19c ~]$ adrci exec="set homepath diag/rdbms/db19cse_nrt1mn/db19cse; show homes; show incident"
ADR Homes:
diag/rdbms/db19cse_nrt1mn/db19cse

ADR Home = /u01/app/oracle/diag/rdbms/db19cse_nrt1mn/db19cse:
*************************************************************************
0 rows fetched

[oracle@db19c ~]$
```

<font color=blue>SCRIPT</font>: ADRCIコマンドを含むスクリプトを実行できます。スクリプト・ファイルには、セミコロン(;)または改行で区切られた一連のコマンドが含まれています。

<strong>コマンド</strong>: `adrci script=SCRIPT_FILE_NAME`
<strong>実施例</strong>:

```
[oracle@db19c ~]$ cat adrci_script.txt
set homepath diag/rdbms/db19cse_nrt1mn/db19cse
show homes
show incident
[oracle@db19c ~]$ adrci script=adrci_script.txt

ADRCI: Release 19.0.0.0.0 - Production on Tue Sep 28 02:15:03 2021

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

No ADR base is set
ADR Homes:
diag/rdbms/db19cse_nrt1mn/db19cse

ADR Home = /u01/app/oracle/diag/rdbms/db19cse_nrt1mn/db19cse:
*************************************************************************
0 rows fetched

[oracle@db19c ~]$
```

以上です。

----

__関連記事__
[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)
[Oracle Base DBのサービス名を取得する]()

__参考ドキュメント__
[ADRCI: ADRコマンド・インタプリタ](https://docs.oracle.com/cd/F19136_01/sutil/oracle-adr-command-interpreter-adrci.html)