Help us understand the problem. What is going on with this article?

[Oracle Cloud] Enterprise Manager で DBCS インスタンスを追加

はじめに

Oracle Cloud で、Oracle Database をうまく管理するために、Enterprise Manager が利用できます。
特に、Enterprise Edition 以上の DBCS を Enterprise Manager でモニタリングすることで、SQLチューニング・アドバイザが GUI 上で利用できます。アプリケーションからリクエストされる SQL を自動的に解析して、「こういうチューニングしたらどう?」というアドバイスをしてくれる パフォーマンスチューニングを効率化してくれる便利な機能です。

Enterprise Manager はとても便利なのですが、導入するのが割と面倒だと思います(個人の意見) 今回の記事では、Enterprise Manager の構成から、DBCS インスタンスをモニタリングとして追加する手順を、ステップごとに紹介します。1画面ごとにスクリーンショットを載せているため、あまり迷わずに構成出来るはずです。

システム構成

MarketPlace を使って Enterprise Manager を構成していきます。色々な構成パターンがありますが、シンプルな時の構成例とその時の制限事項を説明していきます。

まず、基本的には次のような構成になります (いくつか細かい部分は省略して書いています)

1596847197335.png

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 を選択

1596841847504.png

Enterprise Manager で検索して、Enterprise Manager 13c を選択

1596841927683.png

Launch Stack

1590393888069.png

名前と説明を入れて Next

  • EnterpriseManagerStack

1590393934538.png

各種パラメータを入力して、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

1596842453732.png

内容を確認して問題なければCreate

test.png

Create 直後の画面です。Resource Manager の Stacks として作成処理が始まります。25 分ほど時間が掛かります。

1596842514447.png

約25分後に ACTIVE となります

1596845202004.png

自動作成された環境を確認

Resource Manager によって自動作成された環境を確認していきます。興味がない場合は読み飛ばして頂いてOKです。
既存 VCN に 新規 Subnet が2個自動作成されています

1596842552952.png

Route Table
Enterprise Manager の Subent
Service Gateway がアタッチ

1596845293295.png

Route Table
Bustion Server Subnet
Internet Gateway がアタッチ

1596845340420.png

Compute Instance も2台分作成されている

1596842647505.png

Enterprise Manager
Network Security Group は自動付与されている

1596843237790.png

Enterprise Manager の Network Security Group

1596848272276.png

Enterprise Manager の Image は、直接見えない Custom Image を使っている
URL 直接入力すると Custom Image を参照可能

https://console.us-ashburn-1.oraclecloud.com/compute/images/ocid1.image.oc1..aaaaaaaaf2shde6p6e7f2vh47bhak6ozydgdvxw2e5qhmxjjxzp375yy6gya

1596843305109.png

Bastion Server は、Oracle Linux 7.8 が使われる
Network Security Group は無し
Boot Volume は、47GB

1596843121843.png

Enterprise Manager の状態確認

Enterprise Manager の OS に SSH ログインして、正常に動作しているか確認します。まず、Bastion Server に SSH します。

ASN.1
> 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 の方向を許可

1596853644615.png

Enterprise Manager → Network Security Group の方向を許可

1596853706043.png

Enterprise Manager にアクセス

1596849232674.png

  • User : sysman
  • Password : mIfoO8_fai12#-gai897fao (Enterprise Manager を作成した時に入力したもの)

1596849358398.png

同意します

1596849386296.png

ログイン直後のようこそ画面

1596849417821.png

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 のターゲットに追加

メニューから、「ターゲットの手動追加」を選択します

1565979624292.png

ホストにエージェントをインストールを押します。

1565979674276.png

追加を押します

1565979822272.png

OCI上に存在するインスタンスは、Oracle が提供する内部DNSによって、自動的に名前解決が出来るようになっています。DBCS インスタンスを指定します。

  • ホスト : oradb19ee.pubsubnet01.vcn.oraclevcn.com

1596854097588.png

以下パラメータ入力して、名前付き資格証明の + ボタンを押します

  • インストールのベース・ディレクトリ : /u01/app/oracle/product/em13.4/agent
  • インスタンス・ディレクトリ : /u01/app/oracle/product/em13.4/agent/agent_inst

1596854174681.png

Enterprise Manager が Bug らしき挙動があり、関係ないダミーの値を入力する必要があります

ts-db-dummy

1565980600076.png

再度 + ボタンをクリックします

1565980629063.png

以下のパラメータを入力します。SSHの秘密鍵は、DBaaS インスタンスを作成したときの公開鍵に対応したものを選択します。その後に、OK ボタンを押します。

ts-db-oracle

1566018662381.png

ルート資格証明の + を押します

1565980758294.png

以下のパラメータを入力します。SSHの秘密鍵は、DBCS インスタンスを作成したときの公開鍵に対応したものを選択します。

ts-db-root

1566019134043.png

次を押します。

1565980914769.png

Enterprise Manager のエージェントを DBCS インスタンス1台目にデプロイします。

1565980946090.png

進行中画面に切り替わります。15分くらいかかります。

1565980963749.png

15分後に、設定完了となり、完了ボタンを押します

1566019913272.png

他に追加したい DBCS インスタンスがある場合は、同様な作業を繰り返して追加します。

追加したホストの確認

追加した DBCS インスタンスを確認します。
メニューから、ホストを選択します。

1566020333427.png

追加したホストが見えています

1566020376864.png

CPU使用率、メモリ使用率、CPUスレッド使用率などが表示されています。OCI の Monitoring では、現在 DBCS に対応していないので、便利に活用できると思います。

1566021373730.png

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 へ追加するために、メニューからターゲットの手動追加を押します

1566025496486.png

ガイド付きプロセスを使用した追加を押します

1566025599984.png

Oracleデータベースの行を選択して、追加を押します

1566025697913.png

虫眼鏡マークを押します

1566025738993.png

1台目の DBCS ホストを選択します

1566025763738.png

次を押します

1566025791230.png

進行中。2分くらい待ちます。

1566025806770.png

気にせずに、OK を押します。

1566025872492.png

ターゲットを選択し、構成ボタンを押します

1566026152862.png

以下パラメータを入力後、接続テストを押します

  • モニター・パスワード : dbsnmp ユーザーのパスワードを入力
  • リスナー・マシン名 : DBCS インスタンスのホスト名(FQDN)を入力。デフォルトで入力されているものでは、Enterprise Manager から接続が出来ないため、変更が必要

1596860851795.png

接続テストに成功した場合は、以下が表示されます

1566026424132.png

次に指定する情報を入力するために、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つ目のサービス名を控えたものに変更する必要があります

1596861009365.png

1個目を選択して、接続テスト。OKであることを確認

1566027061368.png

「成功しました」と表示されればOKです。

1596861030848.png

OKであれば、2個目も選択して接続テスト。こちらも、「成功しました」と表示されればOKです。

1566027126082.png

保存を押します

1566027177110.png

リスナー2個を選択して、次を押します

1566027259646.png

保存を押します

1566027310680.png

進行中となります

1596861143430.png

正常に完了。閉じるを押します

1596862942495.png

なお、自分の観測した範囲ですが、次のように登録に失敗するときがあります。

失敗
oradb19_oradb19ee.pubsubnet01.vcn.oraclevcn.com : Failed to promote credential change to agent for 3 target

プラガブルデータベースの登録に失敗しているようにみえています。自分の場合は、一度登録を削除した上で、再度登録しなおすと正常に登録が出来ました。

(参考) 登録したターゲットを削除

登録に失敗したときは、次のようにプラガブルデータベースのステータスが砂時計マークとなって、UP 状態になりません。

1596862050554.png

対象の2行を右クリックで、

1596862178893.png

はい

1596862214957.png

2行とも削除した状態です

1596862249419.png

同様に「データベース・インスタンス」で登録したインスタンスも削除します

1596862688193.png

はい

1596862715544.png

きれいになりました

1596862730601.png

追加した Oracle DB インスタンスを確認

Oracle DB のインスタンスに関するモニタリング状況を確認するため、メニューからすべてのターゲットを選択します

1566027796483.png

データベース・インスタンスを選択します

1566027852035.png

追加した 1台目のインスタンスをクリックします

1566027875291.png

パフォーマンス、リソース消費量が見えています

1566028450986.png

また、過去1時間の直近のSQLモニターが表示されています。

1566028501313.png

SQLモニタリングを選択します

1566032368464.png

ログインをします。system ユーザーと、DBCS インスタンス作成時に指定したパスワードを入力します

1596861443648.png

SQL モニタリング画面がひらかれます。Top 100 By を Duration にすることで、実行時間の長いSQLを表示することが可能です

1566032461977.png

また、SQL一つを選択し、どのような実行計画かを確認することが可能となっています

1566032557426.png

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

https://qiita.com/shirok/items/2eb68c3777f34a57f632

https://www.slideshare.net/techblogyahoo/oracle-data-guard-48172431

Enterprise Managerについて
https://dev.classmethod.jp/cloud/aws/oem-cloud-control-building-oms/

https://qiita.com/sugimount/items/96f2349b9938b3642f90

sugimount
CloudNativeな色々をやっています / 投稿している内容は個人的な見解なので、所属組織とは関係ありません https://twitter.com/sugimount
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away