OCI Database ManagementでBaseDB/ExaDB-Dのパフォーマンス監視をする

OCIの[Database Management](https://www.oracle.com/jp/manageability/database-management/)は、Oracle Databaseのリソースやパフォーマンス監視に特化したクラウドサービスです。監視対象とするデータベースは、オンプレミスおよびクラウド上のいずれも可能なのですが、構成や設定方法がそれぞれ異なります。

対象がBase-DB、ExaDB-DなどのOracle Cloud Databaseの場合は、以下のようにDatabase ManagementがPrivate Endpointを経由して直接アクセスし、ディクショナリの情報を取りに行きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/6e051f55-91a5-c53c-376e-f3d8924e8a29.png)


今回は、Base-DBのCDB及びPDBをDatabase Managementに登録して使用する手順について紹介します。

※オンプレミスまたはDB on IaaSのOracle Databaseの設定手順は、[こちら](https://qiita.com/western24/items/c391afbf51951424b35f)を参照下さい。


## プライベート・エンドポイントの作成
- まず初めにプライベート・エンドポイントを作成する
OCIのメニューから、監視および管理 -> データベース管理 -> 管理 -> プライベート・エンドポイントの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/e4ac622d-3d2f-c7e0-df01-419bc48a523e.png)
※ NSGを指定しない場合は、サブネットのセキュリティ・リストがDBリスナーのポートをオープンしていることを確認
※ BaseDBのRAC構成やExaDB-Dの場合は、RAC用のチェックをつける

## Vaultのシークレットに接続パスワードを指定する
- DB Managementが対象データベースの接続に使用するユーザー名とパスワードのうち、パスワードはVaultのシークレットで管理する必要がある。そのため、VaultのシークレットにDBパスワードを格納する
OCIメニューから、セキュリティ -> ボールトから新規ボールトを作成し、その中にAESキーを一つ作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/784f41da-4330-2b94-f833-1d9267fbf7eb.png)
Vault内にシークレットを作成する。シークレット・コンテンツは、DB Managmentの接続ユーザーに使用するパスワード(今回は、dbsnmpユーザーを使用するので、そのパスワードを記述)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/1830c5e1-3425-c9fa-c808-92f9b72b8b0c.png)

## Database Managementを有効化する(CDB)
- OCIメニューから、対象とするデータベースの詳細にあるデータベース管理を有効化する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/306df2b4-dfbf-e9a0-c764-7ccf095506a6.png)

- サービス名などは自動入力されているものでOK。今回使用するDBユーザ名はdbsnmp、パスワードのシークレットとプライベートエンドポイントは、事前に作成しておいたものを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/81e186ac-e33c-1ef2-5259-957021c9b6f6.png)
※管理オプションは、PDBも監視対象にし、DB Managementのフル機能を使用するので完全管理を選択する

- 有効化が完了後、OCIのメニューから、監視および管理 -> データベース管理 -> フリート・サマリーのページ遷移し、タイプをCDBに変更すると、Base DBのCDBが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/c00a765f-c367-7d33-11f4-73dae50dd1ab.png)

- パフォーマンス・ハブをクリックして以下のエラーが表示される場合は、Database Managementの接続ユーザーに指定された権限を付与する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/ac70c3b7-68b2-8b33-67ea-c3f7941221f5.png)

```
GRANT CREATE PROCEDURE to dbsnmp;
GRANT SELECT ANY DICTIONARY, SELECT_CATALOG_ROLE to  dbsnmp;
GRANT ALTER SYSTEM to  dbsnmp;
GRANT ADVISOR to  dbsnmp;
GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY to  dbsnmp;
```

## Database Managementを有効化する(PDB)
- PDBの場合も同様にPDBの詳細にあるデータベース管理を有効化する。有効化に必要なサービス名、パスワード、エンドポイントはCDBの設定と同手順でOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/24d7d928-df02-b810-8521-6d4c575f6fbb.png)

- PDBとして登録されサマリーに表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/b64ec067-b85c-23c4-fe74-9bda17ddc39a.png)

以上の手順のように、Oracle Cloud Databaseの場合は、OCIコンソールのみでDatabase Managementの有効化(登録)、無効化(削除)が比較的に簡単に実行することが可能です。

Single DB, RAC DBの場合でも基本的に手順は同じです。また、Data Guard構成の場合は、Standby Database側で同様の手順にてDatabase Managementを有効化させることが可能です。

## Database Managementが提供する主な機能
- Active Session History分析
グラフによるセッション情報の可視化、セッション情報からDBで発生している問題を特定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/f816566d-8e6b-3fdd-a334-cb9283a54ad6.png)

- リアルタイムSQLモニタリング
データベースで実行されている全てのSQLの詳細、パフォーマンスを可視化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/cda1cf16-802e-41d0-8891-0f481be8ada8.png)

- SQLチューニング・アドバイザ
パフォーマンスが最適ではないSQLを特定し、改善の方法を明確な根拠に基づいてアドバイス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/fdbb03dd-6821-044f-dde8-34c1c15b6dad.png)

- AWRエクスプローラ
SQL文を直接実行せずに、画面UI上からAWRレポート情報を取得し、表に可視化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/ad4adc91-f0fc-6ca6-7f8e-047cb34521c2.png)

また、具体的な動作は、[Youtube](https://www.youtube.com/playlist?list=PLiuPvpy8QsiX4V3uJ0W77LgP-Syt3598N)でいろんなパターンが紹介されています