やっとOracle環境を構築したので、今回はEnterprise Manager Express(以降EMExpressと表記)を起動し、ブラウザから操作してみようと思う!
→結果:かなり苦戦したので、EMExpress構築までをメモ。
環境
Oracle CloudのOS : Oracle Linux 7.9
OracleDB : Oracle Database 19c
準備作業
1,Oracle Cloudでアカウント作成
2,仮想マシン作成
-シェイプは永久無料のものではなく、一つ上以上のものを選択することを推奨。※メモリが足りなくて、設定ファイルをいじる手間がかかるため。
3,自身のPCにOracle Database 19cのLinux x86-64のRPMをダウンロード
4,scpで仮想マシンにダウンロードしたrpmを配置
5,Oracle19cのインストール
→EMExpressにアクセスするとこで失敗。
セキュリティ・リストの設定
EMExpressは、デフォルトが5500ポートで動くので、仮想ネットワークのセキュリティ・リストに5500ポートへの通信を許可する必要がある。
コンピュート→インスタンス→対象のインスタンスを選択後、インスタンス情報タブのプライマリVNICのサブネットを選択。
下の方にあるセキュリティ・リストを選択。
現在のルールが表示される。イングレス・ルールの追加を選択。
以下のように入力し、イングレス・ルールの追加を選択。
ソースCIDR:送信元アドレスの許可範囲。今回は全て許可。
ソース・ポート範囲:送信元ポートの範囲。今回は全て許可。
宛先ポート:宛先ポートの範囲。今回は5500のみ。
これで完了。時間差で反映される。
ファイアーウォールの設定
AWSの場合は、firewalldが入っておらず、セキュリティ・リストを設定するだけでポート解放ができる。しかし、Oracle Cloudでは、firewalldの設定もしないとポートが許可されない。
# ログイン後、管理者ユーザーに切り替えて以下を実行
$ 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ユーザーのパスワード設定
SYSユーザー・SYSTEMユーザーのパスワード設定
EMExpressにアクセス
以下のURLにアクセスすると、警告画面が表示される。表示されない場合の確認項目
https://(インスタンスのパブリックIPアドレス):5500/em/
警告を無視して開くとログイン画面が出る。
ここで、oracleユーザーと設定したパスワードが通らず、https://IPアドレス:5500がユーザー名とパスワードを要求しています。サイトからのメッセージ: “XDB”のポップアップが出た。
もう一度入力しても、通らない・・・。
調べた結果、sqlplusで以下のプロシージャを実行し、グローバルポートの設定が必要なことがわかった。
このサイトのおかげで、なんとか解決した!
SQL> exec dbms_xdb_config.SetGlobalPortEnabled(TRUE)
上記のコマンドを実行しても、ログインが通る組み合わせは以下のみ。それ以外は、XDBのポップアップが出て、ログインできなかった。
Username:sysもしくはsystem
Password:先程、設定したもの
Container Name:CDB$ROOT
やっとログインできた!!
EMExpressが起動されない
EMExpressが起動されない時の確認項目をメモっとく。(自分がハマったこと)
・セキュリティ・リストの設定
・firewalldの設定
・リスナー・DBの起動確認
oracleユーザーで以下のコマンドを実行。
# 起動されている時はステータスが表示される。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 秒
〜(以下略)〜
# 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でどんなことができるのか探っていく!