Exadata Cloud Service: Database Management を設定してみてみた

# ■ 概要
Database Management(データベース管理)を使用すると、コンテナ・データベース(CDB)、PDBおよび非コンテナ・データベース(非CDB)を含む単一インスタンスおよびRACデータベースを監視できます。データベース管理はOracle Databaseバージョン11.2.0.4以降をサポートしており、データベース管理を使用して実行できる重要なタスクは次のとおりです。

**・メトリック監視**
　Oracleデータベースの主要なパフォーマンスおよび構成メトリックを監視します。
　選択した期間のデータベース・メトリックを比較および分析することもできます。
**・パフォーマンス・ハブ**
　データベース・パフォーマンスを単一画面で表示でき、パフォーマンスの問題を迅速に診断できます。
**・AWRエクスプローラ**
　見やすいグラフでAWRスナップショットからの履歴パフォーマンス・データを視覚化します。
**・グループ監視**
　Oracleデータベースをデータベース・グループにグループ化し、監視します。
**・ジョブ・スケジュール**
　単一のOracle Databaseまたはデータベース・グループに対して管理操作を実行するためのSQLジョブを作成およびスケジュールします。
**・Exadata詳細**
　Exadataシステムにデプロイされた複数のデータベースのパフォーマンス特性を分析するための統計を提供します。
　　- オペレーティング・システム統計
　　- ストレージ・サーバーのソフトウェア統計
　　- スマート・スキャン統計
　　- データベース、ディスクおよびセルの統計
　　- Exadata固有のADDM推奨事項
　　- Exadataシステム統計


ということで、データベース管理がつかえるように Exadata Cloud Service (ExaCS)へ設定してみてみます。

# ■ Exadata Cloud Service作成
次を参考に Exadata Cloud Serviceを作成
[Oracle Cloud: Exadata Cloud Service X8M を作成してみてみた](https://qiita.com/shirok/items/7dbef5bceeec9035c391)


# ■ Oracle Cloudデータベースのデータベース管理の有効化に必要な権限
データベース管理(dpd)に特定のボールト内のデータベース・パスワード・シークレットの読取り権限を付与するポリシーを作成

## ● ポリシーの作成
**1) OCIコンソール画面**
[アイデンティティとセキュリティ] > [ポリシー]をクリック
![02_ポリシー作成01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/dd9ab814-aca4-e2ed-1ac7-ce2aa947f438.png)



**2) ポリシー画面**
[ポリシーの作成]をクリック
![02_ポリシー作成02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/f9d0085b-52ed-fa4f-eee6-80c70cac8718.png)





**3) ポリシーの作成画面**
[ポリシーの作成]をクリックし必要ポリシーを設定して[作成]をクリック



① データベース管理(dpd)に特定のボールト内のデータベース・パスワード・シークレットの読取り権限を付与するポリシーを作成

	Allow service dpd to manage objects in compartment {コンパートメント名}
	Allow service dpd to read secret-family in compartment {コンパートメント名}


② また有効データベース管理権限がない場合、有効にするには、次のデータベース管理リソース・タイプに対する必要な権限

	Allow group {グループ名} to manage dbmgmt-private-endpoints in compartment {コンパートメント名}
	Allow group {グループ名} to read dbmgmt-work-requests in compartment {コンパートメント名}
	Allow group {グループ名} to manage dbmgmt-family in compartment {コンパートメント名}
	Allow group {グループ名} to use database-family in compartment {コンパートメント名}
	Allow group {グループ名} to manage vnics in compartment {コンパートメント名}
	Allow group {グループ名} to use subnets in compartment {コンパートメント名}
	Allow group {グループ名} to use network-security-groups in compartment {コンパートメント名}
	Allow group {グループ名} to use security-lists in compartment {コンパートメント名}
	Allow group {グループ名} to manage virtual-network-family in compartment {コンパートメント名}
	Allow group {グループ名} to manage secret-family in compartment {コンパートメント名}
	Allow group {グループ名} to inspect dbmgmt-managed-databases in compartment {コンパートメント名}
	Allow group {グループ名} to manage dbmgmt-jobs in compartment {コンパートメント名}
	Allow group {グループ名} to read buckets in compartment {コンパートメント名}

![02_ポリシー作成03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/62db3677-2c9e-32ad-a2a4-46d0c683ee5c.png)

**4）ポリシー作成確認**
![02_ポリシー作成04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9dd71098-02db-438c-2d68-4323016bd078.png)



# ■ dbsnmp ユーザの有効化
Oracle Cloud Databaseをモニターおよび管理するために必要な権限(DBSNMPなど)をデータベース・ユーザーに付与

**1) DBSNMPユーザーアカウント有効(OPEN)確認**

	SQL> select USERNAME, ACCOUNT_STATUS from dba_users where USERNAME='DBSNMP';

		USERNAME		       ACCOUNT_STATUS
		--------------------- --------------------------------
		DBSNMP			       OPEN

**2) DBSNMPユーザーアカウント有効化**
EXPIRED & LOCKED 状態の場合、次のように OPEN状態へ変更

	SQL> alter user dbsnmp identified by <password> account unlock;

		User altered.

	SQL> connect dbsnmp/<password>
		Connected.

**3) 権限付与**
Oracle Cloud Databaseをモニターおよび管理するために必要な権限をデータベース・ユーザー(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データベース・ユーザー・パスワードをシークレットとしてボールト・サービスに登録する設定

## ● ボールトの作成
**1) OCIコンソール画面**
[アイデンティティとセキュリティ] > [ボールト]をクリック
![03_ボールト作成01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/51c84b1f-ddbd-b728-029e-acdca3391d84.png)


**2) ボールト画面**
ボールトの名前を設定して、[ボールトの作成]をクリック
![03_ボールト作成02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/3d4a927a-c6f1-1ed2-cfbf-6ea7d9ac211d.png)



**3) ボールトの作成画面**
名前を設定して[ボールトの作成]をクリック
![03_ボールト作成03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/194a8b8e-90bb-dfee-bc89-3a70b34d7a4a.png)


## ● キーの作成
**1) ボールト画面**
作成したボールトをクリックし、キーの作成をクリック
![03_ボールト作成05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0086b203-eead-d1ca-b8b0-27895b693539.png)



**2) キーの作成画面**
次の項目を入力し、[キーの作成]をクリック

	・保護モード: 次のいずれかの操作を行います。
		- ハードウェア・セキュリティ・モジュール(HSM)に格納されて処理されるマスター暗号化キーを作成するには、HSMを選択します。
		- サーバーに格納されて処理されるマスター暗号化キーを作成するには、「ソフトウェア」を選択します。
	・名前: キーを識別するための名前を入力
	・キーのシェイプ: アルゴリズム: 次のいずれかのアルゴリズムを選択します。
		- AES: Advanced Encryption Standard (AES)キーは、保存データの暗号化に使用できる対称キーです。
		- RSA: Rivest - Shamir - Adleman (RSA)キーは、公開キーと秘密キーで構成される非対称キーであり、転送中のデータの暗号化、データの署名および署名済データの整合性の検証に使用できます。
		- ECDSA: 楕円曲線暗号化デジタル署名アルゴリズム(ECDSA)キーは、データの署名および署名付きデータの整合性の検証に使用できる非対称キーです。
	・キーのシェイプ: 長さ: 前のステップで選択した内容に応じて、AESおよびRSAキーのキー長をビット単位で選択するか、ECDSAキーのカーブIDを指定


![04_ボールト-Key作成06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/f7ac1b8a-e0d6-3ab5-514d-dbbf9f56eb07.png)


## ● シークレット作成
**1) ボールト画面**
作成したボールトをクリックし、[シークレット]セクションをクリックして、[シークレット作成]をクリック
![05_ボールト-シークレット作成01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/7b6ad419-534b-4d47-2668-f9569861b345.png)


**2) シークレットの作成画面**
次の項目を入力し、[シークレットの作成]をクリック

	・名前: シークレットを識別する名前を入力
	・説明: シークレットを識別しやすい簡単な説明を入力
	・暗号化キー: 作成したマスター暗号化キーを選択
	・シークレット・タイプ・テンプレート: リストからテンプレート・タイプを選択することにより、入力するシークレット・コンテンツのフォーマットを指定します。
	・シークレット・コンテンツ: DBSNNPユーザーのパスワードをを入力します。(シークレット・バンドルに許容される最大サイズは25 KBです。)

![05_ボールト-シークレット作成02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/27248e37-af24-5e27-6725-42f1a888dd91.png)


**3) シークレットの作成確認**
![05_ボールト-シークレット作成04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b7b4b33a-2e0a-f60e-ab68-c50c73c7bea8.png)





# ■プライベート・エンドポイントの作成
## ● Private Endpoint 設定
データベース管理をOracle Cloudデータベースに接続するには、プライベート・エンドポイントを作成する必要があります。 
プライベート・エンドポイントは、Oracle CloudデータベースにアクセスできるVCN内のデータベース管理の表現であり、選択したサブネット内でプライベートIPアドレスを持つVNICとして機能します。プライベート・エンドポイントは、Oracle Cloud Databaseと同じサブネット上にある必要はありませんが、Oracle Cloud Databaseと通信できるサブネット上にある必要があります。 

**1) OCIコンソール画面**
[Observability &  Management] > [データベース管理] セクションの[管理]をクリック
![01_OCIコンソール_DB管理01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/275d2b6c-ac85-7b0d-2945-33eb13be797d.png)


**2) プライベート・エンドポイント画面**
[データベース管理] > [管理]セクションの[プライベート・エンドポイント]画面で、[プライベート・エンドポイントの作成]をクリック
![01_OCIコンソール_DB管理02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/5968ebc4-b425-3a99-aa55-c65ee703beb8.png)


**3) プライベート・エンドポイントの作成画面**
次の情報を入力し、[プライベート・エンドポイントの作成]をクリック

	・名前: プライベート・エンドポイントの名前を入力
	・説明: オプションで、プライベート・エンドポイントの説明を入力
	・コンパートメントの選択: プライベート・エンドポイントを配置するコンパートメントを選択
	・RACデータベースでこのプライベート・エンドポイントを使用: RACのデータベース管理プライベート・エンドポイントを作成する場合は、このチェック・ボックスを選択
	・仮想クラウド・ネットワーク: Oracle CloudデータベースにアクセスできるVCNを選択
	・サブネット: 選択したVCN内のサブネットを選択
	・ネットワーク・セキュリティ・グループ: オプションで、ベア・メタルまたは仮想マシンDBシステムまたはExadata VMクラスタに追加されたNSGを選択
		「+別のセキュリティ・グループ」をクリックして、別のNSGを選択することもできます。

![01_OCIコンソール_DB管理03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c5f08de2-fbb9-9643-4f90-eb31835569a7.png)


**4) プライベート・エンドポイントの作成完了**
![01_OCIコンソール_DB管理05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/35eb8f0e-d525-c5d2-1c3e-e18aa88ef4de.png)

## ● 1521 Security Route 設定
Endpoint と Exadata が 1521 で通信できるように、Security Route を追加します。
![NSG-1521.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/6037aae2-6f6b-40ff-a469-8f80f58825f5.jpeg)

# ■データベース管理の有効化


**1) OCIコンソール画面**
[監視および管理] > [データベース管理]の[管理] をクリック
![06_データベース管理の有効化01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/2eca71f9-8c06-177c-d4ee-7c56e3b8a7d7.png)


**2) 管理対象データベース画面**
[データベース管理の有効化]をクリック
![06_データベース管理の有効化02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/811ed797-77a3-0064-62bd-ab0b20e4e99d.png)


**3) データベース管理の有効化画面**
次の項目を設定し、[データベース管理の有効化]を

	・データベース・タイプ: 管理するOracle Database Cloudソリューションを選択
	・VMクラスタ(Exadata Cloudサービスの場合): ExaCSの VMクラスタを選択
	・データベース: Oracle Cloud Databaseを選択
	・サービス名: "DB_UNIQUE_NAME.Host_Domain_Name"を入力
		サービス名は、次のSQLで確認できます。
			SQL> show parameter service
				NAME				     TYPE	 VALUE
				------------------------ ------- ------------------------------
				service_names			 string	 cdb_6z5_nrt.clientsubnet.vcn.oraclevcn.com
	・データベース・ユーザー名: データベースユーザー名 DBSNMPを入力
	・既存のシークレットの使用または新しいシークレットの作成: 既存のシークレットの使用を選択
	・データベース・ユーザー・パスワード・シークレットの場所: 事前に作成したシークレットを設定
	・プライベート・エンドポイントの場所: 事前に作成したプライベート・エンドポイントを選択
    ・管理オプション: 次の2つの管理オプションから選択
    	- フル・マネジメント:このオプションには、データベース管理のすべての機能が追加のサービス・コストで含まれます。
			「完全管理」オプションにある パフォーマンス・ハブ機能は、Standard Editionでは、含まれません。
    	- 基本管理:このオプションは、追加コストなしでOracle Cloud Databaseで使用できます。


![06_データベース管理の有効化04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/427e3328-173c-dfa1-5670-0081280d6acc.png)


# ■ データベース画面:データベースの監視メトリック画面
データベース情報にあるデータベース管理項目で、データベース管理の設定が有効化されていることを確認できます。
メトリックの項目にCPU、メモリ、I/O、表領域などのデータベースの監視に必要な20種類を超えるメトリックデータが定義されて表示されます。
また、メトリック値にしきい値を設定し、Notificationsでメール通知、またはFunctionsで処理を自動実行できます。
![06_データベース管理の有効化07-完全管理.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e462713b-b498-8d95-388c-bbbc8e416f36.png)


# ■ パフォーマンス・ハブ画面

**1) データベース画面**
データベース画面にある[パフォーマンス・ハブ]をクリック
![06_データベース管理の有効化06-完全管理.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/58483055-9722-0721-08aa-892376f8a73b.png)


**2) パフォーマンス・ハブ画面**
[レポート]をクリックして、AWR、ASHレポート、パフォーマンス・ハブをダウンロードすることができます。
![パフォーマンスハブ-Exa詳細画面.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/528684bc-9730-9e5a-8e09-fa10506eb8fa.jpeg)



## ・Exadata詳細画面
![08_パフォーマンスハブExadata詳細01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/39a4d33c-9eb6-a9a0-9d36-618aa0b46e33.png)

## ・Active Session History(ASH)分析
Active Session History(ASH)は、データベースへのアクティブなセッション情報を毎秒サンプリング
特定のジョブまたはセッションが応答しないがインスタンスの他の部分は通常どおりに動作している場合など、発生期間が短い一時的なパフォーマンスの問題を解決するのに役立ちます。
AWRの上位には出てこない短期間で完了するSQLの検索が可能で時間、セッション、モジュール、アクション、SQL IDなど様々なディメンションで分析することが可能です。
![パフォーマンスハブ画面.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/3557feb9-0af5-a17c-67c1-05c5bf32b629.jpeg)



## ・リアルタイムSQLモニタリング
データベースで実行されているSQLの詳細、パフォーマンスを可視化し、大量のリソースを消費する長時間実行SQLやパラレルSQLに起因する実行時のパフォーマンス問題などを効果的に特定するのに役立ちます。
![11_リアルタイムSQLモニタリング.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/43825806-c273-ea54-b8f0-623ea9ea0517.png)

## ・SQLチューニング・アドバイザ
パフォーマンスが最適ではないSQLを特定し、改善の方法を明確な根拠に基づいてアドバイスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/20ac2bd4-3360-00fa-1a8a-7e20cb3713d6.png)

## ・AWRエクスプローラ
DatabaseのAWRを直接参照しロード・プロファイルや待機イベントといったインスタンス全体の実行統計をビジュアライズされ、管理対象データベースのAWRデータを調査および分析し、中央リポジトリとして使用して他のデータベースからAWRデータをインポート、分析および比較できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0404e1ad-4e2a-5be6-10bf-b85e8d310478.png)

## ・SQLジョブ
単一のデータベース、またはフリート上でグループとして登録しているデータベース全体に対してSQLジョブ実行を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/48d3c26e-de5c-d51a-373f-33018ff3150c.png)

# ■ フリート・サマリー画面
フリート・サマリー・ページでは、単一インスタンスおよびRACデータベースを含む複数のOracleデータベースを監視できます。これにより、データベースのフリート全体でパフォーマンスの問題の根本原因を事前に検出して特定し、パフォーマンスおよび構成関連のアラートに対応できます。RACデータベースの場合、フリート・サマリー・ページにはRAC環境の概要が表示され、複数のRACデータベースおよびインスタンスを監視できます。 

**1) OCIコンソール画面**
[監視および管理] > [データベース管理] セクションの[フリート・サマリー]をクリック
![10_フリート・サマリー01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/6a4fa39d-7e95-3bf6-4d25-d1af9beb4a93.png)

**2) フリート・サマリー画面**
フリート・サマリーは、 オンプレミス、クラウド上で管理しているデータベース全体の稼働状況や、アラート等の問題を表示し、個々のデータベースのCPU,メモリ,I/O等のリソース、表領域使用率など状態を表示します。
![10_フリート・サマリー02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/ebbcb884-d7d6-cdd0-45f5-d1c5b6113687.png)


# ■ 参考
**・Database Managementの詳細**
　- [Oracle Cloud Infrastructure（OCI）Database Management](https://www.oracle.com/jp/manageability/database-management/)
 
**・Oracle Cloud Infrastructure Documents**
　- [データベース管理の有効化](https://docs.oracle.com/ja-jp/iaas/database-management/doc/enable-database-management.html)
　- [Oracle Cloudデータベースのデータベース管理の有効化に必要な権限](https://docs.oracle.com/ja-jp/iaas/database-management/doc/permissions-required-enable-database-management-oracle-cloud-databases.html#GUID-7C0D1D88-9BAE-4B3C-AEA2-BE4AAD40E324)