はじめに
Oracle Enterprise Manager とは
Oracle Enterprise Manager(以下OEM) とは Oracle の各製品を管理することができるプラットフォームです。ダッシュボード的な使い方だけではなくメトリック監視や Database メンテナンスなど各種操作が可能になっています。
本記事の目的
OEM は WebUI からの操作ができますが emcli
という OS コマンドでの操作が一部可能です。
OEM でやることは基本的に WebUI で完結するのですが、自動化などを考えると emcli
を利用する場面も出てきます(WebUIが重いこともありますし)。
本記事では今まで行った emcli
での便利だなと思った操作について紹介したいと思います。まだそんなに数があるわけではないので今後も都度加筆していきます。
前提
- 本記事で利用している OEM は 13.5.0.0.0
- 全てのサブコマンドはこちらのリファレンスを確認してください
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>'"
またcolumns
やformat
で表示側を調整することも可能です。
まとめ
本記事では emcli
コマンドを用いた作業をいくつか紹介しました。
ログインの仕様とか少しトリッキーなところもありますが、利用できると OEM の操作を自動化でき作業時間の短縮が見込めます。
今後も新しい知見が貯まり次第追記していきますので、参考になれば嬉しいです!