Oracle Cloud MarketplaceのOracle Enterprise Manager 13.3を使ってOracle CloudにEMを構築して、Oracle Cloudのデータベースサービス(PaaS)をターゲットにする

__本記事で紹介している内容を、より新しい情報と詳細な手順をもとに説明されているqiitaの記事が出ました。ぜひ参照ください(2022/12追記)。__
[Oracle Cloud Marketplace: Oracle Enterprise Manager 13c を作成してみてた](https://qiita.com/shirok/items/73f7220010a62187f9a6)
[Oracle Cloud: Enterprise Manager 13c で Exadata を管理できるようにしてみてみた](https://qiita.com/shirok/items/8f4b39998d91bba2aaed)

__本記事で紹介している内容を、より新しい情報と詳細な手順をもとに説明されているqiitaの記事が出ました。ぜひ参照ください(2020/08追記)。__
[Oracle Cloud : Enterprise Manager で DBCS インスタンスを追加](https://qiita.com/sugimount/items/1ca6aedfaa08e43ef9b4)

#### 概要
Oracle Databaseの様々な機能を利用するにあたり、Oracle純正の管理ツールであるOracle Enterprise Manager(以下EM)が利用できると便利なことが多々あります。
Oracle CloudではPaaSのデータベースサービス(DBシステム)を提供しており簡単にOracle DatabaseサーバーをOracle Cloud上に構築できます。Oracle CloudのDBシステムでは、オンプレミス環境のOracle Databaseと同じくEnterprise Manager Express(EM Express)という管理ツールを利用することができます。ただしEM ExpressはEMの機能のサブセットとなっています。(Oracle CloudのDBシステムのプロビジョニング直後の環境ではEM Expressは有効化されていないので、利用したい場合は追加で有効化のためのオペレーションを実施する必要があります。)
**DBシステムでEM Expressを有効化する方法は[こちら](https://qiita.com/o_nohike/items/c38ca0feba5e18750734)を参照ください。**

EMの機能をフルに利用するためには、EMのサーバーが必要になり、Oracle Cloud環境であればIaaS(Compute)に構築する方法が考えられます。ただEMのサーバー環境を構築するには、Oracle Management Server(OMS)、Oracle Management Repository(リポジトリDB)というコンポーネントをインストールする必要があり、結構手間がかかります。

Oracle社はEMをPaaSサービスとして提供していませんが、Oracle Cloud MarketplaceにOracle CloudのIaaS(Compute)にEMサーバー(OMSとリポジトリDB)をプロビジョニングするためのイメージを提供しています。これを利用することで簡単にEMサーバーをOracle Cloudに立ち上げることができます。Oracle Cloud MarketplaceのEMサーバーのイメージ自体は費用が必要なものではありません。もちろんプロビジョニングする先のIaaS(Compute)環境には、通常のIaaSと同じ費用が必要です。
[Oracle Cloud Marketplaceはこちら](https://cloudmarketplace.oracle.com/marketplace/en_US/homeLinkPage)

__必要な費用に関して、この記事を最初に作成したときは、1インスタンス上にEMのOMSサーバーもリポジトリも構築する構成のみでしたので、上記のような記載をしています。その後、構成例にバリエーションができ、OCIのDBCS、さらにRACを使うような構成も出てきています。このあたりに関しては、最新のガイド[Setting Up Oracle Enterprise Manager 13.4 on Oracle Cloud Infrastructure](
https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.4/emcim/)を参照するとよいと思います。
前提となる考え方としては、オンプレミス環境と共通のEnterise Managerのマニュアルを参照ください。[Oracle Enterprise Managerライセンス情報ユーザー・マニュアル 13cリリース1](https://docs.oracle.com/cd/E74608_01/131/OEMLI/introduction.htm#sthref8)
(2020/08追記)__

ここでは、Oracle Cloud上にOracle Cloud MarketplaceのイメージをプロビジョニングしてEMサーバーを構築し、DBシステムを監視する手順に関して紹介します。詳細なガイドというより「とりあえずどんなものか知るために使ってみよう」という指向です。

前半のEMの構築はOracle Cloud特有の手順になります。Marketplaceを利用することで、かなり劇的に構築が簡単になります。後半のDBシステムを監視する手順は、いわばオンプレミス環境で実施する手順と変わりません。ただしOracle Cloud上におけるネットワークに関連した留意事項もあります。
2019年4月ごろの情報・環境を元にこの記事は記載しています。

**Oracle Cloud MarketplaceのEnterprise Managerは進化が早く、13.4が提供されるようになり構成のバリエーションが増え、あわせて情報も多く提供されています。[Oracle Cloud Marketplace](https://cloudmarketplace.oracle.com/marketplace/en_US/homeLinkPage)から"Enterprise Manager"で検索して最新の情報を入手するようにした方がよいです。13.4に関しては下記に情報があります。**
[Oracle Enterpriser Manager 13.4 - Enterprise Cloud Management solution](https://cloudmarketplace.oracle.com/marketplace/en_US/listing/70051865)

**本記事の 「2.Oracle Enterprise Manager13.3の構築(Oracle Cloud Marketplaceからプロビジョニング)」 の内容は、最新のEnterprise Manager 13.4では、かなり手順が異なります。13.4での構築に関しては、上記のページにある「Oracle Enterprise Manager setup」を参照ください。
本記事の 「3.EMからDBシステムを監視対象にする」 に関しては、13.4の環境でも同様の手順となる箇所がほとんどと考えられます(2020/06追記)。**
 
#### 0.事前に確認するとよいドキュメント
**Oracle Cloud MarketplaceのOracle Enterprise Manager 13.3にあるUser Guide**
[ここから](https://cloudmarketplace.oracle.com/marketplace/en_US/listing/51275099)User Guides (ファイル名:OEM_Marketplace_User_Guide.pdf)

**本記事をアップした時点では、ここに記載してあるようにUser Guidesは1つのPDFファイルで、かなり簡素なものでした。その後、より詳細（親切）なガイドになりました。本記事を読むことと並行してUser Guides（下記URL）を確認いただくことを強くお薦めします(2020/01追記)。**
[Setting Up Oracle Enterprise Manager 13.3 on Oracle Cloud Infrastructure
](https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.3.1/emoci/index.html)

Oracle Cloud MarketplaceのEMをプロビジョニングするまでの手順の概要が記載されています。5ページのドキュメントです。英語ですが、事前に一通り目を通しておくとよいです。下図はこのドキュメントにある、このイメージによるEMサーバーの構成のイメージです。1つのVMインスタンス上にOMSとリポジトリDBをインストールしています。
![69.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/ea52e979-ed16-8c1c-56f2-f8aefa54f6ab.png)

**Oracle Enterprise Manager 13c ドキュメント(マニュアル)**
[ここから](https://www.oracle.com/technetwork/jp/oem/enterprise-manager/documentation/index.html)
-> Oracle Enterprise Manager Cloud Control リリース13.3のオンライン・ドキュメント
-> Oracle Enterprise Manager Cloud Control基本インストレーション・ガイド
-> 1 Enterprise Manager Cloud Controlのハードウェア要件
オンプレミス環境でEMの環境構築する際のマニュアルです。Oracle Management Service(OMS)と
Oracle Management Repository(リポジトリDB)に関して、マニュアル上で推奨しているHW要件を確認できます。これはOracle Enterprise Manager 13.3をクラウド上にプロビジョニングする先となるcompute(ホスト)のinstance shapeを選択する際の参考にできます。

**Oracleの製品部門の人のブログのコメント**
[Oracle Enterprise Manager Is Now Available on Oracle Cloud Marketplace](https://blogs.oracle.com/oem/oracle-enterprise-manager-is-now-available-on-oracle-cloud-marketplace)
「What IaaS Compute Options are most appropriate for this EM app?」というところで、EMをプロビジョニングする先のcomputeのinstance shapeの選択に関するコメントをしています。16ocpuのインスタンスを推奨していますが、より小さい構成も評価、テスト、開発用にはいいとしています。

#### 1.Oracle Cloud Infrastructureの事前準備
EMのプロビジョニングの前にOCIの環境の準備をします。ドキュメントUser Guide[Installing Oracle Enterprise Manager 13c Release 3 in Oracle Cloud Infrastructure]を参考に実施します。

##### 1.1.コンパートメント
今回はEMと監視対象とするDBシステムは同じコンパートメント、同じVCN、availability domainに作成します。利用するコンパートメントを作成し、コンパートメントのOCIDを確認します。
コンパートメントの作成に関しては、ここでは説明しませんが下記の記事が参考になります。(コンパートメントの管理画面で[Create Compartment]ボタンから作成できます。)
[OCIコンソールにアクセスして基本を理解する - Oracle Cloud Infrastructureを使ってみよう](https://community.oracle.com/docs/DOC-1019533#jive_content_id_5_)
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/beca80ba-5c78-c53c-c4c8-579befa1fac0.png)
コンパートメントのOCIDは、OCIコンソールメニューから[Identity]-[Compartments]をクリックして利用するコンパートメントの詳細画面を表示して確認します。コピーしたら、どこかテキストファイルにペーストしておきます。
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/f6881d95-b46a-5968-dcdb-70dd4cff08e9.png)

##### 1.2.SSHキーペアの準備
EMのプロビジョニングの設定の際、作成するホストに接続するためのSSHキーペアが必要です。事前に準備して、作業するPCに保持しておきます。また監視対象とするDBシステムにもSSHキーペアが必要です。同じく事前に準備して、作業するPCに保持しておきます。

##### 1.3.Dynamic Groupの作成
EM用のDynamic Groupを作成します。User Guideでは、OEM_Groupという名前で作成するようにガイドされています。今回は別の名前で作成しましたが、動作確認した限りは問題ありませんでした。
OCIコンソールにアクセスし、[Identity]-[Dynamic Groups]を選択します。[Dynamic Groups]の画面が表示されます。[Create Dynamic Group]をクリックします。[Create Dynamic Group]の画面が表示されます。
![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/e18509c1-e244-cce1-4ca4-cb2f4535744d.png)

NAME : 名前を入力します。
Description : 適切に入力します。（入力しなくても大丈夫です）
![4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/3ee0124d-869d-1506-b8fc-729ed8748f1c.png)

とりあえずこれで、画面下部の[Create Dynamic Group]をクリックします。Dynamic Groupが作成されます。続けてDynamic Groupの管理画面で作成したDynamic Groupを選択します。表示された画面で[Edit All Matching Rules]をクリックします。

表示された画面で下記のように入力します。利用するコンパートメントのOCIDを入力に利用します。
```ALL {instance.compartment.id = 'コンパートメントのOCID'} ```
下記のような感じになります。
![5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/2a478db4-1cf8-1cf5-6da8-a50706790cc5.png)
入力したら[Save Rules]をクリックします。

##### 1.4.ポリシーの作成
作成したコンパートメントに対してポリシーを作成します。[OCIコンソールにアクセスして基本を理解する - Oracle Cloud Infrastructureを使ってみよう](https://community.oracle.com/docs/DOC-1019533#jive_content_id_5_)が参考になります。
User Guideでは、ルートコンパートメントに対してポリシーを作成するようにガイドされています。今回はEMと監視対象とするDBシステムを同じコンパートメントに作成し、そのコンパートメントに対するポリシーを設定します。
OCIコンソールにアクセスし、[Identity]-[Policies]を選択します。[Policies]の画面が表示されます。画面左[Compartment]から利用するコンパートメントを選択します。[Create Policy]をクリックします。
![6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/51c3acef-da5a-c6e3-33ab-ba0fc0b0b302.png)

NAME : 名前を入力します。
Description : 適切に入力します。
Policy Versioning : デフォルトのまま[Keep Policy current]とします。
Policy Statements : 下記のように入力します。

```Allow dynamic-group (作成したDynamic Group名) to manage instance-family in compartment (利用するコンパートメント名)```
```Allow dynamic-group (作成したDynamic Group名) to manage volume-family in compartment (利用するコンパートメント名)```
![7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/33582ebb-94b6-976e-dcef-ea699f6322c0.png)
[Create]をクリックします。これでポリシーが作成されます。

##### 1.5.VCNの作成
利用するVCNを作成します。[クラウドに仮想ネットワーク(VCN)を作る - Oracle Cloud Infrastructureを使ってみよう](https://community.oracle.com/docs/DOC-1019114)が参考になります。
OCIコンソールにアクセスし、[Networking]-[Virtual Cloud Networks]を選択します。
画面左[Compartment]から利用するコンパートメントを選択します。[Virtual Cloud Networks in (コンパートメント名) Compartment]の画面が表示されます。[Create Virtual Cloud Network]をクリックします。表示される画面で下記のように入力します。

Create in Compartment : 利用するコンパートメントを選択します。
Name : 名前を入力します。
Create Virtual Cloud Network plus related resources を選択します。ここは**デフォルトと違います**。
残りはデフォルトの設定のままとして、[Create Virtual Cloud Network]をクリックします。これで利用するVCNが作成されます。

##### 1.6.セキュリティリストの設定
利用するVCNのセキュリティリストを設定します。やはり、[クラウドに仮想ネットワーク(VCN)を作る - Oracle Cloud Infrastructureを使ってみよう](https://community.oracle.com/docs/DOC-1019114#jive_content_id_3_)が参考になります。User Guideに指定のあるポートだけでなく、**DBシステムを監視対象とするために必要なポートに関しても設定します。**
OCIコンソールにアクセスし、[Networking]-[Virtual Cloud Networks]を選択します。画面左[Compartment]から利用するコンパートメントを選択します。[Virtual Cloud Networks in (コンパートメント名) Compartment]の画面が表示されます。利用するVCNをクリックします。(VCN名)の画面になります。
画面左の[Security Lists]をクリックします。[Security Lists]が表示されるので、すでに作成されている[Default Security List for (VCN名)]をクリックします。
![8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/b13a1001-ce14-1d11-cc16-1e8ff2627cea.png)

[Default Security List for (VCN名)]の画面で[Edit All Rules]をクリックします。
すでに作成されているルールが表示されます。[Allow Rules for Ingress]の箇所に下記を追加していきます(すでに作成済みのルールはそのままにしておきます)。
ここで、今回はVCNのプライベートサブネットでしか利用しないと考えられる、
**4903=Agent Upload、7301=JVMD、9851=BIP、3872=EM Agent、1521=SQL*Net**のルールは
```Source CIDR : 利用するavailability domainのサブネットCIDR```
としました。今回、availability domainはPHX-AD-2を利用することにしたので、
プライベートサブネットのみで利用するポートは```Source CIDR : 10.0.1.0/24```としています。
**ここの設定は利用環境によって変わってくると考えられますので留意ください。（例えばDBシステムにOracle Cloud外からSQL*Netで接続させたい場合は、該当の設定でSource CIDRを0.0.0.0/0とします。また利用するサブネットによって変更することになります。）**

SSH用(これは作成済みと思われます)
Source Type : CIDR
Source CIDR : 0.0.0.0/0
IP Protocol : TCP
Source Port Range : ALL
Destination Port Range : 22

EMコンソール用
Source Type : CIDR
Source CIDR : 0.0.0.0/0
IP Protocol : TCP
Source Port Range : ALL
Destination Port Range : 7803

Agent Upload用
Source Type : CIDR
Source CIDR : availability domainのサブネットCIDR (今回は10.0.1.0/24)
IP Protocol : TCP
Source Port Range : ALL
Destination Port Range : 4903

JVMD用
Source Type : CIDR
Source CIDR : availability domainのサブネットCIDR (今回は10.0.1.0/24)
IP Protocol : TCP
Source Port Range : ALL
Destination Port Range : 7301

BIP用
Source Type : CIDR
Source CIDR : availability domainのサブネットCIDR (今回は10.0.1.0/24)
IP Protocol : TCP
Source Port Range : ALL
Destination Port Range : 9851

EM Agent用
Source Type : CIDR
Source CIDR : availability domainのサブネットCIDR (今回は10.0.1.0/24)
IP Protocol : TCP
Source Port Range : ALL
Destination Port Range : 3872

SQL*Net用
Source Type : CIDR
Source CIDR : availability domainのサブネットCIDR (今回は10.0.1.0/24)
IP Protocol : TCP
Source Port Range : ALL
Destination Port Range : 1521
![9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/64fb1422-6865-b18d-8294-42241cd9d8bf.png)

##### 1.7.EMの監視対象としてDBシステムの作成
EMの監視対象とするDBシステムを作成します。今回は[クラウドでOracle Databaseを使う - Oracle Cloud Infrastructureを使ってみよう](https://community.oracle.com/docs/DOC-1019568)を参考に作成しました。
今回作成したデータベースはOracle Database Enterprise Edition High Performance,18.0.0.0です。ホスト名[ts-db]、データベース名[orcl18c]、PDB名[pdb1]として作成しています。
EMからDBシステムを監視対象にするための設定では、DBのホストにログインするためのPublic-IP、SSHキーペアが必要です。さらに作成したデータベースのユーザーSYS,SYSTEMのパスワードも必要です。これらはDBシステムを作成したときに設定されます。作成されたDBシステムのホストにsshでログインできるようにしてください。

###### 1.7.1. EMの監視対象のDBシステムのDBインスタンスに接続するためのサービス名の確認
EMからDBシステムを監視対象にするにあたり、DBインスタンスに接続するためのサービス名を確認しておく必要があります。DBのホスト上でlsnrctl statコマンドで確認しておきます。
作成されたDBのホストにログインしoracleユーザーに変更し、lsnrctl statコマンドを実行します。

```
[opc@ts-db ~]$ sudo su - oracle
[oracle@ts-db ~]$ lsnrctl stat
LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 26-APR-2019 12:57:21
  (中略)
Service "orcl18c_phx2z8.(略).oraclevcn.com" has 1 instance(s).
  Instance "orcl18c", status READY, has 2 handler(s) for this service...
Service "pdb1.(略).oraclevcn.com" has 1 instance(s).
  Instance "orcl18c", status READY, has 2 handler(s) for this service...
The command completed successfully
```

今回は、作成したプラガブルデータベース(今回はPDB1)に対するサービス名が
pdb1.(略).oraclevcn.com
であることが確認できます。またコンテナデータベースに対するサービス名が
orcl18c_phx2z8.(略).oraclevcn.com
であることが確認できます。これらのサービス名が後の設定で必要となります。

#### 2.Oracle Enterprise Manager13.3の構築(Oracle Cloud Marketplaceからプロビジョニング)
Oracle Enterprise Manager 13.3のインスタンスを作成します。

##### 2.1.Oracle Cloud MarketplaceからOracle Enterprise Manager 13.3のプロビジョニング
[Oracle Cloud Marketplaceのトップページ](https://cloudmarketplace.oracle.com/marketplace/en_US/homePage.jspx)にアクセスします。画面のタブで[Applications]を選択し、[Products]を選択して検索用のフォームに[Enterprise Manager]と入力して検索します。Oracle Enterprise Manager 13.3が検索されるのでクリックします。
![10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/6be36eed-5042-35aa-f234-a6eab1148648.png)
続いて表示されるMarketplaceの[Oracle Enterprise Manager 13.3]の、画面上部右側にある[GetApp]をクリックします。
![11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/f1e39c28-010c-4cd6-bbc4-5b8466dcb528.png)
続いて表示される画面左側に[If you have an Oracle Cloud Infrastructure account]とあります。今回はアカウントを持っているので、こちら(左側)を利用します。[Select OCI Region]で適切なリージョンを選択します。（必要なら事前にサービスリミットの余裕があるか確認するとよいです。）
[Launch Image]をクリックします。
![12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/7818f462-b939-3ae7-6445-d658e68437b3.png)
別の画面が開きOCIへのログオン画面となります。画面にしたがって利用するテナント名やアカウント情報を入力してログインしてください。すると次のようなOCIの画面が表示され、画面上部が
[Marketplace >> Oracle Enterprise Manager 13.3]
となっています。
![13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/fd0e7855-48c1-23b6-cd83-963d227be1cf.png)
[インスタンスの起動]をクリックします。プロビジョニングするOracle Enterprise Manager 13.3の設定・選択の画面が表示されます。
![14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/e07da5c8-dbbc-04e6-f5d2-a7873d94593d.png)
バージョン : 1.0 - default しか選択肢がありません。（記事作成時点）
コンパートメント : 利用するコンパートメントを選択します。
Terms of Use : チェックします。
上記の選択をして[インスタンスの起動]をクリックします。次に[コンピュート・インスタンスの作成]の画面が表示されます。この画面の入力・選択項目を見ていきます。
![15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/634dc4d2-823e-b89e-d5a5-2972430ecc48.png)
インスタンスの命名 : EMをプロビジョニングするcomputeインスタンスの名前をつけます。今回は[ts-em]としています。
インスタンスの可用性ドメインを選択します : 利用するavailability domainを選択します。「Oracle Cloud Infrastructureの事前準備」の章で利用するavailability domainを決めていると思いますので、それにあわせます。
![16.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/ac3d9ada-4eab-e832-60b2-965cd7624af4.png)
オペレーティング・システムまたはイメージ・ソースを選択します : [Oracle Enterprise Manager 13.3]が選択されています。
インスタンス・タイプの選択 : Virtual MachineかBare Metal Machineを選択します。利用するcomputeにあわせます。とりあえず利用する、という場合はVirtual Machineがよいと思います。
![17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/74bc788e-0bd8-ceaa-3638-9e03749fbeb3.png)
インスタンス・シェイプの選択 : プロビジョニングするcomputeのinstance shape を選択します。
今回は[シェイプの変更]をクリックして[VM.Standard2.2]を選択します。([VM.Standard2.1]でも動作確認はできました。)EMのマニュアル上の要件は「0. 事前に確認するとよいドキュメント」にある情報を参考にしてください。
ブート・ボリュームの構成 : 今回は選択しませんでした。
![18.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/68861af5-9ba3-4835-e6c3-bb6994da9912.png)
SSHキーの追加 : [SSHキー・ファイルの選択]を選択します。
[コンピュータからSSHキー・ファイル(.pub)を選択]のところで、あらかじめ用意していたローカルPCにある生成済みのキーペアのうち公開鍵を入力します。[ファイルの選択]をクリックし公開鍵のファイル(xxx.pub)を選択します。
![19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/c927079a-b947-9d66-1342-ef89101f055f.png)
[ネットワーキングの構成]の各設定項目を選択していきます。「Oracle Cloud Infrastructureの事前準備」の章で設定した環境にあわせて入力します。
[Show Advanced Options]は何もしないで[作成]をクリックします。これでcomputeインスタンスのプロビジョニングが開始されます。
![20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/902eea5a-8c35-01cd-39e2-e9d61d355b24.png)
これで画面上部が[コンピュート >> インスタンス >> インスタンスの詳細]の画面になります。
先の設定で名前を入力したインスタンス(今回は[ts-em]としています)が[プロビジョニング中]と表示されます。今回実施した設定では数分程度で[実行中]となり、EMのOMS+リポジトリDBのあるインスタンスが生成されます。**ただし[実行中]となっても、EMの設定は完了していません。**User Guideには、下記の記載があります。
The Oracle Enterprise Manager configuration will take 30 minutes to complete. Execute the below steps after 30minutes.
**したがって30分程度してから、下記のステップに進むとよいです。**

##### 2.2.EMの起動の確認
作成したEMのホスト(今回は[ts-em])に、sshでターミナルソフトからpublic ipを確認して接続します。通常のcomputeインスタンスと同じように、ユーザopcとEMのインスタンス作成時に指定した公開鍵と対になる秘密鍵を使ってログオンします。通常のcomputesインスタンスへの接続は、下記が参考になります。作成したEMのホストのpublic ipの確認方法も下記の記事で説明されています。
[インスタンスを作成する - Oracle Cloud Infrastructureを使ってみよう](https://community.oracle.com/docs/DOC-1019204#jive_content_id_2_)
ここからドキュメントUser Guideの[6.2 Accessing the Oracle Enterprise Manager Console]以降を参考に作業します。
まず、EMのホストにsshでopcユーザーでログオンし、oracleユーザーに変更します。変更直後EMをインストールしたことが表示されます。

```
[opc@ts-em ~]$ sudo su - oracle
(中略)
Installation details of EM 13.3.0.0.0 .....

EM url: https://ts-em:7803/em
Ports used by this deployment at /u01/app/em13c/middleware/install/portlist.ini
Database location: /u01/app/database/product
Database name:                emrep
EM Middleware Home location:  /u01/app/em13c/middleware
EM Agent Home location:       /u01/app/em13c/emagent/agent_13.3.0.0.0

This information is also available in the file /home/oracle/README.FIRST

To start all processes, as the user oracle, run the script /home/oracle/start_all.sh
To stop all processes, as the user oracle, run the script /home/oracle/stop_all.sh
```
この「oracleユーザーに変更直後に表示されるメッセージ」はよく確認してください。状況によっては下記のようにインストールが完了してないことを表示したりします。

```
NOTE: EM not fully installed yet, check the progress in /var/log/emgc_setup.log
```

EMの各サービスが起動していることを確認します。

```
[oracle@ts-em ~]$ /u01/app/em13c/middleware/bin/emctl status oms
Oracle Enterprise Manager Cloud Control 13c Release 3
Copyright (c) 1996, 2018 Oracle Corporation.  All rights reserved.
WebTier is Up
Oracle Management Server is Up
JVMD Engine is Up
BI Publisher Server is Up
```
EMの各サービスが起動してない場合、EMのプロビジョニングが完了してない可能性があります。上記したように、computeインスタンスのプロビジョンは数分で完了しsshで接続できるようになりますが、EMの設定はその後も実施されており、User Guideは30分程度かかる、とあります。サービスが起動してない場合、すこし時間をおいて再度確認すると起動しているケースがあります。
なお各サービスを起動・停止するスクリプトに関して、oracleユーザーに接続した後に表示されるメッセージに記載されています。

```
To start all processes, as the user oracle, run the script /home/oracle/start_all.sh
To stop all processes, as the user oracle, run the script /home/oracle/stop_all.sh
```
EMの各サービスの起動・停止には少し時間がかかります(10分程度)。
rootユーザーに変更して、EMのsysmanのパスワードを確認します。

**この方法ではsysmanのパスワードは確認できないようになりました（該当のファイルがなくなっています）。User Guideの[Deploy Enterprise Manager](https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.3.1/emoci/index.html#DeployEnterpriseManager)にsysmanの初期パスワードに関する記載があります。2020/01のこのドキュメントの情報では welcome1 であることが記載されています。**
![70.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/a3ece555-3021-cbb1-a596-76d1bf373a33.png)
(2020/01追記)

```
[oracle@ts-em ~]$ exit
logout
[opc@ts-em ~]$ sudo su -
（このコマンドで rootユーザーになれない場合は、sudo -s と実行します。)
[root@ts-em ~]# cat /root/.oem/.sysman.pwd
(sysmanのパスワードが表示されます)
```
User Guideでは、この後EMの管理ユーザーsysmanのパスワード変更をガイドしています。sysmanのパスワードを変更しないでも作業を進めることはできます。パスワード変更方法は下記が参考になります。
参考[Oracle Enterprise Manager Cloud Control管理者ガイド / OMSのEMCTLコマンド](https://docs.oracle.com/cd/E74608_01/131/EMADM/emctl_cmds.htm#CBJIGDEJ)
sysmanのパスワードを変更する場合、EMのホストでoracleユーザーとなり、下記のようにコマンドを実行していきます。大体15分くらいかかると思います。

```
[oracle@ts-em ~]$ cd /u01/app/em13c/middleware/bin/
[oracle@ts-em bin]$ ./emctl stop oms
(中略)
Oracle Management Server is Down
JVMD Engine is Down
[oracle@ts-em bin]$ ./emctl config oms -change_repos_pwd -old_pwd (今のパスワード) -new_pwd (新しいパスワード)
Oracle Enterprise Manager Cloud Control 13c Release 3
Copyright (c) 1996, 2018 Oracle Corporation.  All rights reserved.

Changing passwords in backend ...
Passwords changed in backend successfully.
Updating repository password in Credential Store...
Successfully updated Repository password in Credential Store.
Restart all the OMSs using 'emctl stop oms -all' and 'emctl start oms'.
Successfully changed repository password.
[oracle@ts-em bin]$ ./emctl stop oms -all
(中略)
BI Publisher Server is Down
[oracle@ts-em bin]$ ./emctl start oms
(中略)
BI Publisher Server is Up
[oracle@ts-em bin]$
```

パブリックIPでブラウザからEMコンソールにアクセスします。
```https://<public ip address>:7803/em```
オンプレミス環境でのEMサーバーに接続した時と同じく[安全な接続ではありません]という警告が表示されますが、エラー内容を確認して[例外を追加]をクリックして、先に進めます(firefoxの場合)。
EMのログイン画面が表示されます。
![21.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/f396add5-0d1b-909c-659d-a349c49c03a6.png)
[ユーザー名:sysman]
[パスワード:(上記で確認・変更したパスワード )]
を入力して、[ログイン]をクリックします。
最初のアクセスでは[アクセシビリティ・プリファレンス]が表示されます。適宜設定して続行します。今回は何もチェックしないで[保存して続行]をクリックします。[ライセンス契約]の画面が表示されるので、[同意します]をクリックします。これで[ようこそ Enterprise Manager Cloud Control 13c]の画面が表示されます。
![22.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/b30f0bf0-e14d-85fa-cb6e-3883506d2172.png)
EMインスタンスの/etc/hostsを確認すると、プロビジョニングで指定した名前(今回はts-em)だけで
なく、emcc.marketplace.comというホスト名も設定されています。

```
[oracle@ts-em ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.1.3 ts-em ts-em
10.0.1.3 emcc.marketplace.com emcc
```
EMサーバーを構築する、という作業はここまでで完了です。

#### 3.EMからDBシステムを監視対象にする
続いて作成したEMサーバーから、DBシステムを監視ターゲットとして追加します。作業内容はオンプレミス環境と同じです。**（EMサーバーを構築するより、ここからの作業の方が手間がかかります。）**

##### 3.1.DBシステムのホストを監視対象にする
作成したEMから事前に作成したDBシステム(Oracle Databaseのホストとデータベースインスタンス)を監視対 3.1.1.DBシステムのホスト側の準備
#####3.1.1.1.DBシステムでポート3872を開ける
EMからエージェントを配布する際に利用されるポート3872をDBのホスト側で開けます。本記事の作者はネットワークの設定に関する知見は頼りないのですが、下記の記事を参考に実施しています。
[(参考)iptablesの設定方法](https://help.sakura.ad.jp/hc/ja/articles/206208121-iptables%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95)
(EMのホスト側は特に不要でした。EMのホストでfirewall-cmd --state コマンドを実施すると、
not runningとなります)

DBのホストにsshで接続し、rootユーザーになり、iptablesの設定を確認します。

```
[opc@ts-db ~]$ sudo su -
[root@ts-db ~]# cat /etc/sysconfig/iptables | grep 3872
(なにも出力はありません)
```
ポート3872の設定はありません。ポート3872を開ける設定をします。

```
[root@ts-db ~]# iptables -I INPUT 5 -p tcp -m tcp --dport 3872 -j ACCEPT
[root@ts-db ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@ts-db ~]# cat /etc/sysconfig/iptables | grep 3872
-A INPUT -p tcp -m tcp --dport 3872 -j ACCEPT
[root@ts-db ~]# iptables -L
この出力に
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:oem-agent
が追加されています。
```

#####3.1.1.2.DBシステムでエージェントの配布先ディレクトリを作成する
DBのホスト側で、EMのエージェントの配布先を作成します。DBのホストにsshで接続し、rootユーザーになり、下記のように実行します。

```
[root@ts-db ~]# cd /u01/app/oracle/product/
[root@ts-db product]# mkdir em13.3
[root@ts-db product]# cd em13.3
[root@ts-db em13.3]# mkdir agent
[root@ts-db em13.3]# chown oracle:oinstall agent
[root@ts-db em13.3]# ls -al
total 12
drwxr-xr-x 3 root   root     4096 May  2 09:04 .
drwxr-xr-x 4 root   root     4096 May  2 09:04 ..
drwxr-xr-x 2 oracle oinstall 4096 May  2 09:04 agent
```
EMのエージェントのインストールのベース・ディレクトリを/u01/app/oracle/product/em13.3/agentとします。

#####3.1.1.3.DBシステムの/etc/hostsの追記
DBのホストからEMのホストへ、サブネットのIPアドレスでホスト名(今回はts-em)でアクセスできるように/etc/hostsを編集します。EMのホストの/etc/hostsのエントリの1行を追加します（**利用される環境にあわせてください**）。

```
[root@ts-db em13.3]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.1.2  ts-db.sub04250155461.tsvcnpho.oraclevcn.com  ts-db
192.168.16.18  ts-db-priv.sub04250155461.tsvcnpho.oraclevcn.com  ts-db-priv
10.0.1.2  ts-db-vip.sub04250155461.tsvcnpho.oraclevcn.com  ts-db-vip
10.0.1.2  ts-db-scan.sub04250155461.tsvcnpho.oraclevcn.com  ts-db-scan
10.0.1.3 ts-em ts-em 
```
最後の1行が追加した行です。

#####3.1.2.DBシステムへのエージェントの配布
エージェントの配布をします。その前にEMのサーバー側で少し準備します。

#####3.1.2.1.EMのホスト側での/etc/hostsの追記
EMのホスト側から、DBのホストへサブネットのIPアドレスでホスト名(今回はts-db)でアクセスできるように/etc/hostsを編集します。DBのホストの/etc/hostsのエントリの1行を追加します（**利用される環境にあわせてください**）。

```
[opc@ts-em ~]$ sudo vi /etc/hosts
[opc@ts-em ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.1.3 ts-em ts-em
10.0.1.3 emcc.marketplace.com emcc
10.0.1.2  ts-db.sub04250155461.tsvcnpho.oraclevcn.com  ts-db
```
最後の1行が追加した行です。

#####3.1.2.2.EMコンソールからエージェントの配布
EMコンソールにアクセスしてsysmanでログインし、EMコンソールのトップ画面を表示します。トップ画面上部の[設定]のボタン(歯車のアイコン)をクリックして、[ターゲットの追加]-[ターゲットの手動追加]をクリックします。
![23.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/ff842b59-967f-6a06-c4de-cd8a6dd614ab.png)
[ターゲットの手動追加]の画面が表示されます。[ホスト・ターゲットの追加]の下にある[ホストにエージェントをインストール]をクリックします。
![24.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/8fda6d63-34c7-148e-7b71-4f833b2cb07a.png)
[ホスト・ターゲットの追加: ホストとプラットフォーム]の画面が表示されます。[+追加]をクリックします。
[ホスト] : DBのホスト名(EMのホストの/etc/hostsに追加した名前)を入力します。今回は[ts-db.sub04250155461.tsvcnpho.oraclevcn.com]を入力します（**利用される環境にあわせてください**）。
[プラットフォーム] : [Linux x86-64]を選択します。
![25.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/f7296092-61da-7c72-8a02-f9c7bd4ca09b.png)
[次]をクリックします。[ホスト・ターゲットの追加: インストールの詳細]の画面が表示されます。この画面の入力項目は多いのですが、適切に入力していきます。
[前のセッションからの入力のロード] : なにも選択しないようにします。([選択]のまま)
[デプロイメント・タイプ: フレッシュ・エージェント・インストール] : 
[Linux x86-64], [13.3.0.0.0], [(入力したホスト名)]となっていることを確認します。
画面がタテに見ずらいようでしたら[デプロイメント・タイプ: フレッシュ・エージェント・インストール]の枠の右下のボタンをクリックして畳みます（図の赤枠のボタン）。
![26.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/8f8d21e5-509f-cbb7-702e-408649b459e3.png)
引き続き[ホスト・ターゲットの追加: インストールの詳細]の画面の入力です。
[インストールのベース・ディレクトリ] : [/u01/app/oracle/product/em13.3/agent]と入力します。
[インスタンス・ディレクトリ] : 上記の入力した後にこのフィールドに移動すると、自動的に
[/u01/app/oracle/product/em13.3/agent/agent_inst]と入力されます。そのままにします。
[Hybrid Cloudエージェントの構成] : チェックしません
![27.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/525ded7e-dc63-25ec-a9ed-dc447b391903.png)
引き続き[ホスト・ターゲットの追加: インストールの詳細]の画面の入力です
[名前付き資格証明]にはターゲットのホストへログインしてoracleユーザーで実行するための情報を入力します。今回のターゲットはDBシステムで、opsユーザーでsshキーを指定してログインしてsudoコマンドを利用することになります。ここで「EMのBUGかも?」と思われる事象があります。**EMサーバーに「最初に」登録する名前付き資格証明がSSHキーを指定したものだと、なぜかエラーになります。なので1つダミーで名前付き資格証明を登録した後に、あらためてSSHキーの資格証明を登録します。**読んでもなんのことかわからないと思いますが、実際のオペレーションをするとわかると思います。（なお上記で発生してしまうエラーは「ホストのユーザー名を入力してください。」というものです。）
[名前付き資格証明] : [+]をクリックします。[名前付き資格証明の新規作成]の画面が表示されます。
[名前付き資格証明]のタブを選択して、ダミーで下記のように入力して[OK]をクリックして保存します。
[ユーザー名] : oracle
[パスワード] : oracle
[パスワードの確認] : oracle
[実行権限] : なし
[別名保存] : ts-db-dummy
![28.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/ae7ce258-fa9d-fc6d-e761-4244d54d34b4.png)
このようにして入力された[ts-db-dummy]が[名前付き資格証明]に入力されます。
![29.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/278bd8b6-d012-4b9b-38cc-b03a4ddd21b9.png)
ここからもう一度、[名前付き資格証明] : [+]をクリックします。[名前付き資格証明の新規作成]の画面が表示されます。
[SSHキー資格証明]のタブを選択して入力します。
[SSHキー資格証明]のタブ [ユーザー名] : opc
[SSHキー資格証明]のタブ [SSH秘密鍵] : Database Systemsを作成した際に利用したキーの秘密鍵
[参照]をクリックしてローカルPCからアップロードします。
**ここで指定する秘密鍵はパスフレーズが設定されていないものである必要があります。**
**パスフレーズを設定されている秘密鍵しかない場合、下記の記事などを参考にパスフレーズを解除したファイルを作成します。**
**[秘密鍵からパスフレーズを取り除く](https://qiita.com/kadoppe/items/0c289244a3a7286b3d75)**
[SSHキー資格証明]のタブ [SSH公開鍵] : 何も入力しません。
[SSHキー資格証明]のタブ [実行権限] : [sudo]を選択します。横に[別名実行]が入力できるようになります。
[SSHキー資格証明]のタブ [別名実行] : oracleを入力します。
[SSHキー資格証明]のタブ [別名保存] : ts-db-oracleと入力します。
![30.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/949613b8-836c-cf67-59f4-511d22d857a9.png)
上記のように入力して[OK]をクリックして保存します。入力された[ts-db-oracle]が[名前付き資格証明]に入力されます。
![31.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/aceb9e8f-75e0-b7dd-2dc9-729c9d45903a.png)
ここで入力した項目は、EMの操作の中で繰り返し利用可能になります。その際[別名保存]で入力した名前を利用します。名前と入力内容を覚えておくとよいです。
続いてターゲットのホストへログインしてrootで実行するための情報を入力します。（ダミーでの登録は不要です）
[ルート資格証明] : [+]をクリックします。[名前付き資格証明の新規作成]の画面が表示されます。
[ルート資格証明]
[SSHキー資格証明]のタブ [ユーザー名] : opc
[SSHキー資格証明]のタブ [SSH秘密鍵] : Database Systemsを作成した際に利用したキーの秘密鍵
[参照]をクリックしてローカルPCからアップロードします。
**ここで指定する秘密鍵はパスフレーズが設定されていないものである必要があります。**
**パスフレーズを設定されている秘密鍵しかない場合、下記の記事などを参考にパスフレーズを解除したファイルを作成します。**
**[秘密鍵からパスフレーズを取り除く](https://qiita.com/kadoppe/items/0c289244a3a7286b3d75)**
[SSHキー資格証明]のタブ [SSH公開鍵] : 何も入力しません。
[SSHキー資格証明]のタブ [実行権限] : [sudo]を選択します。横に[別名実行]が入力できるようになります。
[SSHキー資格証明]のタブ [別名実行] : rootを入力します。
[SSHキー資格証明]のタブ [別名保存] : ts-db-rootと入力します。
![32.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/17a84847-6e38-f032-c9bc-c8afa1f1b966.png)
上記のように入力して[OK]をクリックして保存します。入力された[ts-db-root]が[ルート資格証明]に入力されます。
![33.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/d14b88cd-d19d-227d-88a4-cb6389dd8d31.png)
これで[名前付き資格証明]に[TS-DB-ORACLE(SYSMAN)]、[ルート資格証明]に[TS-DB-ROOT(SYSMAN)]と
入力されています。残りはデフォルトのままとします。
[ホスト・ターゲットの追加: インストールの詳細]の画面上部の[次]をクリックします。
![34.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/a5b5feaf-b4bd-4437-c43e-c01d97b690e5.png)
[ホスト・ターゲットの追加: 確認]の画面が表示されます。[エージェントのデプロイ]をクリックします。
![35.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/0911fa3f-07cd-702b-6d3c-365707178090.png)
[エージェント・デプロイメント・サマリー: ADD_HOST_SYSMAN_xxxx]の画面が表示され、経過が画面に表示されます。DBホスト側にsshでログインして、指定したエージェントの配布先にファイルが配布されていることも確認できます。エージェントのデプロイ開始から完了まで約15分かかりました。エージェントのデプロイは大きく3つのステップで進められています。どこかのステップで問題が発生すると、その内容が画面に表示されます。そのようなケースでは表示された内容を確認して、必要な対処を検討してください。
エージェントのデプロイを開始したところ。
![36.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/0652798f-1b04-b528-d3fe-8325fa58814d.png)
エージェントのデプロイを完了したところ。
![37.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/80559285-159f-1feb-0b75-3e4e145c144c.png)

#####3.1.2.3.DBシステムがホストが追加されたことの確認
EMコンソールにアクセスしてsysmanでログインし、EMコンソールのトップ画面を表示します。画面上部のメニューから[ターゲット]-[ホスト]を選択します。
![38.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/ca0f31c4-8a45-d7d0-4d76-b806486e53c1.png)
すると、EMのホスト([emcc.marketplace.com])と、ここまでの作業で追加したDBのホスト(今回は[ts-db.sub04250155461.tsvcnpho.oraclevcn.com])が表示されます。追加したホストをクリックして、追加したホストの情報が表示されることを確認ください。なお追加してしばらくは[CPU使用率][メモリー使用率]などの情報は表示されません。
![39.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/8a5c3411-e6dd-cd94-4822-d28e02dd1106.png)
![40.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/4886f4c0-7d9e-5749-1173-e72c501e2ac5.png)

#####3.1.3.(参考)EMコンソールからエージェントの配布に失敗した場合
[ターゲットの手動追加]が何らかの原因で失敗した場合、画面にエラーが表示されるので、内容を確認して対処して再実行します。画面でエラーとなったが[ターゲット]-[ホスト]を確認すると追加されているケースもあります。
再実行する前に、DBのホスト側で[3.1.1.2DBシステムでエージェントの配布先ディレクトリを作成する]にしたがって作成したエージェントの配布先のディレクトリ(今回は[/u01/app/oracle/product/em13.3/agent])に、作成されているファイル、ディレクトリなどがあれば削除しておくとよいと思います。つまり、最初にエージェント配布を実行したときと同じ状態に戻します。

#####3.1.4.(参考)EM名前付き資格証明の確認
[3.1.2.2. EMコンソールからエージェントの配布]の中で設定した、DBのターゲットホストに接続するための名前付き資格証明の設定内容は、次のような手順で確認できます。
EMコンソールにアクセスしてsysmanでログインし、EMコンソールのトップ画面を表示します。トップ画面上部の[設定]のボタン(歯車のアイコン)をクリックして、[セキュリティ]-[名前付き資格証明]をクリックします。
![41.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/3bcef5ef-a282-4908-859f-d2b4c31b3cad.png)
[名前付き資格証明]の画面が表示されます。保存されている名前付き資格証明を、ここで確認できます。今回紹介している手順で実施している場合、[TS-DB-ORACLE][TS-DB-ROOT]の2つが保存されています。
![42.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/bba3e7fc-6db0-d055-584c-dcc3eacfee1d.png)

#####3.2.DBシステムのデータベースインスタンスを監視対象にする
DBシステムのホストに続いてデータベースインスタンスを監視対象とします。

#####3.2.1.データベースインスタンスのユーザーDBSNMPアカウントのロックを解除する
DBシステムのホスト上のデータベースインスタンス(今回はorcl18cとしています)に、EMから接続するためのユーザーDBSNMPをアンロックしてパスワードを設定します。
DBシステムにSSHでログインして、oracleユーザーに変更し、SQL*Plusを起動します。SQL*Plusはsystemユーザーで接続します。接続文字列をしていしないでSQL*Plusから接続した場合、コンテナデータベースに接続します。

```
[opc@ts-db ~]$ sudo su - oracle
[oracle@ts-db ~]$ sqlplus system/(パスワード)

SQL*Plus: Release 18.0.0.0.0 - Production on Mon May 6 03:44:00 2019
Version 18.5.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Mon May 06 2019 03:42:47 +00:00

Connected to:
Oracle Database 18c EE High Perf Release 18.0.0.0.0 - Production
Version 18.5.0.0.0

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
```
ユーザーDBSNMPがロックされていることを確認します。

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

USERNAME
--------------------------------------------------------------------------------
ACCOUNT_STATUS
--------------------------------
DBSNMP
EXPIRED & LOCKED
```
ユーザーDBSNMPのパスワードを設定しロック解除します。DBSNMPで接続できることを確認します。

```
SQL> alter user DBSNMP identified by (設定するパスワード) account unlock;

User altered.

SQL> connect dbsnmp/(上で設定したパスワード)
Connected.
```
DBSNMPに設定するパスワードは、パスワードポリシーを満たしたものでなければなりません。ポリシーを満たさないパスワードを指定すると下記のようなエラーになります。

```
alter user DBSNMP identified by DBSNMP account unlock
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20000: password length less than 9 bytes
```

#####3.2.2.データベースインスタンスをターゲットに追加する
EMコンソールにアクセスしてsysmanでログインし、EMコンソールのトップ画面を表示します。トップ画面上部の[設定]のボタン(歯車のアイコン)をクリックして、[ターゲットの追加]-[ターゲットの手動追加]をクリックします。
![43.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/4ce54b12-71ca-dc55-bf23-0db8ef0ba847.png)
[ターゲットの手動追加]の画面が表示されます。[非ホスト・ターゲットの追加ガイド付きプロセスの使用]の下にある[ガイド付きプロセスを使用した追加]をクリックします。
![44.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/0a14c890-f561-f065-7ddf-8764c22b3bf1.png)
[ガイド付きプロセスを使用した追加]の画面が表示されます。表示されている表の中から、[Oracleデータベース、リスナーおよび自動ストレージ管理]の行を選択し、[追加]をクリックします。
![45.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/3822afe2-6128-b87b-a564-80ff38a197a2.png)
[データベース検出: 検索基準]の画面が表示されます。表示された画面の[ホストまたはクラスタの指定]の右側にある検索のためのボタン(虫眼鏡アイコン)をクリックします。
![46.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/3d4e0bd5-d755-646a-929b-fc045bc419ec.png)
[ターゲットの選択]の画面が表示されます。
![47.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/d49cfb5f-098a-fa09-331b-5d8eb3961708.png)
[ターゲットの選択]で表示される中に、追加済みのホスト[ts-db.sub04250155461.tsvcnpho.oraclevcn.com]が表示されます。それを選択して[選択]をクリックします。元の画面に戻り[ホストまたはクラスタの指定]に選択したホストが入力されています。[次]をクリックします。
![48.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/1df98196-2343-06be-e427-920baa8b684b.png)
[ターゲットの検出-進行中です]という画面が表示されます。
![49.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/2bc614e0-35c2-4be5-c160-2235ac7cb549.png)

**ここでターゲットのホストのデータベースを検出することに失敗してしまった場合は「3.2.2.1.(参考)EMを再起動する」を参考にEMを再起動して、再度試してみてください。**
しばらくすると検出されたデータベースが入力されている[データベース検出：結果]の画面が表示されます。この際[警告]としてOracle Restartがインストールされていることに伴う、推奨事項が表示されますが、今回は[OK]をクリックしてこのまま進めます。
[データベース検出：結果]の画面には、下記のように入力されています(今回の例)。
![50.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/86d330b0-2759-fc30-f57b-052ca26d60f5.png)
![51.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/e69825d8-cc19-8cdf-46b0-bbaeb318abaa.png)
[ターゲット名 : orcl18c_ts-db(以下略)]をチェックして、[構成]をクリックします。[データベース・インスタンスの構成]の画面が表示されます。
![52.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/f48fe5ae-f278-613e-e203-1f6e38be9d2d.png)
[一般]のタブで、今回の例では下記のように入力しました(デフォルトと変えたところに注意ください。**利用される環境にあわせてください。**)
[ターゲット名] : orcl_ts-db.(以下略) (デフォルトのまま。複数回この作業を実施する場合、"_n" が名前の最後に自動で追加されています。適宜変更するとよいと思います。)
[ターゲット・タイプ] : データベース・インスタンス (デフォルトのまま)
[データベース・システム] : orcl_ts-db_sys.(以下略) (デフォルトのまま。複数回この作業を実施する場合、"_n" が名前の最後に自動で追加されています。適宜変更するとよいと思います。)
[表示]以下
[モニター・ユーザー名] : dbsnmp  (デフォルトのまま)
[モニター・パスワード] : **dbsnmpのパスワードを入力**
[ロール] : 標準 (デフォルトのまま)
[Oracleホーム・パス] : /u01/app/oracle/product/18.0.0.0/dbhome_1  (デフォルトのまま)
[リスナー・マシン名] : ts-db.sub04250155461.tsvcnpho.oraclevcn.com  (**デフォルトの指定ではEMホストからDBホストへ接続できないため変更**)
[ポート] : 1521 (デフォルトのまま)
[接続プロトコル] : TCP  (デフォルトのまま)
[データベースSID] : orcl18c  (デフォルトのまま)
[優先接続文字列] : 空白  (デフォルトのまま)
ここまで入力して[接続テスト]をクリックします。[接続テストに成功しました。]と表示されることを確認ください。続けて[プラガブル・データベース]のタブを入力します。
![53.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/e6fe9620-1416-d1d0-5b0e-ee2dda6a1387.png)
![54.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/3fc4fc33-bd11-5b0a-5ee5-f4b79e6b351a.png)
[プラガブル・データベース]のタブで下記のように入力しました(デフォルトと変えたところに注意ください)。**ここでサービス名は[1.7.1 EMの監視対象のDBシステムのDBインスタンスに接続するためのサービス名の確認]で確認したサービス名を入力します。**

[名前CDB$ROOT] : サービス名orcl18c_phx2z8.sub04250155461.tsvcnpho.oraclevcn.com (デフォルトで入力されているまま)
[名前PDB1] : サービス名pdb1.sub04250155461.tsvcnpho.oraclevcn.com (**デフォルトの入力ではpdb1となっていましたが変更します。**)

プラガブル・データベースそれぞれを選択した状態で[接続テスト]をクリックします。それぞれ[接続テストに成功しました。]と表示されることを確認ください。
再び[データベース検出: 結果]の画面で、[ターゲット名 : ASMNET1LSNR_ASM_ts-db(以下略)]と[ターゲット名 : LISTENER_ts-db(以下略)]もチェックします。
![55.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/c2d1a6a2-a334-d1e0-a5aa-1ced5425f23f.png)
これで3つのターゲットがチェックされています。ここまで設定したら[次]をクリックします。[データベース検出: 確認]の画面が表示されます。
![56.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/50713811-b089-bfd6-7f70-782b8d698049.png)
ここまで入力した[データベース・システム]と[その他のターゲット]が表示されています。[保存]をクリックすると、設定内容で接続できるか検証され、問題なければ保存されます。これでデータベースインスタンスがターゲットに追加されました。
![62.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/43ad92d1-2ca5-0cc4-7ce3-bc1bf0a91b74.png)
ここまで問題なく実施できた場合は、「3.2.3.データベースインスタンスが追加されたことの確認」に進んでいただいてよいです。
これでデータベースインスタンスもターゲットに追加されるべきと考えられますが、本記事の作者が何度か試したときは、下記のエラーとなってしまうことがありました。(Failed to promote credential change to agent for 3 targets)この場合、画面で[取り消し]で作業を停止するしかありません。
![57.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/09eadf99-f503-9264-082f-fd30f9640091.png)
このエラーとなったケースでは、「ターゲットのデータベースシステムが追加されているがプラガブルデータベースの追加がなぜかうまくいってない」ように見えました。本記事の作者の経験では「3.2.2.2.(参考)データベースインスタンスをターゲットから削除する」にしたがって、一度削除して、再度この章の「データベースインスタンスをターゲットに追加する」を実施すると正常に追加されました。本事象に関して、より詳細に対応したい場合は、オラクル社のサポートサービスに問い合わせる(有償でOracle Cloudを利用している場合)とよいと考えられますが、参考になれば幸いです。

#####3.2.2.1.(参考)EMを再起動する
本章の手順の中で、ターゲットのデータベースを検出することに失敗したケースで、本記事の作者の経験では、EMを再起動してからデータベース検出をすると正常に検出したケースがありました。参考までに、ここでEMの再起動の手順を簡単に紹介します。
EMサーバーにSSHでログインして、oracleユーザーになります。その際に表示される画面上に、EMを停止、起動するスクリプトが表示されています。このコマンドをoracleユーザーで実行することで、EMサーバーに必要なすべてのサービスの停止と起動を実行できます。

```
[opc@ts-em ~]$ sudo su - oracle
(中略)
To start all processes, as the user oracle, run the script /home/oracle/start_all.sh
To stop all processes, as the user oracle, run the script /home/oracle/stop_all.sh
```
なおEMの全サービスの起動・停止には少し時間がかかります(10分程度)。


#####3.2.2.2.(参考)データベースインスタンスをターゲットから削除する
データベースインスタンスもターゲットに追加しようとしてエラーとなってしまった場合など、追加した（しようとした）データベースインスタンスをターゲットから削除したいケースもあるかもしれません。
![58.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/e5409b9a-dbf7-417a-eb68-b4cb289cda79.png)
この図のように、ターゲットにデータベースシステムが追加されているのですが、PDB1のステータスが保留中から時間が経過しても変わらないケースがあります。このような場合、データベースシステムをターゲットから削除して、再度本章「データベースインスタンスをターゲットに追加する」にしたがって実施すると正常に追加されるケースがあります。ここでは「データベースインスタンスをターゲットから削除する手順」を簡単に紹介します。
EMコンソールにアクセスしてsysmanでログインし、EMコンソールのトップ画面を表示します。画面上部のメニュー[ターゲット(３重丸)]-[データベース]を選択します。表示された画面の中に[ステータス]があり、ターゲットに追加されているデータベースのリストが表示されます。
![59.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/0ae385d2-7a56-5dca-c066-dd1e4afd7d03.png)
ここでターゲットから削除したいデータベースシステムの、プラガブルデータベースじゃない方のデータベースインスタンスをクリックします。データベースインスタンスの管理トップ画面が表示されます。
![60.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/604b3433-2b3d-4e66-98bc-59d4ad9814e4.png)
ここで[Oracleデータベース]-[ターゲット設定]-[ターゲットの削除]を選択します。警告が表示されますが、続行するために[はい]をクリックすれば、データベースシステムがターゲットから削除されます。
![61.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/f0b8a43d-4807-abac-c26f-5fae69e4748a.png)

**(参考)**なお、ここの作業では、データベースシステムのホストはターゲットから削除されません。ホストを削除したい場合も、同じようなメニューが用意されてますが、ホスト削除の前に実施すべき手順を画面上で指示されます。その際、ターゲットから削除したいホスト上のエージェントの停止を求められることが求められます。その場合、ターゲットのホストにsshで接続し、エージェントを配布したユーザー(oracleユーザー)でemctlコマンドを発行して停止することができます。emctlコマンドはエージェント配布先のディレクトリ以下にあります。この記事のデータベースシステムのホストの例では、下記のようになります。下記の例ではステータス確認をしていますが、```emctl stop agent```でデータベースシステムのホスト上のエージェントを停止します。

```
[opc@ts-db agent]$ sudo su - oracle
[oracle@ts-db ~]$ cd /u01/app/oracle/product/em13.3/agent
[oracle@ts-db agent]$ ls
agentInstall.rsp  agent_13.3.0.0.0  agent_inst  agentimage.properties
[oracle@ts-db agent]$ cd agent_13.3.0.0.0
[oracle@ts-db agent_13.3.0.0.0]$ cd bin
[oracle@ts-db bin]$ ./emctl status agent
Oracle Enterprise Manager Cloud Control 13c Release 3
(以下略)
```

#####3.2.3.データベースインスタンスが追加されたことの確認
EMコンソールにアクセスしてsysmanでログインし、EMコンソールのトップ画面を表示します。画面上部のメニューから[ターゲット]-[すべてのターゲット]を選択します。
![64.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/ac460701-6e04-d98e-c2ba-5252345e7044.png)
表示された画面[すべてのターゲット]の画面左側で[ターゲット・タイプ：データベースインスタンス]を選択します。
![65.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/3e4b7134-4324-5ab3-c6cb-a44350ddb0f3.png)
この画面上で、以前に操作したときは[検索の絞り込み]がされていることがあります。その場合は、その検索の絞り込みの条件を削除することができる（画面左部分の[検索の絞込み]の条件）ので、削除してすべてのターゲットを表示させて[ターゲット・タイプ：データベースインスタンス]を選択します。
![66.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/7282192c-fb8d-4361-99f6-c2b887765ae2.png)
画面の右側に追加したデータベースインスタンスが表示されます。追加されたデータベースインスタンスのターゲット名をクリックすると、管理画面が表示されます。
![67.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/a2ddb442-9c0e-094d-51f9-589e90b553b3.png)

#####3.2.3.1.(参考)プラガブルデータベースへのサービス名の確認
監視対象としたデータベースへの接続が、なぜかうまくいってないように思われるケースでは、下記を見直してみてください。
[3.2.3. DBのインスタンスが追加されたことの確認]の手順で、対象のコンテナ・データベースの管理画面を表示させます。
画面上部のメニューから[Oracleデータベース]-[ターゲット設定]-[モニタリング構成]をクリックします。これで[データベース・インスタンスの構成: プロパティ]の画面が表示されます。
![68.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/e08585a5-a2da-8714-b9d8-59f035267fa1.png)
ここにコンテナデータベースと各プラガブルデータベースへの接続に関する情報が表示され、編集もできるようになっています(接続テストもできます)。必要に応じて確認するとよいです。