[Oracle Cloud] Enterprise Manager Express を有効化して接続してみた

# はじめに

Oracle Cloud で提供されている Oracle Database の マネージドサービス「Database Cloud Service(略して DBCS と言うことが多い)」では、標準でモニタリングに利用できる Enterprise Manager Express が付いていきます。DBCS を使っている環境であれば、設定を有効にするだけで使えます。Oracle Database の Edition によっては、使えない機能はいくつか出てきますが、画面自体は どの Edition でもログインできます。

では、Enterprise Manager Exrpess の有効化の手順を紹介します。(忘れがちなので備忘録のため残しておきます)



# Enterprise Manager Express を有効化

まず、DBCS の OS に SSH ログインして、SQL*Plus で接続します。

```
[opc@oradb19ee ~]$ sudo su - oracle
Last login: Thu Aug  6 00:54:39 UTC 2020
[oracle@oradb19ee ~]$
[oracle@oradb19ee ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Aug 6 01:14:33 2020
Version 19.7.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

SQL>
```



5500 Port で、Enterprise Manager Express を有効にします。

```
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);

PL/SQL procedure successfully completed.

SQL>
```



確認

```
SQL> select dbms_xdb_config.getHttpsPort() from dual;

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

SQL>
```



SQL*Plus を終了

```
exit
```



lsnrctl から、HTTP の文字列で grep して、正常にリッスンしていることを確認

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



root ユーザーへスイッチし、iptables を stop します (OCI 側の Firewall で制限しているため、iptables を無効にしても良い判断)

```
systemctl stop iptables
systemctl disable iptables
```



# Network Security Group

Oracle Cloud 側の Firewall を開放します。
Enterprise Manager Express で有効にした Port の 5500 を Open します

![1596676711449.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/5c7cf6a5-6158-bcba-512a-8d4c6e3dc5d6.png)



# wallet の権限設定

このタイミングで正常に Enterprise Manager Express にアクセスできるはずですが、自分の環境では、次のエラーが発生してアクセスが出来ませんでした

![1596756502557.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/cde469d9-61a1-c802-3d82-3a9c7bec9423.png)


以下の URL に該当していたので、wallet に関する権限設定をしていきます

https://docs.oracle.com/cd/E97706_01/Content/knownissues.htm#Unable



grid user にログインします

```
[opc@oradb19ee ~]$ sudo su - grid
Last login: Thu Aug  6 23:28:18 UTC 2020
[grid@oradb19ee ~]$
```



wallet の場所を確認します

`/u01/app/oracle/product/19.0.0.0/dbhome_1/admin/oradb19_nrt1r2/xdb_wallet` ということがわかりました

```
[grid@oradb19ee ~]$ lsnrctl status | grep xdb_wallet
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oradb19ee.pubsubnet01.vcn.oraclevcn.com)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0.0/dbhome_1/admin/oradb19_nrt1r2/xdb_wallet))(Presentation=HTTP)(Session=RAW))
```



oracle user にログインします

```
[grid@oradb19ee ~]$ exit
logout
[opc@oradb19ee ~]$ sudo su - oracle
Last login: Thu Aug  6 23:29:31 UTC 2020
[oracle@oradb19ee ~]$
```



cd  して権限を確認します

```
[oracle@oradb19ee ~]$ cd /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/oradb19_nrt1r2/xdb_wallet
[oracle@oradb19ee xdb_wallet]$
[oracle@oradb19ee xdb_wallet]$ ls -la
total 16
drwxr-xr-x 2 oracle asmadmin 4096 Aug  4 09:18 .
drwxr-xr-x 3 oracle asmadmin 4096 Aug  4 09:18 ..
-rw------- 1 oracle asmadmin 3912 Aug  4 09:18 cwallet.sso
-rw------- 1 oracle asmadmin 3867 Aug  4 09:18 ewallet.p12
```



chmodで、asmadmin グループに read 権限を付与します

```
chmod 640 /u01/app/oracle/product/19.0.0.0/dbhome_1/admin/oradb19_nrt1r2/xdb_wallet/*
```



確認します。asmadmin の read 権限が付与されていることを確認

```
[oracle@oradb19ee xdb_wallet]$ ls -la
total 16
drwxr-xr-x 2 oracle asmadmin 4096 Aug  4 09:18 .
drwxr-xr-x 3 oracle asmadmin 4096 Aug  4 09:18 ..
-rw-r----- 1 oracle asmadmin 3912 Aug  4 09:18 cwallet.sso
-rw-r----- 1 oracle asmadmin 3867 Aug  4 09:18 ewallet.p12
[oracle@oradb19ee xdb_wallet]$
```



# JET 版アクセス

ここまで設定したことで、 Enterprise Manager Expressにアクセスが可能です。次のURLで可能です。

https://ip_address:5500/em

sys ユーザーと、DBCS を作成した時に指定したパスワードいれて、Log in をします



![1596757037443.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/14b9ca71-42db-fc01-a5f9-38902f4daba5.png)



# JET 版で見える画面

ログイン直後

![1596757888852.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/25340113-c7a4-266b-18da-e71ae7ca44fe.png)



メニューから選択可能なものは、Performance Hub のみに見える

![1596757956200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/8630b5fe-ae03-6f9e-0e4c-2776df717880.png)



Performance Hub の画面

![1596757918782.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/ad0820d9-b596-7d99-046c-17bbbf7a835a.png)



Performance Hub の Monitored SQL

![1596758056479.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/5d6b6d94-f605-8316-da7a-ca0e6ca25c85.png)



# Flash 版に切り替え

Flash はサポート切れる関係上、非推奨になっています。ただ、機能的には見える画面が多いので、切り替え方法も確認してみます。

SQL*Plus で接続して次のコマンドを入れます

```
@?/rdbms/admin/execemx emx
```



実行例

```
SQL> @?/rdbms/admin/execemx emx

Session altered.


no rows selected

old   1: select nvl( '&1','omx') p1 from dual
new   1: select nvl( 'emx','omx') p1 from dual

P1
---
emx


PL/SQL procedure successfully completed.


Session altered.

SQL>
```



ちなみに JET 版に戻すときは次のコマンドです

```
@?/rdbms/admin/execemx omx
```





# Flash 版アクセス

JET 版と同じURL を入れてアクセスすると、Flash 版に変わっています

https://ip_address:5500/em

ログイン画面

![1596758276258.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/80141613-cd9b-664c-5c78-5733c4d7eb9a.png)



# Flash 版で見える画面

ログイン直後

![1596758324628.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/463a323e-ed0d-a4a8-74ca-d92672caa5fe.png)



このあたりの画面は、今は Flash 版にしかないように見える

特に、SQL Tuning Advisor は便利なので、JET版の進化を期待したい

![1596758591301.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/a292ade6-e850-9ccb-10cd-b34c4267f41c.png)



# 参考URL

https://qiita.com/sugimount/items/53ed6c060deb0f99193a

https://docs.cloud.oracle.com/en-us/iaas/Content/Database/Tasks/monitoringDB.htm

https://cosol.jp/techdb/2019/07/19c_jet_oem_database_express_emex/