はじめに
Oracle Cloud で、Oracle Database をうまく管理するために、Enterprise Manager が利用できます。
特に、Enterprise Edition 以上の DBCS を Enterprise Manager でモニタリングすることで、SQLチューニング・アドバイザが GUI 上で利用できます。アプリケーションからリクエストされる SQL を自動的に解析して、「こういうチューニングしたらどう?」というアドバイスをしてくれる パフォーマンスチューニングを効率化してくれる便利な機能です。
Enterprise Manager はとても便利なのですが、導入するのが割と面倒だと思います(個人の意見) 今回の記事では、Enterprise Manager の構成から、DBCS インスタンスをモニタリングとして追加する手順を、ステップごとに紹介します。1画面ごとにスクリーンショットを載せているため、あまり迷わずに構成出来るはずです。
システム構成
MarketPlace を使って Enterprise Manager を構成していきます。色々な構成パターンがありますが、シンプルな時の構成例とその時の制限事項を説明していきます。
まず、基本的には次のような構成になります (いくつか細かい部分は省略して書いています)
Enterprise Manager を構成するときは、VCNの中に Oracle Dababase が既に存在していることが多いはずです。既存VCN に Enterprise Manager を作っていきますが、作成 Wizard の都合上、新たに 2個の Subnet が必要です。
- 踏み台(Bastion Server) 用の Public Subnet
- Enterprise Manager 用の Private Subnet
新たな Subnet は、自分の手で新規作成する必要はなく、Wizard の中で自動的に 2個の Subnet が新規に作成されます。CIDR 消費の観点から、既存の Subnet を使っていきたいかと思うかもしれませんが、制限上、新たに Subnet が必要となるのでご留意ください。
Enterprise Manager を作成
Marketplace から Applications を選択
Enterprise Manager
で検索して、Enterprise Manager 13c
を選択
Launch Stack
名前と説明を入れて Next
EnterpriseManagerStack
各種パラメータを入力して、Next を押します
- Enterprise Manager 用の 新規 Private Subnet :
10.0.101.0/24
- Enterprise Manager Password :
mIfoO8_fai12#-gai897fao
- Agent Registration Password :
mIfoO8_fai12#-gai897fao
- Database Administrators Password :
mIfoO8_fai12#-gai897fao
- DBSNMP User Database Password :
mIfoO8_fai12#-gai897fao
- Bastion Server 用の 新規 Public Subnet :
10.0.102.0/24
内容を確認して問題なければCreate
Create 直後の画面です。Resource Manager の Stacks として作成処理が始まります。25 分ほど時間が掛かります。
約25分後に ACTIVE となります
自動作成された環境を確認
Resource Manager によって自動作成された環境を確認していきます。興味がない場合は読み飛ばして頂いてOKです。
既存 VCN に 新規 Subnet が2個自動作成されています
Route Table
Enterprise Manager の Subent
Service Gateway がアタッチ
Route Table
Bustion Server Subnet
Internet Gateway がアタッチ
Compute Instance も2台分作成されている
Enterprise Manager
Network Security Group は自動付与されている
Enterprise Manager の Network Security Group
Enterprise Manager の Image は、直接見えない Custom Image を使っている
URL 直接入力すると Custom Image を参照可能
Bastion Server は、Oracle Linux 7.8 が使われる
Network Security Group は無し
Boot Volume は、47GB
Enterprise Manager の状態確認
Enterprise Manager の OS に SSH ログインして、正常に動作しているか確認します。まず、Bastion Server に SSH します。
> ssh opc@<bastion server の Public IP>
Last login: Sat Aug 8 01:00:07 2020 from
[opc@em-oms-bastion ~]$
次に、Enterprise Manager に SSH します
[opc@em-oms-bastion ~]$ ssh opc@10.0.101.2
Last login: Sat Aug 8 01:00:42 2020 from em-oms-bastion.embastion.vcn.oraclevcn.com
[opc@oms1 ~]$
oracle user にスイッチします
[opc@oms1 ~]$ sudo su - oracle
Last login: Sat Aug 8 01:07:45 GMT 2020 on pts/0
Installation details of EM 13.4
Bastion IP: 158.101.152.228 - use bastion for OMS access
EM URL: https://10.0.101.2:7799/em
Ports used by this deployment at /u01/app/oracle/em/middleware_134/install/portlist.ini
EM Middleware Home location: /u01/app/oracle/em/middleware_134
EM Agent Home location: /u01/app/oracle/em/emagent/agent_13.4.0.0.0
EM Diagnostic Kit (omsvfy): /u01/app/oracle/em/middleware_134/emdiag
EM Diagnostic Kit (repvfy): /u01/app/oracle/em/middleware_134/emdiag_rep
EM Diagnostic Kit (agtvfy): /u01/app/oracle/em/emagent/emdiag
Oracle Database Home location: /u01/app/oracle/database/product
Oracle Database SID: emrep
DB Connect String: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=oms1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=empdb)))
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@oms1 ~]$
ログイン時に表示された、EM Middleware Home location: /u01/app/oracle/em/middleware_134
を基に、emctl コマンドの場所を把握した上で、emctl status oms コマンドを実行します
/u01/app/oracle/em/middleware_134/bin/emctl status oms
実行例
4個 Up となっているので、正常に稼働していることがわかります
[oracle@oms1 ~]$ /u01/app/oracle/em/middleware_134/bin/emctl status oms
Oracle Enterprise Manager Cloud Control 13c Release 4
Copyright (c) 1996, 2020 Oracle Corporation. All rights reserved.
WebTier is Up
Oracle Management Server is Up
JVMD Engine is Up
BI Publisher Server is Up
[oracle@oms1 ~]$
hosts を確認します。oms1
が hosts に書かれています
[opc@oms1 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.101.2 oms1
[opc@oms1 ~]$
OCI Network Security Group の設定
Enterprise Manager と監視対象の DBCS 間で通信を許可します。今回はシンプルな設定のために、互いの Network Security Group 同士の通信を全て許可します。
DBCS → Enterprise Manager の方向を許可
Enterprise Manager → Network Security Group の方向を許可
Enterprise Manager にアクセス
- User : sysman
- Password : mIfoO8_fai12#-gai897fao (Enterprise Manager を作成した時に入力したもの)
同意します
ログイン直後のようこそ画面
Enterprise Manager に DBCS の OS を追加
DBCS の設定
監視対象として設定していくために、DBCSの設定を行います。iptables を停止します。Network Security Group で仮想ファイアウォール設定を行っているため、シンプルのために iptables を停止します。
DBCS のインスタンスにSSHログインします。
ssh opc@10.0.0.71
root ユーザーにスイッチします
sudo su -
iptables を無効にします。再起動時にも起動してこないようにします
systemctl stop iptables
systemctl disable iptables
Enterprise Manager のエージェントを格納するためのディレクトリを作成します
mkdir -p /u01/app/oracle/product/em13.4/agent
chown oracle:oinstall /u01/app/oracle/product/em13.4/agent
/etc/hostsの設定を行います。oms1
という名前で名前解決が出来る必要があり、hostsに追加することで名前解決が出来るようにします。
以下の設定を末尾に追加
sudo vi /etc/hosts
10.0.101.2 oms1
2台目も同様の操作を行う
Enterprise Manager の設定
Enterprise Manager の OS にSSHログインして、firewalld (iptables) を無効にします
[opc@oms1 ~]$ sudo systemctl stop firewalld
[opc@oms1 ~]$ sudo systemctl disable firewalld
Enterprise Manager のターゲットに追加
メニューから、「ターゲットの手動追加」を選択します
ホストにエージェントをインストールを押します。
追加を押します
OCI上に存在するインスタンスは、Oracle が提供する内部DNSによって、自動的に名前解決が出来るようになっています。DBCS インスタンスを指定します。
- ホスト :
oradb19ee.pubsubnet01.vcn.oraclevcn.com
以下パラメータ入力して、名前付き資格証明の + ボタンを押します
- インストールのベース・ディレクトリ :
/u01/app/oracle/product/em13.4/agent
- インスタンス・ディレクトリ :
/u01/app/oracle/product/em13.4/agent/agent_inst
Enterprise Manager が Bug らしき挙動があり、関係ないダミーの値を入力する必要があります
ts-db-dummy
再度 + ボタンをクリックします
以下のパラメータを入力します。SSHの秘密鍵は、DBaaS インスタンスを作成したときの公開鍵に対応したものを選択します。その後に、OK ボタンを押します。
ts-db-oracle
ルート資格証明の + を押します
以下のパラメータを入力します。SSHの秘密鍵は、DBCS インスタンスを作成したときの公開鍵に対応したものを選択します。
ts-db-root
次を押します。
Enterprise Manager のエージェントを DBCS インスタンス1台目にデプロイします。
進行中画面に切り替わります。15分くらいかかります。
15分後に、設定完了となり、完了ボタンを押します
他に追加したい DBCS インスタンスがある場合は、同様な作業を繰り返して追加します。
追加したホストの確認
追加した DBCS インスタンスを確認します。
メニューから、ホストを選択します。
追加したホストが見えています
CPU使用率、メモリ使用率、CPUスレッド使用率などが表示されています。OCI の Monitoring では、現在 DBCS に対応していないので、便利に活用できると思います。
Enterprise Manager に DBCS の Oracle Database Instance を追加
今までの手順で、DBCS インスタンスのホスト(仮想マシン)として、Enterprise Manager へ追加することが出来ました。Oracle Database として追加を行うことで、SQLのモニタリングなど、Oracle Database としてのモニタリングが出来るようになります。
Oracle DB ユーザーDBSNMPのロックを解除する
DBCS インスタンスへSSHを行い、oracleユーザーへスイッチをします
[opc@oradb19ee ~]$ sudo su - oracle
Last login: Sat Aug 8 04:09:56 UTC 2020
[oracle@oradb19ee ~]$
SQL*Plusを起動して、Oracle DB に接続します。
[oracle@oradb19ee ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 8 04:23:01 2020
Version 19.7.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.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 "mIfoO8_fai12#-gai897fao" account unlock;
User altered.
SQL>
Enterprise manager のターゲットに追加
Oracle DB として Enterprise Manager へ追加するために、メニューからターゲットの手動追加を押します
ガイド付きプロセスを使用した追加を押します
Oracleデータベースの行を選択して、追加を押します
虫眼鏡マークを押します
1台目の DBCS ホストを選択します
次を押します
進行中。2分くらい待ちます。
気にせずに、OK を押します。
ターゲットを選択し、構成ボタンを押します
以下パラメータを入力後、接続テストを押します
- モニター・パスワード : dbsnmp ユーザーのパスワードを入力
- リスナー・マシン名 : DBCS インスタンスのホスト名(FQDN)を入力。デフォルトで入力されているものでは、Enterprise Manager から接続が出来ないため、変更が必要
接続テストに成功した場合は、以下が表示されます
次に指定する情報を入力するために、DBCS のインスタンスにログインする必要があります。
DBaaS のインスタンスへSSH後、Oracleユーザーへスイッチ
[opc@sugihostname01 ~]$ sudo su - oracle
[oracle@sugihostname01 ~]$
lsnrctl status
コマンドを実行
[oracle@oradb19ee ~]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 08-AUG-2020 04:28:11
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 06-AUG-2020 01:35:26
Uptime 2 days 2 hr. 52 min. 45 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.0.0.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/oradb19ee/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.71)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oradb19ee.pubsubnet01.vcn.oraclevcn.com)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0.0/dbhome_1/admin/oradb19_nrt1r2/xdb_wallet))(Presentation=HTTP)(Session=RAW))
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 "a32a6f1b654541a5e053c105f40a57f6.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
Service "ac0abef76ce358cee0534700000a887a.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
Service "oradb19XDB.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 1 handler(s) for this service...
Service "oradb19_nrt1r2.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
Service "pdb01.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
The command completed successfully
[oracle@oradb19ee ~]$
この中から、pdb に関する情報を取得するために、DBCS インスタンス作成時に指定した、PDB name で grep
[oracle@oradb19ee ~]$ lsnrctl stat | grep -i pdb
Service "pdb01.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
接続名 pdb01.pubsubnet01.vcn.oraclevcn.com
が必要になるので、控えておきます。
Enterprise Manager の画面に戻り、プラがブル・データベースのタブへ移動します。この中から、2つ目のサービス名を控えたものに変更する必要があります
1個目を選択して、接続テスト。OKであることを確認
「成功しました」と表示されればOKです。
OKであれば、2個目も選択して接続テスト。こちらも、「成功しました」と表示されればOKです。
保存を押します
リスナー2個を選択して、次を押します
保存を押します
進行中となります
正常に完了。閉じるを押します
なお、自分の観測した範囲ですが、次のように登録に失敗するときがあります。
失敗
oradb19_oradb19ee.pubsubnet01.vcn.oraclevcn.com : Failed to promote credential change to agent for 3 target
プラガブルデータベースの登録に失敗しているようにみえています。自分の場合は、一度登録を削除した上で、再度登録しなおすと正常に登録が出来ました。
(参考) 登録したターゲットを削除
登録に失敗したときは、次のようにプラガブルデータベースのステータスが砂時計マークとなって、UP 状態になりません。
対象の2行を右クリックで、
はい
2行とも削除した状態です
同様に「データベース・インスタンス」で登録したインスタンスも削除します
はい
きれいになりました
追加した Oracle DB インスタンスを確認
Oracle DB のインスタンスに関するモニタリング状況を確認するため、メニューからすべてのターゲットを選択します
データベース・インスタンスを選択します
追加した 1台目のインスタンスをクリックします
パフォーマンス、リソース消費量が見えています
また、過去1時間の直近のSQLモニターが表示されています。
SQLモニタリングを選択します
ログインをします。system ユーザーと、DBCS インスタンス作成時に指定したパスワードを入力します
SQL モニタリング画面がひらかれます。Top 100 By を Duration
にすることで、実行時間の長いSQLを表示することが可能です
また、SQL一つを選択し、どのような実行計画かを確認することが可能となっています
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/