Oracle EM Expressの基本と構成ガイド:軽量な管理ツールの活用方法(手動構築)

Oracle Master Bronze

EM Express(Enterprise Manager Express)は、Oracle Database 12c以降で使用可能な軽量なウェブベースの管理ツールです。これにより、GUIを通じてデータベースのパフォーマンスモニタリングや基本的な管理作業を行うことができます。この記事では、EM Expressの概要と手動での構成方法について解説します。

1. EM Expressの概要

EM Expressは、従来のEnterprise Manager(EM)に比べて非常に軽量であり、データベースのリソース消費を最小限に抑えたまま運用できる点が特徴です。以下は、EM Expressの主な機能です。

  • パフォーマンス監視: リアルタイムでのデータベースのパフォーマンスやリソース使用状況を監視できます。
  • SQLモニタリング: 実行中のSQLステートメントを監視し、ボトルネックやパフォーマンス問題を特定します。
  • ストレージ管理: 表領域やデータファイルの使用状況を管理・監視します。
  • ユーザー管理: データベースユーザーの作成、削除、権限の管理が可能です。
  • レポート機能: データベースの統計情報を収集し、レポートを作成できます。

メリット

  • 軽量: データベースのリソースを大量に消費しない。
  • インストール不要: データベースと一緒に自動的にインストールされるため、追加のインストールが不要。
  • 簡易なセットアップ: 特別なソフトウェアやエージェントを設定することなく、ブラウザからアクセスできる。

2. EM Expressを構成する手順

EM Expressはデフォルトでインストールされますが、使用するには構成が必要です。ここでは、EM Expressを有効にして、アクセスできるように構成する手順を説明します。

手順1: リスナーが起動していることを確認

EM Expressを使用するためには、データベースのリスナーが起動している必要があります。リスナーの状態を確認するために、次のコマンドを使用します。

$ lsnrctl status

[oracle@v19single ~]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-10月-2024 12:37:05

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

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日 11-10月-2024 12:25:04
稼働時間 0 日 0 時間 12 分 41 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
ログ・ファイル /u01/app/oracle/diag/tnslsnr/v19single/listener/alert/log.xml
リスニング・エンドポイントのサマリー…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=v19single)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=v19single)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/v19/xdb_wallet))(Presentation=HTTP)(Session=RAW))
サービスのサマリー…
サービス"v19"には、1件のインスタンスがあります。
インスタンス"v19"、状態READYには、このサービスに対する1件のハンドラがあります…
サービス"v19XDB"には、1件のインスタンスがあります。
インスタンス"v19"、状態READYには、このサービスに対する1件のハンドラがあります…
コマンドは正常に終了しました。
[oracle@v19single ~]$


このコマンドでリスナーが正常に動作しているか確認します。もしリスナーが停止している場合は、以下のコマンドで起動します。

$ lsnrctl start

[oracle@v19single ~]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-10月-2024 12:53:47

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

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
TNS-12541: TNS: リスナーがありません。 ★リスナーが停止している
TNS-12560: TNS: プロトコル・アダプタ・エラー
TNS-00511: リスナーがありません。
Linux Error: 111: Connection refused
[oracle@v19single ~]$ lsnrctl start ★リスナーを起動

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-10月-2024 12:54:36

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

/u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnrを起動しています。お待ちくだ さい...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
ログ・メッセージを/u01/app/oracle/diag/tnslsnr/v19single/listener/alert/log.xml に書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=v19single)(PORT=1521)))

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日 11-10月-2024 12:55:16
稼働時間 0 日 0 時間 2 分 30 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
ログ・ファイル /u01/app/oracle/diag/tnslsnr/v19single/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=v19single)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=v19single)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/v19/xdb_wallet))(Presentation=HTTP)(Session=RAW))
サービスのサマリー...
サービス"v19"には、1件のインスタンスがあります。
インスタンス"v19"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"v19XDB"には、1件のインスタンスがあります。
インスタンス"v19"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
[oracle@v19single ~]$

手順2: dispatchers に protocol=tcp が含まれていることを確認

Oracle DatabaseでEM Expressを利用するためには、dispatchers の設定に protocol=tcp が含まれている必要があります。以下のSQLコマンドで設定を確認します。

SQL> SHOW PARAMETER dispatchers

SQL> SHOW PARAMETER dispatchers

NAME TYPE VALUE
--------------------- ------------------ ---------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=v19XDB) ★含まれている
max_dispatchers integer

出力に PROTOCOL=TCP が含まれていることを確認してください。もし設定されていない場合は、以下のコマンドで追加できます。

SQL> ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(SERVICE=<サービス名>)' SCOPE=BOTH;

SQL> SHOW PARAMETER dispatchers

NAME TYPE VALUE
--------------------- ------------------ ---------------------------------
dispatchers string ★設定されていない
max_dispatchers integer

SQL> ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP) (SERVICE=v19XDB)' SCOPE=BOTH;

システムが変更されました。

SQL> SHOW PARAMETER dispatchers

NAME TYPE VALUE
--------------------- ------------------ ---------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=v19XDB) ★
max_dispatchers integer

手順3: shared_servers が0より大きいことを確認

次に、shared_servers の設定が有効であることを確認します。これが無効(0)になっていると、EM Expressは使用できません。確認には以下のコマンドを使用します。

SQL> SHOW PARAMETER shared_servers

SQL> SHOW PARAMETER shared_servers

NAME TYPE VALUE
--------------------- ------------------ ---------------------------------
max_shared_servers integer
shared_servers integer 1

shared_servers が0より大きい値になっていることを確認してください。もし値が0の場合、以下のコマンドで設定を変更します。

SQL> ALTER SYSTEM SET SHARED_SERVERS = 1 SCOPE=BOTH;

SQL> SHOW PARAMETER shared_servers

NAME TYPE VALUE
--------------------- ------------------ ---------------------------------
max_shared_servers integer
shared_servers integer 0
SQL> ALTER SYSTEM SET SHARED_SERVERS = 1 SCOPE=BOTH;

システムが変更されました。

SQL> SHOW PARAMETER shared_servers

NAME TYPE VALUE
--------------------- ------------------ ---------------------------------
max_shared_servers integer
shared_servers integer 1

手順4: リスナーのポートを確認する

これまでの準備が整ったら、リスナーのポートを確認します。EM Expressはデフォルトでデータベースの専用ポートを使用します。このポートが正しく設定されていることを確認するために、以下のSQLコマンドを実行します。

SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT() FROM DUAL;

SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT() FROM DUAL;

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

もし、ポートが0で返される場合は、EM Expressは構成されていない状態です。次に、ポート番号を設定します。

手順5: HTTPSポートの設定

EM ExpressはHTTPSポートを使用します。次のコマンドを使用して、適切なポートを設定します。たとえば、5500番ポートを使用する場合:

SQL> EXEC DBMS_XDB_CONFIG.SETHTTPSPORT(5500);

設定が成功したら、もう一度ポート番号を確認します。

SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT() FROM DUAL;

SQL> EXEC DBMS_XDB_CONFIG.SETHTTPSPORT(5500);

PL/SQLプロシージャが正常に完了しました。

SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT() FROM DUAL;

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

手順6: ファイアウォールの設定

もしEM Expressにリモートからアクセスする場合は、ファイアウォールの設定で、使用しているポート(例: 5500番)へのアクセスを許可する必要があります。

手順7: EM Expressでアクセスできるユーザーの設定

EM Expressにアクセスできるのは、通常データベース管理者の権限を持つユーザー(SYSやSYSTEMなど)ですが、特定のユーザーにアクセス権限を付与することも可能です。これには、該当ユーザーに適切な権限を割り当てる必要があります。

  1. 既存のユーザーに権限を付与する既存のデータベースユーザーにEM Expressへのアクセス権限を付与するためには、そのユーザーにEM_EXPRESS_BASICまたはEM_EXPRESS_ALLのロールを付与します。これにより、ユーザーはそれぞれのロールに応じた権限でEM Expressを使用できるようになります。
    • EM_EXPRESS_BASIC ロール: 基本的なモニタリング機能にアクセスできます。EM_EXPRESS_ALL ロール: データベースの完全な管理機能にアクセスできます。
    権限を付与するには、次のようにSQLコマンドを実行します。

    SQL> GRANT EM_EXPRESS_BASIC TO <ユーザー名>;

    または、すべての権限を付与する場合は:

    SQL> GRANT EM_EXPRESS_ALL TO <ユーザー名>;
  2. 新しいユーザーの作成と権限付与必要に応じて、新しいユーザーを作成し、EM Expressへのアクセス権限を付与することもできます。次の手順で新しいユーザーを作成し、権限を付与します。

    SQL> CREATE USER <ユーザー名> IDENTIFIED BY <パスワード>;
    SQL> GRANT CONNECT, RESOURCE TO <ユーザー名>;
    SQL> GRANT EM_EXPRESS_BASIC TO <ユーザー名>;

    または、完全な権限を持つ管理者としてのユーザーを作成する場合は:

    SQL> CREATE USER <ユーザー名> IDENTIFIED BY <パスワード>;
    SQL> GRANT CONNECT, RESOURCE, DBA TO <ユーザー名>;
    SQL> GRANT EM_EXPRESS_ALL TO <ユーザー名>;

これにより、該当ユーザーはEM Expressにアクセスでき、データベースのモニタリングや管理を行えるようになります。必要な権限は、システムのセキュリティポリシーに従って適切に割り当ててください。

手順8: EM Expressへアクセス

構成が完了したら、ブラウザからEM Expressにアクセスできます。以下のURLにアクセスしてください。

https://<データベースサーバーのホスト名orIPアドレス>:<ポート番号>/em

例: https://localhost:5500/em
https://192.168.56.10:5500/em

3. トラブルシューティング

  • アクセスできない場合:
    • リスナーのポート設定を再度確認してください。
    • データベースが正しく起動しているか確認します。
    • ファイアウォールの設定が正しいか確認します。
  • パフォーマンスが低い場合:
    • EM Expressは軽量ですが、同時に大量のセッションを処理することは得意ではありません。多数のユーザーが同時にアクセスする環境では、別途フル機能のEnterprise Managerを検討する必要があります。

まとめ

EM Expressは、Oracleデータベース管理のための簡易なツールですが、パフォーマンス監視や基本的な管理タスクを効率的に行うことができます。データベースのリソースを抑えつつ、管理者に必要な機能を提供するため、特に小規模環境やリソースが限られた環境での使用に適しています。

[参考]
2日でデータベース管理者

コメント

タイトルとURLをコピーしました