[OCI]DBCSのDatabase Management管理

Oracle Cloud Infrastructure上のOracle DatabaseサービスであるDBCSを運用管理する方法は、従来のEnterprise Managerを利用する方法に加えて、**Database Management**サービス（データベース管理サービス）を利用する方法があります。

データベース管理を使用すると、シングルインスタンス、及びRACデータベースを監視でき、これにはコンテナ・データベース（CDB）、プラガブル・データベース（PDB）、及び非コンテナ・データベース（非CDB）が含まれます。

Database Managementサービスで運用管理できるデータベースには、以下の種類があります。

+ 外部データベース
OCIの外部に配置され、外部データベース・サービスのリソースに接続されているOracleデータベース
外部データベースに対してデータベース管理サービスを利用する場合は、DBCSのホストへAgentをインストールする必要があります。

+ Oracle Cloudデータベース
 * ベア・メタルおよび仮想マシンDBシステム
データベース・システム、及び仮想マシンの2ノードのOracle Real Application Clusters（RAC）データベースシステム

 * Exadata Cloud Service<br>
Oracle Databaseクラウド・プラットフォームですが、Exadataの機能を活用できるOracle Databaseのサービス

この記事では、DBCSに対してDatabase Managementを有効化する方法について記載します。

#事前作業

##1. 運用管理ユーザのパスワード、及び権限設定

データベースの運用管理ユーザ（SYSTEMやDBSNMP）に対し、運用管理に必要な権限を設定します。

```
SQL> GRANT CREATE PROCEDURE TO dbsnmp;
 
Grant succeeded.
 
SQL> GRANT SELECT ANY DICTIONARY, SELECT_CATALOG_ROLE TO dbsnmp;
 
Grant succeeded.
 
SQL> GRANT ALTER SYSTEM TO dbsnmp;
 
Grant succeeded.
 
SQL> GRANT ADVISOR TO dbsnmp;
 
Grant succeeded.
 
SQL> GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY TO dbsnmp;
 
Grant succeeded.
```

データベース運用管理ユーザのパスワードを設定します。dbsnmpユーザの場合、デフォルトではロックされているためロック解除も行います。

```
SQL> alter user dbsnmp account unlock;
 
User altered.
 
SQL> alter user dbsnmp identified by "Password";
 
User altered.
```

##2. 運用管理ユーザのパスワードを、OCI Vaultのシークレットに保存

###2-1 [アイデンティテイとセキュリティ］> [ボールト]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/426e3871-de5a-04b2-750b-99d2bf1367e2.png)

###2-2 [ボールトの作成]を押下し、出力されたダイアログにてボールトを作成するコンパートメントを選択し、ボールト名を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/b0c4b00d-8120-3a26-bb82-352a33f4156d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/675eb8c0-6bcc-6f27-0499-fe1b9f5c62af.png)

###2-3 [キーの作成]ボタンを押下し、出力されたダイアログにてコンパートメントを選択し、キー名を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/beee0570-382d-e1a7-81fe-5b21eea4ee18.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/e446e470-8e62-9816-9c99-733598f15173.png)

###2-4 [シークレット]を選択し、「シークレットの作成]ボタンを押下。出力されたダイアログにてスクリーンショット内赤字で記載した必要事項を選択または入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/f3204456-b842-1dfc-3ac3-d975020a3712.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/d863ff98-fe13-bec0-9647-1427b2bf751e.png)

##3. Database Managementサービスを使用するためのIAMポリシーを作成
以下の機能を使用するため、Database Managementサービス（dpd）に権限を付与します。
・OCI Vaultシークレットに格納された運用管理ユーザのパスワードの読み込み
・Object StorageへDBCSのスケジュールJobの実行結果を書き込み
※Administratorsグループのテナンシーであっても、以下の権限は必ず必要です。

```
Allow service dpd to read secret-family in compartment XYZ
Allow service dpd to manage objects in compartment XYZ
```

Administratorsグループのテナンシーではなく、別なグループのテナンシー（ここでは「DB-MGMT-ADMIN」とする。）の場合は、以下の権限をポリシーとして付与する必要があります。

```
Allow group DB-MGMT-ADMIN to manage dbmgmt-family in tenancy
Allow group DB-MGMT-ADMIN to read database-family in tenancy
Allow group DB-MGMT-ADMIN to manage vnics in tenancy
Allow group DB-MGMT-ADMIN to use subnets in tenancy
Allow group DB-MGMT-ADMIN to use network-security-groups in tenancy
Allow group DB-MGMT-ADMIN to use security-lists in tenancy
Allow group DB-MGMT-ADMIN to manage secret-family in compartment XYZ
Allow group DB-MGMT-ADMIN to read buckets in compartment XYZ
```

#ネットワーク設定
##1. 自分のVCNにPrivate Endpointを作成
データベース管理サービスは、オラクルが管理するテナントに常駐し、VCN内に作成されたプライベートエンドポイントを介してクラウドデータベースと通信します。プライベートエンドポイントは、クラウドデータベースと同じサブネットにある必要はありませんが、クラウドデータベースとの通信が可能なサブネットにある必要があります。

###1-1. [監視および管理] > [データベース管理]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/11ee91e1-9be8-8e0c-f997-451cc21885e1.png)

###1-2. 左メニューの[プライベート・エンドポイント]を選択し、[プライベート・エンドポイントの作成]を押下。出力されたダイアログボックスにスクリーンショット内の赤字で記載された必要事項を入力、または選択
プライベート・エンドポイントが作成されると、詳細画面の[プライベートIP]にIPアドレスがアサインされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/0547a3cc-bc5a-06a4-a8c3-d48357221335.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/22cff33c-55e7-4a40-02c0-98100302e7b0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/6797c5bb-c0fb-8327-f026-5fcbfac02024.png)

###1-3. セキュリティリストへ、プライベート・エンドポイントとDBCSのルールを定義
イングレス・ルール、及びエグレス・ルールにDBCSとプライベート・エンドポイントのトラフィックを許可する設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/08803c0e-7402-a730-275a-e30a0f83dce8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/294ee6da-e0a9-3a37-25c3-cd5eac0568ad.png)

#Database Management（データベース管理）サービスの有効化
##1. データベース管理サービスの有効化
データベース管理サービスを有効化するDBシステムの[データベース詳細]ページから、「データベース管理：無効 有効化」のリンク、または「メトリック」の[有効化]ボタンを押下して、データベース管理の有効化画面に遷移
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/aada5256-911b-b540-a341-08b33149d0e0.png)

##2. データベース管理の有効化情報の入力
###2-1. 接続の資格証明を指定
- データベース・ユーザー名：事前作業で指定したデータベース運用管理ユーザ（ここではdbsnmp）を指定
- [既存のシークレットを使用]を選択
- 当該ユーザのパスワードを格納したパスワードシークレットを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/b6211077-cbcb-e283-cb19-29f6066edb7c.png)

###2-2. プライベート・エンドポイント、管理オプションの選択
+ プライベート・エンドポイントの情報：事前作業で作成したプライベート・エンドポイントを選択
+ 管理オプション：完全管理、または基本管理を選択

+ 完全管理
この管理オプションには、全てのデータベース管理機能が含まれていますが、追加のサービスコストがかかります。Oracle Database Enterprise EditionとOracle Database Standard Editionで利用できますが、Oracle Database Standard Editionでは、Performance Hubの機能は含まれていません。
この管理オプションの主な機能の一部を次に示します。
 * データベースの監視および管理機能。これらの機能は現在PDBでは使用できません。
 * 自動データベース診断モニター(ADDM)やブロック・セッションなどの高度なパフォーマンス・ハブ機能、およびSQLジョブや表領域監視などのその他の機能が含まれます。
 * 基本管理の一部として使用できる機能。

+ 基本管理
追加費用なしで以下のような機能が利用可能です。

 * CpuUtilization、StorageAllocated、及びUserCallsなど14の監視メトリックが利用可能であり、これらのメトリックはOCI モニタリングサービス内と、データベースの詳細ページに表示されます。
 
 * CDBのパフォーマンス・ハブのASH分析及びSQL監視機能。これらの機能は現在PDBでは使用できません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/2111695a-2f62-688c-e557-c4025b41d62e.png)

###2-3. データベース管理の有効化確認
データベース管理が有効化されると、以下の赤枠の箇所[データベース管理：]が完全、または基本に変化し、メトリック部分にCPU使用率などの状況が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194823/eb119e00-4c4d-860f-33ae-2c5d285315a1.png)

赤枠内の編集リンクを押下すると、「完全管理」、または「基本管理」への切り替えを行うことが可能です。

#まとめ
DBCSの運用管理には、Agentレスなデータベース管理サービスがお手軽で便利だと思いますが、2021年10月4日現在、Pluggable Database（PDB）はサポート外です。PDBの運用管理ができるサービスはRoad Mapに載っています。
DBCSのEnterprise Edition以上をご利用の方は、Enterprise Managerによる運用管理もご検討ください。これまで通りかなり細かい運用管理が可能です。DBCS SEの場合はDiagnostics Packが入っていないため、監視機能などEMの主要機能が利用不可ですのでご注意ください。

#リソース
[データベース管理マニュアル](https://docs.oracle.com/ja-jp/iaas/database-management/index.html)