OCI Database: EM Expressを設定してみよう

Oracle データベースの管理ツールにEnterprise Manager Express(EM Express)があります。EM ExpressはOracle データベース内に構築されるWebベースの管理ツールです。Oracle Cloud上の Oracle データベースでももちろん EM Express が使用できます。ここではEM Expressを使用するための設定を紹介します。

##事前準備
* DBシステムが作成済みであること

DBシステムの作成についてはこちらの記事が参考になります。
→ [クラウドでOracle Databaseを使う - Oracle Cloud Infrastructureを使ってみよう](https://community.oracle.com/docs/DOC-1019568)

## EM Express設定の流れ
DBシステム作成直後はEM Expressは有効になっていません。次の設定を行っていきます。
1. EM Expressを有効にして、接続するポートを設定
2. DBシステム上のポートを開く (iptablesの設定)
3. セキュリティ・リストの設定
4. WebブラウザからEM Expressにアクセス

## EM Expressの設定
では、早速設定していきましょう。
### 1. EM Expressの有効化とポート番号の設定
DBシステムにSSHで接続し、SQL*Plusを使ってデータベースにログインします。

```
[opc@ndb ~]$ sudo -s
[root@ndb opc]# su - oracle
[oracle@ndb ~]$ sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Fri May 10 10:01:21 2019
Version 18.5.0.0.0
(略)
```
EM Expressを有効にして接続するポートを設定します(ここでは5500を設定しています)。

```
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);
PL/SQL procedure successfully completed. 

SQL> select dbms_xdb_config.getHttpsPort() from dual; 
DBMS_XDB_CONFIG.GETHTTPSPORT() 
------------------------------ 
                          5500
```
Oracle Database 12c Release1 (12.1)ではEM Expressを使用して管理する各PDBのポートを手動で設定しましたが、12.2 以降ではグローバル・ポートという単一のポートでCDBやPDBにアクセスできる設定が可能になりました。今回は18cを使っているので、グローバル・ポートを設定します。詳細は[マニュアル](https://docs.oracle.com/cd/E82638_01/admqs/getting-started-with-database-administration.html#GUID-06C767B0-B435-4C6B-9123-C39C030DF457)を参照ください。

```
SQL> exec dbms_xdb_config.SetGlobalPortEnabled(TRUE);

PL/SQL procedure successfully completed.
```
OSに戻り、指定したポート(5500)でリスナーが待機していることを確認します。

```
[oracle@ndb ~]$ lsnrctl status | grep HTTP
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ndb.xx.xx.oraclevcn.com)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/18.0.0.0/dbhome_1/admin/orcl_nrt1xx/xdb_wallet))(Presentation=HTTP)(Session=RAW))

```



### 2. DBシステム上のポートを開く (iptablesの設定)
EM Expressで使用するポートをDBシステムのホスト上で開きます。
rootユーザーになり、iptablesを設定していきます。今回は、念のためiptablesのバックアップを取得しました。バックアップをとっておけば必要に応じて元のファイルをリストアできます。


```
[oracle@ndb ~]$ exit
logout
[root@ndb opc]# iptables-save > /tmp/iptables.orig
```
iptablesの設定を確認します。ポート5500の設定はありません。ポート5500を開ける設定をします。

```
[root@ndb opc]# cat /etc/sysconfig/iptables | grep 5500
(何も表示されない)
[root@ndb opc]# iptables -I INPUT 8 -p tcp -m state --state NEW -m tcp --dport 5500 -j ACCEPT -m comment --comment "Required for EM Express."
[root@ndb opc]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@ndb opc]# cat /etc/sysconfig/iptables | grep 5500
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5500 -m comment --comment "Required for EM Express." -j ACCEPT
(設定が追加された)
```

### 3. セキュリティ・リストの追加
DBシステムが配置されているサブネットのセキュリティ・リストを設定します。セキュリティ・リストとはVCN(Virtual Cloud Network)で使用される仮想ファイアウォールです。こちらでもポート5500の通信を許可する設定をします。
新規にEM Express用のセキュリティ・リストを作成して、サブネットに追加することも可能ですが、今回はシンプルに既存のセキュリティ・リストにポート5500の通信を許可する設定を追加することにします。
まず、DBシステムで使用しているセキュリティ・リストの詳細画面に移動します。
(メニューアイコンから、ネットワーキング → 仮想クラウド・ネットワーク → 使用しているVCNを選択 → 使用しているセキュリティ・リストを選択)
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/b95b1006-8a9d-755b-3c16-359471569fda.jpeg">

現時点で設定されているイングレス・ルールの一覧が表示されています。
[イングレス・ルールの追加]ボタンをクリックして、ここにポート5500の通信を許可するルールを追加します。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/288deac4-7370-7f45-317d-8337c8436076.jpeg">

**・ソース・タイプ:** CIDR
**・ソースCIDR:** 接続元のCIDRを指定
**・IPプロトコル:** TCP
**・ソース・ポート範囲:** 「すべて」のまま
**・宛先ポート範囲:** 5500
ステートレスのチェックボックスはデフォルトのままチェックなしにします。
設定したら[イングレス・ルールの追加]ボタンをクリックします。

### 4. EM Expressに接続
Webブラウザから、次のURL形式を使用してEM Expressに接続します。
``https://<ip_address>:<port>/em ``
使用しているネットワーク構成に応じてDBシステムのプライベートIPまたはパブリックIPを使用します。初回アクセス時には、SSL証明書が自己署名のためブラウザが警告を出しますが無視して接続します。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/9d01ba8a-1e0a-81fc-e777-bce613ab28cf.jpeg">

ログインすると下のようにOracleデータベースの管理画面が表示されます。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/11d6fca1-69ba-51b4-15dd-5b9ae65538d9.jpeg">


## EM Expressに接続できない場合
WebブラウザからEM Expressへの接続に失敗する場合、マニュアルを確認します。もしかしたらマニュアルに記載されている[こちら](https://docs.oracle.com/cd/E97706_01/Content/knownissues.htm#Unable)の問題かもしれません。

## 参照
OCI Database マニュアル 「[データベースのモニタリング](https://docs.oracle.com/cd/E97706_01/Content/Database/Tasks/monitoringDB.htm)」