[OCI] Database Cloud のDBシステムでストレージ管理にGrid Infrastructureを使用した場合のEM Express有効化最短手順

# はじめに
OCI DBシステムでEM Expressを利用するための手順は[公式ドキュメント](
https://docs.cloud.oracle.com/ja-jp/iaas/Content/Database/Tasks/monitoringDB.htm)にも記載がありますが、一部冗長な部分があったり、実はストレージ管理にGrid Infrastructureを使用している場合にはドキュメントに記載のある「2ノードのRAC DBシステムで必要な権限を設定するには」の内容を実施する必要があったります。

今回は、ストレージ管理にGrid Infrastructureを使用している場合の、最短と思われるEM Expressの有効化手順をまとめました。

# 作業の流れ
1. DBノードにopcユーザでSSHログイン
2. EM Expressの有効化
3. リスナーのポートリスニング状況とWalletファイルの保存先の確認
4. Walletファイルのパーミッションの変更
5. ファイアウォール（iptables）の設定変更
6. セキュリティ・ルールの追加
7. ブラウザからEM Expressにアクセス

# 1. opcユーザでSSHログイン
SSHクライアントからDBシステムのノードにSSHログインします。

# 2. EM Expressの有効化
```
・oracleユーザにスイッチ
[opc@db19cse ~]$ sudo su - oracle

・SQL*PlusでsysユーザとしてOracleに接続
[oracle@db19cse ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Nov 13 07:53:07 2020
Version 19.8.0.0.0

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

Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.8.0.0.0

・EM Expressがすでに有効化されていないか確認
SQL> select dbms_xdb_config.getHttpsPort() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
			     0

・EM ExpressをTCP 5500ポートで有効化
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);

PL/SQL procedure successfully completed.

・EM Expressが有効化されたか確認
SQL> select dbms_xdb_config.getHttpsPort() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
			  5500

・SQL*Plusを終了
SQL> exit
```
# 3. リスナーのポートリスニング状況とWalletファイルの保存先の確認
```
[oracle@db19cse ~]$ lsnrctl status | grep 5500
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=db19cse.subnet1.vcn1.oraclevcn.com)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0.0/dbhome_1/admin/DB1_nrt17z/xdb_wallet))(Presentation=HTTP)(Session=RAW))
```
出力結果の**my_wallet_directory**の値がWalletファイルの保存先ディレクトリです。

# 4. Walletファイルのパーミッションの変更
```
・Walletファイルの保存先ディレクトリに移動
[oracle@db19cse ~]$ cd /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/DB1_nrt17z/xdb_wallet

. Walletファイルのパーミッションを確認
[oracle@db19cse xdb_wallet]$ ls -ltr
total 8
-rw------- 1 oracle asmadmin 3851 Nov  6 09:46 ewallet.p12
-rw------- 1 oracle asmadmin 3896 Nov  6 09:46 cwallet.sso

・asmadminグループにWalletファイルの読み取りを許可
[oracle@db19cse xdb_wallet]$ chmod 640 /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/DB1_nrt17z/xdb_wallet/*

・正しくパーミッションが設定できたか確認
[oracle@db19cse xdb_wallet]$ ls -ltr
total 8
-rw-r----- 1 oracle asmadmin 3851 Nov  6 09:46 ewallet.p12
-rw-r----- 1 oracle asmadmin 3896 Nov  6 09:46 cwallet.sso
[oracle@db19cse xdb_wallet]$ exit
logout
```
# 5. ファイアウォール（iptables）の設定変更
```
・rootユーザにスイッチ
[opc@db19cse ~]$ sudo su -
Last login: Fri Nov 13 07:44:27 JST 2020

・iptablesの設定をバックアップ
[root@db19cse ~]# iptables-save > /tmp/iptables.orig

・TCP 5500ポートへのアクセスを許可
[root@db19cse ~]# iptables -I INPUT 8 -p tcp -m state --state NEW -m tcp --dport 5500 -j ACCEPT -m comment --comment "Required for EM Express."

・設定内容が反映されているか確認
[root@db19cse ~]# iptables --list-rules | grep 5500
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5500 -m comment --comment "Required for EM Express." -j ACCEPT

・設定内容を保存
[root@db19cse ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
```
# 6. セキュリティ・ルールの追加
DBシステムが所属するサブネットに適用されているセキュリティ・リスト、またはDBシステムに適用されているネットワーク・セキュリティ・グループにTCP5500ポートへのアクセスを許可するセキュリティ・ルールを追加します。
![スクリーンショット 2020-11-13 7.58.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/5b7f0a2f-e853-c5c4-4c71-798ce0a53823.png)

# 7. ブラウザからEM Expressにアクセス
ブラウザからEM Expressにアクセスします。アクセスする際、**https**で接続しないとエラーになります。
接続先URLは以下のようになります。

**https&#58;//DBシステムノードのIPアドレス:5500/em**

自己署名証明書を使用しているためブラウザに警告が表示されますが、ここでは警告を無視して接続します。

![スクリーンショット 2020-11-13 8.13.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/92358b2b-f12d-05dc-babd-9712562cb92a.png)
無事、EM Expressにアクセスできました。

# 参考情報
Oracle Infrastructure Document データベースのモニタリング
https://docs.cloud.oracle.com/ja-jp/iaas/Content/Database/Tasks/monitoringDB.htm