0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Enterprise Managerをコマンドで操作する際のTips

Last updated at Posted at 2025-03-05

はじめに

Oracle Enterprise Manager とは

Oracle Enterprise Manager(以下OEM) とは Oracle の各製品を管理することができるプラットフォームです。ダッシュボード的な使い方だけではなくメトリック監視や Database メンテナンスなど各種操作が可能になっています。

本記事の目的

OEM は WebUI からの操作ができますが emcli という OS コマンドでの操作が一部可能です。

OEM でやることは基本的に WebUI で完結するのですが、自動化などを考えると emcli を利用する場面も出てきます(WebUIが重いこともありますし)。

本記事では今まで行った emcli での便利だなと思った操作について紹介したいと思います。まだそんなに数があるわけではないので今後も都度加筆していきます。

前提

Tips

1. ログインとログアウトの仕様について

まずログイン・ログアウトは以下のコマンドで可能です。

## ログイン
emcli login -username=<username>

## ログアウト
emcli logout

ただ、emcliでログインできるのは OS ユーザを跨いでいても1人までとなっています。

そのため以下のような場合、問題が発生します。

1. Aさんがログイン
2. Bさんがログイン ← エラー

実際には以下のようなエラー文になります。

Error: Already logged in as user "sysman". Use "emcli logout" to logout the current user.

そのため排他制御を導入する必要があるのでご注意ください。

2. RAC Database と Database Instance の登録

RAC Database と Database Instance を OEM に追加することがあると思います。

この時 WebUI からやると時間がかかることがあるので、以下のように emcli からの実行が可能です。

ただしその RAC Database が所属する RAC Cluster や Host は登録されている前提です。

## まずは Database Instance 登録( Instance 数分繰り返す)
### <インスタンスのターゲット名>はOEM上で識別される名前なので、任意のものを入力してください
### <ホストのターゲット名>はあらかじめOEM上に登録されているホスト名です(OEM上の名前)
### -credentialsの<username>は接続に用いるDBユーザ名を入力してください
### -propertiesにはDBに接続するための情報を入れてください(接続先ホスト名とPORTとORACLE_SIDとORACLE_HOME)
emcli add_target -name="<インスタンスのターゲット名>"
  -type="oracle_database"
  -host="<ホストのターゲット名>" \
  -credentials="UserName:<username>;password:PWD_FILE;Role:Normal" \
  -properties="SID:<sid>;Port:<local_listener_port>;OracleHome:<ORACLE_HOME>;MachineName:<接続先ホスト名>" \
  -input_file="PWD_FILE:<path_to_password_file>"

## RAC Databaseの登録
### <RAC Databaseのターゲット名>はOEM上で識別される名前なので、任意のものを入力してください
### <1ノード目のホストのターゲット名>はインスタンス番号1が稼働するホストのターゲット名です
### -propertiesには接続先を記載してください(クラスタのターゲット名はOEM上でのクラスタ名)
### -instancesにはRAC Databaseに登録するインスタンスのターゲット名を入力してください
emcli add_target -name="<RAC Databaseのターゲット名>" 
  -type="rac_database"
  -host="<1ノード目のホストのターゲット名>" \
  -monitor_mode="1"
  -properties="ServiceName:<接続先Service名>;ClusterName:<クラスタのターゲット名>" \
  -instances="<先に登録したインスタンスのターゲット名1>:oracle_database;<先に登録したインスタンスのターゲット名2>:oracle_database;..."

そもそも RAC Cluster や Host の登録も emcli でできるはずなので、試したら追記します。

3. OEM ユーザの作成

OEM にログインするためのユーザを作成します。

今回は外部ユーザではなく OEM 上のユーザを作成します。

以下では特定の DB の ASH や SQLワークスペースに接続できる権限を付与していますが emcli get_supported_privileges で付与できる権限の一覧を確認できます。

emcli create_user \
  -name=<username> \
  -type=EM_USER \
  -password=<password> \
  -expired=<true | false> \
  -desc="<description>" \
  -privilege="DB_PERFORMANCE_HOME_VIEW;<インスタンスのターゲット名>:oracle_database" \
  -privilege="DB_PERFORMANCE_HOME_VIEW;<RAC Databaseのターゲット名>:rac_database" \
  -privilege="DB_PERFORMANCE_HOME_VIEW;<PDBのターゲット名>:oracle_pdb" \
  -privilege="DB_RUN_SQL;<インスタンスのターゲット名>:oracle_database" \
  -privilege="DB_RUN_SQL;<RAC Databaseのターゲット名>:rac_database" \
  -privilege="DB_RUN_SQL;<PDBのターゲット名>:oracle_pdb"

4. ターゲットの検索

emcli listでの検索が柔軟です良いかと考えています。

なお -resource の値一覧は emcli -help で確認可能です。また -resource 毎の詳細は emcli list -help -resource="<resource>" で確認できます。

以下は OEM Target を検索する例です。

## OEM Targetの検索
### <target_name>は検索したいターゲット名、演算子を = から like にして SQL でのワイルドカードを用いることもできます
emcli list -resource="Targets" -search="TARGET_TYPE ='rac_database'" -search="TARGET_NAME ='<target_name>'"

またcolumnsformatで表示側を調整することも可能です。

まとめ

本記事では emcli コマンドを用いた作業をいくつか紹介しました。

ログインの仕様とか少しトリッキーなところもありますが、利用できると OEM の操作を自動化でき作業時間の短縮が見込めます。

今後も新しい知見が貯まり次第追記していきますので、参考になれば嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?