リモートのOracle19cにEMExpress構築

やっとOracle環境を構築したので、今回はEnterprise Manager Express(以降EMExpressと表記)を起動し、ブラウザから操作してみようと思う！
→結果：かなり苦戦したので、EMExpress構築までをメモ。

# 環境
Oracle CloudのOS : Oracle Linux 7.9
OracleDB : Oracle Database 19c

# 準備作業
[1,Oracle Cloudでアカウント作成](https://qiita.com/manaki/items/d8684f8e15ccf09bdc4e)
[2,仮想マシン作成](https://qiita.com/manaki/items/0ded6b4e25c2f57b3657)
　-シェイプは永久無料のものではなく、一つ上以上のものを選択することを推奨。※メモリが足りなくて、設定ファイルをいじる手間がかかるため。
[3,自身のPCにOracle Database 19cのLinux x86-64のRPMをダウンロード](https://www.oracle.com/database/technologies/oracle-database-software-downloads.html?xd_co_f=NjhiOGFlMzItNGJiNi00M2ZhLWE0ZjUtYzljNmU3NWYyNTEz)
4,scpで仮想マシンにダウンロードしたrpmを配置
[5,Oracle19cのインストール](https://www.fuku.tokyo/2019/09/oracle19c-install/)
　→EMExpressにアクセスするとこで失敗。

# セキュリティ・リストの設定
EMExpressは、デフォルトが5500ポートで動くので、仮想ネットワークのセキュリティ・リストに5500ポートへの通信を許可する必要がある。
コンピュート→インスタンス→対象のインスタンスを選択後、インスタンス情報タブのプライマリVNICのサブネットを選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/5d6fd49b-d94f-77dd-0caf-e9e207b52dda.png)

下の方にあるセキュリティ・リストを選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/3a7e9ca6-bc08-2d81-1c12-5ae26ebee649.png)

現在のルールが表示される。イングレス・ルールの追加を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/83f1a7cb-916d-a394-eb79-d08af07b9d5a.png)

以下のように入力し、イングレス・ルールの追加を選択。
ソースCIDR：送信元アドレスの許可範囲。今回は全て許可。
ソース・ポート範囲：送信元ポートの範囲。今回は全て許可。
宛先ポート：宛先ポートの範囲。今回は5500のみ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/4a477012-6c77-fc5c-24c8-c087241199d9.png)

これで完了。時間差で反映される。

# ファイアーウォールの設定
AWSの場合は、firewalldが入っておらず、セキュリティ・リストを設定するだけでポート解放ができる。しかし、Oracle Cloudでは、firewalldの設定もしないとポートが許可されない。

~~~bash
# ログイン後、管理者ユーザーに切り替えて以下を実行
$ firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh  # デフォルトではdhcpとsshのみ許可するようになっている
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

# 5500ポートを解放
$ firewall-cmd --add-port=5500/tcp --zone=public --permanent

# firewalldを再起動
$ systemctl restart firewalld

# 確認
$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client ssh
  ports: 5500/tcp  # 5500ポートが解放される
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
~~~

# oracleユーザーのパスワード設定
以下のサイトを参考にパスワードを設定。
[インストール時に作成されたoracleユーザーのパスワード設定](https://souiunogaii.hatenablog.com/entry/Oracle19c-setup#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%99%82%E3%81%AB%E4%BD%9C%E6%88%90%E3%81%95%E3%82%8C%E3%81%9Foracle%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A)
[SYSユーザー・SYSTEMユーザーのパスワード設定](https://souiunogaii.hatenablog.com/entry/Oracle19c-setup#SYS%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BCSYSTEM%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A)

# EMExpressにアクセス
以下のURLにアクセスすると、警告画面が表示される。[表示されない場合の確認項目](https://qiita.com/r_saiki/items/8c84d519b808d7272831#emexpress%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84)
https://(インスタンスのパブリックIPアドレス):5500/em/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/bd2771f5-cc1e-ab1d-85ad-b3d1eaac72f0.png)

警告を無視して開くとログイン画面が出る。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/9a260dd2-3200-cefe-076e-040e0bb0b199.png)

ここで、oracleユーザーと設定したパスワードが通らず、https：//IPアドレス:5500がユーザー名とパスワードを要求しています。サイトからのメッセージ: “XDB”のポップアップが出た。
もう一度入力しても、通らない・・・。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/1fbe2922-0dd4-377e-02a2-0804398b1333.png)

調べた結果、sqlplusで以下のプロシージャを実行し、グローバルポートの設定が必要なことがわかった。
[このサイト](https://ameblo.jp/yukozutakeshizu/entry-12585297907.html)のおかげで、なんとか解決した！

~~~
SQL> exec dbms_xdb_config.SetGlobalPortEnabled(TRUE)
~~~

上記のコマンドを実行しても、ログインが通る組み合わせは以下のみ。それ以外は、XDBのポップアップが出て、ログインできなかった。

Username：sysもしくはsystem
Password：先程、設定したもの
Container Name：CDB$ROOT

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/7c09d735-27d2-ed7d-0def-646f06e0ca16.png)

やっとログインできた！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/01ff6f4c-7a75-a66e-4729-c1147a078fa2.png)


# EMExpressが起動されない
EMExpressが起動されない時の確認項目をメモっとく。(自分がハマったこと)

・[セキュリティ・リストの設定](https://qiita.com/r_saiki/items/8c84d519b808d7272831#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A)
・[firewalldの設定](https://qiita.com/r_saiki/items/8c84d519b808d7272831#%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%83%BC%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E3%81%AE%E8%A8%AD%E5%AE%9A)
・リスナー・DBの起動確認
oracleユーザーで以下のコマンドを実行。

~~~bash:リスナー起動確認
# 起動されている時はステータスが表示される。lsnrctl startで起動可能。
$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 08-12月-2020 10:02:13

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=instance-20201205-1646.subnet12041301.vcn12041301.oraclevcn.com)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日                    08-12月-2020 10:02:10
稼働時間                  0 日 0 時間 0 分 3 秒
〜（以下略）〜
~~~

~~~bash:DB起動確認
# sqlplusでshow pdbsが取得できるか確認。startupで起動可能。
$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 火 12月 8 10:22:24 2020
Version 19.3.0.0.0

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



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL> show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 ORCLPDB1			  MOUNTED
SQL> 
~~~

# 終わりに
ほんとはBronzeの勉強のためにEMExpressを触ろうと思ったが、起動に思いのほか苦戦した。(そのお陰で深く知れたこともあったけど^^)
次回はEMExpressでどんなことができるのか探っていく！