はじめに
内容が古くなっています。こちらをご参照ください
Oracle Cloud Infrastructure (以下OCI)では、Oracle Database などを対象にしたシステムの運用管理ツールとして、Enterprise Manager が Market Place で提供されています。
Enterprise Manager は、多くの機能がありますが、特に便利な機能だと考えているのは以下の機能です
- SQL モニター
- SQL チューニングアドバイザー
- ホストのリソース消費をモニタリング
Oracle DB に発行する SQL 一つ一つを詳細にモニタリングを行うことが出来ます。SQLの実行にどれくらい時間がかかっているのか、時間が掛かっているのはどこのポイントなのか、どのような実行計画なのか、を詳細に把握することが可能です。
今回の記事では、Enterprise Manager を導入して、OCI の Oracle DBマネージドサービス(以下DBaaS) で作成した Data Guard 構成のインスタンスを監視対象として追加する手順を記載します。Data Guard の可用性構成をとっているため、2台の DBaaS インスタンスを追加する手順になります。
次のDocumentを参考にしています。
https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.3.1/emoci/index.html
構成図
事前準備
Compartment IDの確認
OCI のメニューから、Identity > Compartments へ移動します。
Enterprise Manager を作成する Compartment の OCID を確認します
Dynamic Groupの作成
OCI のメニューから、 Identity > Dynamic Group へ移動します。
Create Dynamic Group を押します
- NAME : sugi_OEM_Group
- DESCRIPTION : OEM Dynamic Group by sugiyama
- RULE1 :
ALL {instance.compartment.id = 'コンパートメントのOCID'}
Policy の作成
OCI のメニューから、 Identity > Policies へ移動します。
Create Policy を選択し、以下のパラメータを入力します
- NAME : EnterpriseManager_Policy
- Description : EnterpriseManager_Policy
- STATEMENT に以下を入力
Allow dynamic-group sugi_OEM_Group to manage instance-family in compartment <Compartment名>
Allow dynamic-group sugi_OEM_Group to manage volume-family in compartment <Compartment名>
Network Security Groupの作成
Enterprise Manager 用 Network Security Group を作成
- NAME : EnterpriseManagerNSG
- 以下の Ingress を許可
- TCP 22 : SSH
- TCP 3872 : Enterprise Manager から、EMエージェントを配布するときに利用するポート
- TCP 7803 : Enterprise Manager Console
- TCP 4903 : Agent Upload
- TCP 7301 : JVMD
- TCP 9851 : BI Publisher
- ICMP
Oracle DB のマネージドサービスインスタンス側のNSGの設定
- NAME : dbaas_nsg01
- 以下のIngressを許可
- TCP 22 : ICMP
- TCP 1521 : Oracle DB
- TCP 3872 : Enterprise Manager から、EMエージェントを配布するときに利用するポート
- TCP 4903 : Agent Upload
- ICMP
Enterprise Manager Install
Compute Instanceを作成
Market Place から Enterprise Manager を構成
- 商用環境では、VM.Standard2.8 以上が推奨されているため、これを選択
Storageを多めに確保します。600GB以上あれば大丈夫なようです。
Enterprise Manager 用に作成した、Network Security Group を選択します。
Fault Domain を選択して、Create を押します
Compute Instance の状態が緑色になってから、Instance内の Enterprise Manager の構成が完了するまで、約30分ほど掛かります
SSHアクセスを行います。SSHが出来るようになるまで若干時間がかかります
> ssh opc@132.145.125.202
[opc@em01 ~]$
Oracle ユーザーにスイッチします
sudo su - oracle
Install が完了していない場合は、login メッセージに、Enterprise Manager を install 途中の旨が表示されています
NOTE: EM not fully installed yet, check the progress in /var/log/emgc_setup.log
Installation details of EM 13.3 PG .....
Ports used by this deployment at /u01/app/em13c/middleware/install/portlist.ini
Database location: /u01/app/database/product
Database name: emrep
EM Middleware Home location: /u01/app/em13c/middlewareEM Agent Home location: /u01/app/em13c/emagent/agent_13.3.0.0.0
EM Diagnostic Kit (omsvfy): /u01/app/em13c/middleware/emdiag
EM Diagnostic Kit (repvfy): /u01/app/em13c/middleware/emdiag_rep
EM Diagnostic Kit (agtvfy): /u01/app/em13c/emagent/agent_13.3.0.0.0/emdiag
This information is also available in the file /home/oracle/README.FIRST
To start all processes, as the user oracle, run the script /home/oracle/start_all.sh
To stop all processes, as the user oracle, run the script /home/oracle/stop_all.sh
[oracle@em01 ~]$
/var/log/emgc_setup.log
を確認することで、Install の Log を確認することが出来ます
tail -f /var/log/emgc_setup.log
Install が完了していると、以下のログインメッセージに切り替わります
Installation details of EM 13.3 PG .....
Public EM url: https://<global ip>:7803/em
Private EM url: https://10.2.0.4:7803/em
Ports used by this deployment at /u01/app/em13c/middleware/install/portlist.ini
Database location: /u01/app/database/product
Database name: emrep
EM Middleware Home location: /u01/app/em13c/middleware
EM Agent Home location: /u01/app/em13c/emagent/agent_13.3.0.0.0
EM Diagnostic Kit (omsvfy): /u01/app/em13c/middleware/emdiag
EM Diagnostic Kit (repvfy): /u01/app/em13c/middleware/emdiag_rep
EM Diagnostic Kit (agtvfy): /u01/app/em13c/emagent/agent_13.3.0.0.0/emdiag
This information is also available in the file /home/oracle/README.FIRST
To start all processes, as the user oracle, run the script /home/oracle/start_all.sh
To stop all processes, as the user oracle, run the script /home/oracle/stop_all.sh
[oracle@emcc ~]$
なお、setup.log の末尾出力が以下のものになっています。
[oracle@emcc ~]$ tail -f /var/log/emgc_setup.log
Starting BI Publisher Server ...
BI Publisher Server Successfully Started
BI Publisher Server is Up
Starting the Oracle Management Agent .....
Oracle Enterprise Manager Cloud Control 13c Release 3
Copyright (c) 1996, 2018 Oracle Corporation. All rights reserved.
Starting agent ....................... started.
OMS url: https://<global ip>:7803/em
Setup started at : Sun Aug 4 08:24:41 GMT 2019 and finished at Sun Aug 4 08:37:00 GMT 2019
サービスが全て稼働しているかを確認します
- WebTier
- Oracle Management Server
- JVMD
- BI Publisher
[oracle@emcc ~]$ /u01/app/em13c/middleware/bin/emctl status oms
Oracle Enterprise Manager Cloud Control 13c Release 3
Copyright (c) 1996, 2018 Oracle Corporation. All rights reserved.
WebTier is Up
Oracle Management Server is Up
JVMD Engine is Up
BI Publisher Server is Up
[oracle@emcc ~]$
Enterprise Manager の初期アカウントは、以下のものになっています
- User : sysman
- Password : welcome1
初期パスワードのままでは、セキュリティに不安があるので、パスワードを変更します。15分ほど実行時間が掛かります。
/u01/app/em13c/middleware/bin/emctl config oms -change_repos_pwd -old_pwd welcome1 -new_pwd <your_password>
実行例
[oracle@emcc ~]$ /u01/app/em13c/middleware/bin/emctl config oms -change_repos_pwd -old_pwd welcome1 -new_pwd <your_password>
Oracle Enterprise Manager Cloud Control 13c Release 3
Copyright (c) 1996, 2018 Oracle Corporation. All rights reserved.
Changing passwords in backend ...
Passwords changed in backend successfully.
Updating repository password in Credential Store...
Successfully updated Repository password in Credential Store.
Restart all the OMSs using 'emctl stop oms -all' and 'emctl start oms'.
Successfully changed repository password.
[oracle@emcc ~]$
Enterprise Manager の再起動を行います。まず停止をします
/u01/app/em13c/middleware/bin/emctl stop oms -all
実行例
[oracle@emcc ~]$ /u01/app/em13c/middleware/bin/emctl stop oms -all
Oracle Enterprise Manager Cloud Control 13c Release 3
Copyright (c) 1996, 2018 Oracle Corporation. All rights reserved.
Stopping Oracle Management Server...
WebTier Successfully Stopped
Oracle Management Server Successfully Stopped
Oracle Management Server is Down
JVMD Engine is Down
Stopping BI Publisher Server...
BI Publisher Server Successfully Stopped
AdminServer Successfully Stopped
BI Publisher Server is Down
[oracle@emcc ~]$
起動します
/u01/app/em13c/middleware/bin/emctl start oms
実行例
[oracle@emcc ~]$ /u01/app/em13c/middleware/bin/emctl start oms
Oracle Enterprise Manager Cloud Control 13c Release 3
Copyright (c) 1996, 2018 Oracle Corporation. All rights reserved.
Starting Oracle Management Server...
WebTier Successfully Started
Oracle Management Server Successfully Started
Oracle Management Server is Up
JVMD Engine is Up
Starting BI Publisher Server ...
BI Publisher Server Successfully Started
BI Publisher Server is Up
[oracle@emcc ~]$
Enterprise Manager に、Oracle DB のホスト(仮想インスタンス)を監視対象に追加
Enterprise Manager Login
Enterprise Manager を Install した インスタンスの Public IP を使用して、Webブラウザからアクセスを行います
https://EnterpriseManager_global_ip:7803/em
- User : sysman
- Password : 変更後パスワード
保存して続行を押します
ライセンスに同意します
ようこそページが表示されています
監視対象側の準備
監視対象として含める、Oracle DB マネージドサービスのインスタンス側の設定を行います。iptables を停止します。Network Security Group で仮想ファイアウォール設定を行っているため、シンプルのために停止を行います
Oracle DB のインスタンスにSSHログインします。1台目
ssh opc@sugihostname01.priv01.vcn.oraclevcn.com
root ユーザーにスイッチします
sudo su -
iptables を無効にします。再起動時にも起動してこないようにします
service iptables stop
chkconfig iptables off
Enterprise Manager のエージェントを格納するためのディレクトリを作成します
mkdir -p /u01/app/oracle/product/em13.3/agent
chown oracle:oinstall /u01/app/oracle/product/em13.3/agent
/etc/hostsの設定を行います。emcc.marketplace.com
という名前で名前解決が出来る必要があり、hostsに追加することで名前解決が出来るようにします。
以下の設定を末尾に追加
sudo vi /etc/hosts
10.2.0.4 emcc.marketplace.com emcc
2台目も同様の操作を行う
Enterprise Manager側の準備
SSHログインして、firewalld (iptables) を無効にします
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Enterprise Manager のターゲットに追加
メニューから、「ターゲットの手動追加」を選択します
ホストにエージェントをインストールを押します。
追加を押します
OCI上に存在するインスタンスは、Oracle が提供する内部DNSによって、自動的に名前解決が出来るようになっています。1台目のDBaaSインスタンスを指定します。
- ホスト :
sugihostname01.priv01.vcn.oraclevcn.com
以下パラメータ入力して、名前付き資格証明の + ボタンを押します
- インストールのベース・ディレクトリ :
/u01/app/oracle/product/em13.3/agent
- インスタンス・ディレクトリ :
/u01/app/oracle/product/em13.3/agent/agent_inst
Enterprise Manager が Bug らしき挙動があり、関係ないダミーの値を入力する必要があります
再度 + ボタンをクリックします
以下のパラメータを入力します。SSHの秘密鍵は、DBaaS インスタンスを作成したときの公開鍵に対応したものを選択します。
ルート資格証明の + を押します
以下のパラメータを入力します。SSHの秘密鍵は、DBaaS インスタンスを作成したときの公開鍵に対応したものを選択します。
次を押します。
Enterprise Manager のエージェントをDBaaSインスタンス1台目にデプロイします。
進行中画面に切り替わります。15分くらいかかります。
15分後に、設定完了となり、完了ボタンを押します
DBaaS インスタンスは、Data Guard 構成をしているので、2台目も同様に追加をします
追加したホストの確認
追加した DBaaS インスタンスを確認します。
メニューから、ホストを選択します。
追加したホストが見えています
CPU使用率、メモリ使用率、CPUスレッド使用率などが表示されています。OCI の Monitoring では、現在 DBaaS に対応していないので、便利に活用できると思います。
Enterprise Manager に、Oracle DB のインスタンスを監視対象に追加
今までの手順で、DBaaSインスタンスのホスト(仮想マシン)として、Enterprise Manager へ追加することが出来ました。Oracle DB として追加を行うことで、SQLのモニタリングなど、Oracle DB としてのモニタリングが出来るようになります。
Data Guard 1台目のインスタンスを追加
Data Guard で構成されているうち、1台目のインスタンスを追加します。
Oracle DB ユーザーDBSNMPのロックを解除する
DBaaS インスタンスへSSHを行い、oracleユーザーへスイッチをします
[opc@sugihostname01 ~]$ sudo su - oracle
[oracle@sugihostname01 ~]$
SQL*Plusを起動して、Oracle DB に接続します。
DBaaS インスタンスを作成した時に指定したパスワードを入力します。
なお、Data Guard 構成を組んでいるときは、Primary Role にしかアクセス出来ないためご注意ください。Secondary Role に接続した場合はエラーとなります
sqlplus system/yourpassword
実行例
[oracle@sugihostname01 ~]$ sqlplus system/yourpassword
SQL*Plus: Release 18.0.0.0.0 - Production on Sat Aug 17 06:11:33 2019
Version 18.6.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Last Successful login time: Sat Aug 17 2019 06:11:29 +00:00
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.6.0.0.0
SQL>
show con_name
コマンドで、接続先のコンテナ名を確認します。CDB$ROOT
と表示されると、CDB(Container DataBase) に接続していることがわかります。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL>
Oracle DB 上の、DBSNMP
ユーザー情報を確認します
select USERNAME,ACCOUNT_STATUS from DBA_USERS where USERNAME='DBSNMP';
実行例。ACCOUNT_STATUSの値が EXPIRED & LOCKED
となっていることがわかります。
SQL> select USERNAME,ACCOUNT_STATUS from DBA_USERS where USERNAME='DBSNMP';
USERNAME
----------------------------------------------------------------------------------------------------
ACCOUNT_STATUS
--------------------------------
DBSNMP
EXPIRED & LOCKED
SQL>
ユーザーDBSNMPのパスワードを設定しロック解除します。
alter user DBSNMP identified by (設定するパスワード) account unlock;
実行例 (パスワードは仮の値へ置き換えています)
SQL> alter user DBSNMP identified by "secretsecretsecretsecretsecret" account unlock;
User altered.
SQL>
Enterprise manager のターゲットに追加
Oracle DB として Enterprise Manager へ追加するために、メニューからターゲットの手動追加を押します
ガイド付きプロセスを使用した追加を押します
Oracleデータベースの行を選択して、追加を押します
虫眼鏡マークを押します
1台目の DBaaS ホストを選択します
次を押します
進行中。2分くらい待ちます。
気にせずに、OK を押します。
ターゲットを選択し、構成ボタンを押します
以下パラメータを入力後、接続テストを押します
- モニター・パスワード : dbsnmp ユーザーのパスワードを入力
- リスナー・マシン名 : DBaas インスタンスのホスト名(FQDN)を入力。デフォルトで入力されているものでは、Enterprise Manager から接続が出来ないため、変更が必要
接続テストに成功した場合は、以下が表示されます
次に指定する情報を入力するために、DBaaSのインスタンスにログインする必要があります。
DBaaS のインスタンスへSSH後、Oracleユーザーへスイッチ
[opc@sugihostname01 ~]$ sudo su - oracle
[oracle@sugihostname01 ~]$
lsnrctl stat
コマンドを実行
[oracle@sugihostname01 ~]$ lsnrctl stat
LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 17-AUG-2019 07:23:13
Copyright (c) 1991, 2018, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production
Start Date 03-AUG-2019 18:22:57
Uptime 13 days 13 hr. 0 min. 15 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/18.0.0.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/sugihostname01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))(SDU=65535)(SEND_BUF_SIZE=10485760)(RECV_BUF_SIZE=10485760))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.2.100.5)(PORT=1521)))
Services Summary...
Service "+APX" has 1 instance(s).
Instance "+APX1", status READY, has 1 handler(s) for this service...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_RECO" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "867e3020a52702dee053050011acf8c0.priv01.vcn.oraclevcn.com" has 1 instance(s).
Instance "suginm01", status READY, has 2 handler(s) for this service...
Service "8f3a3bbb2413115fe0530564020a2e54.priv01.vcn.oraclevcn.com" has 1 instance(s).
Instance "suginm01", status READY, has 2 handler(s) for this service...
Service "sgpbd01.priv01.vcn.oraclevcn.com" has 1 instance(s).
Instance "suginm01", status READY, has 2 handler(s) for this service...
Service "suginm01XDB.priv01.vcn.oraclevcn.com" has 1 instance(s).
Instance "suginm01", status READY, has 1 handler(s) for this service...
Service "suginm01_CFG.priv01.vcn.oraclevcn.com" has 1 instance(s).
Instance "suginm01", status READY, has 2 handler(s) for this service...
Service "suginm01_nrt1mv.priv01.vcn.oraclevcn.com" has 1 instance(s).
Instance "suginm01", status READY, has 2 handler(s) for this service...
Service "suginm01_nrt1mv_DGB.priv01.vcn.oraclevcn.com" has 1 instance(s).
Instance "suginm01", status READY, has 2 handler(s) for this service...
The command completed successfully
[oracle@sugihostname01 ~]$
この中から、pdb に関する情報を取得するために、DBaaS インスタンス作成時に指定した、PDB name で grep
[oracle@sugihostname01 ~]$ lsnrctl stat | grep -i sgpbd
Service "sgpbd01.priv01.vcn.oraclevcn.com" has 1 instance(s).
接続名 sgpbd01.priv01.vcn.oraclevcn.com
が必要になるので、控えておきます。
Enterprise Manager の画面に戻り、プラがブル・データベースのタブへ移動します。この中から、2つ目のサービス名を控えたものに変更する必要があります
1個目を選択して、接続テスト。OKであることを確認
OKであれば、2個目も選択して接続テスト。
保存を押します
リスナー2個を選択して、次を押します
保存を押します
正常に完了。閉じるを押します
追加した Oracle DB インスタンスを確認
Oracle DB のインスタンスに関するモニタリング状況を確認するため、メニューからすべてのターゲットを選択します
データベース・インスタンスを選択します
追加した 1台目のインスタンスをクリックします
パフォーマンス、リソース消費量が見えています
また、過去1時間の直近のSQLモニターが表示されています。
SQLモニタリングを選択します
ログインをします。system ユーザーと、DBaaS インスタンス作成時に指定したパスワードを入力します
SQL モニタリング画面がひらかれます。Top 100 By を Duration
にすることで、実行時間の長いSQLを表示することが可能です
また、SQL一つを選択し、どのような実行計画かを確認することが可能となっています
Data Guard の 2台目インスタンスを追加
1台目 DBaaS インスタンスが出来ましたが、2台目のインスタンスが追加されていないため、フェールオーバー・スイッチオーバーで2台目インスタンスが Primary Role になった際には、モニタリングが出来なくなります。
2台目インスタンスがPrimary Role になった際にもモニタリングが出来るように、2台目インスタンスを Enterprise Manager へ追加を行います。
追加作業をするために、一時的に スイッチオーバーを実施して、2台目の DBaaS インスタンスを Primary へスイッチします。
OCIのコンソール画面から、スイッチオーバーを行います。
Switchover ボタンを押下後、すぐに処理が走り黄色ステータスに変わります。その後、数分待機することで、AVAILABLE ステータスになります。
その後、1台目のインスタンスを追加した手順を、そのまま使用して2台目を追加します。
確認
2台とも追加すると、ターゲットの一覧に2台分表示されます。Data Guard の Secondary の方は、Oracle DB としての通信が出来ないため、赤色矢印となっていますが、正常状態なので無視して頂いて大丈夫です。
URL
Data Guard の Install
https://docs.oracle.com/cd/E96517_01/dgbkr/oracle-data-guard-broker-installation-requirements.html#GUID-DBCAC77D-8B4D-4727-B89E-6CFA69302187
Data Guard の構成とフェールオーバー実行例
https://www.oracle.com/technetwork/jp/content/bcp-dg-401575-ja.pdf
Enterprise Manager に必要な要件
https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.3.1/emoci/index.html
Enterprise Manager を作成
https://qiita.com/ts_carp/items/f351d43d2017e8786768
Enterprise Manager Document
https://www.oracle.com/technetwork/jp/oem/enterprise-manager/documentation/index.html
Enterprise Manager を OCI 上に Install
https://qiita.com/ts_carp/items/f351d43d2017e8786768
Enterprise Managerについて
https://dev.classmethod.jp/cloud/aws/oem-cloud-control-building-oms/