この記事は、JPOUG Advent Calendar 2022 13日目の記事です。12日目は Noriyoshi Shinoda さんの記事 「Active Data Guard スタンバイ・インスタンスで PDB の操作を試す(Oracle Database 21c)」でした。
概要
Oracle Databaseの性能チューニングには、Enterprise Editionのオプション機能(Diagnostics Pack,Tuning Pack,Real Application Testing)が有効なケースが多くあります。これらの機能の多くは、SQL*Plusとシェルのコマンドで活用することが可能ですが、最初はEnteprise Managerから利用することで、使い始めやすかったり、視覚から理解しやすかったりします。Oracle Databaseの高度なチューニング方法を学ぶ上で、Oracle Database + Enterprise Managerの環境はとても有効です。
Oracle LiveLabsは、Oracle Cloud Infrastructure上で利用できる、自己学習用の様々なワークショップをまとめたサイトです。本記事で紹介するワークショップは、Oracle Database+EMの環境を触りながら、Diagnostics Pack,Tuning Pack,Real Application Testingなどの機能を体験する、というものです。
記事の中心は、ワークショップを始めるまでの環境構築の作業です。環境ができればワークショップにしたがって、性能チューニングのための機能を自己学習することができます。自己学習用の環境で、自分のペースで試したいことを試すことが可能です。
Oracle LiveLabsには、非常の多くのワークショップが用意されています。下記ページが参考になります。
Oracle LiveLabsのご紹介
2022年12月ごろの情報・環境を元にこの記事は記載しています。
0.本記事(Oracle Database + Enterprise Managerによる性能チューニングのワークショップ)の内容を実行するの前提
本記事ではLiveLabsのためのOracle DB+EMの環境を、自分が利用できるOracle Cloud Infrastructure(OCI)の環境にデプロイすることとします。本記事の作業を実施する前提を書き出します。
- Oracle Cloud Infrastructureのテナント(アカウント)があること
- 利用できるOracle Cloud Infrastructureのコンパートメントがあること
- そのコンパートメントにパブリックネットワークからアクセスできる仮想ネットワーク(VCN)を作成済みであること
- コンピュート・インスタンスを作成する際に利用するSSHキーペアのファイルを作成済みであること
- Tera TermなどSSHでLinuxサーバーに接続するツールが使えること
- FileZillaなどSFTPでLinuxサーバーとファイル送受信をするツールが使えること
これらは、OCIでコンピュート・インスタンスを作成して活用するとき、一般的に求められる内容かと思います。この前提の準備には、下記の記事が参考になります。
入門編 - Oracle Cloud Infrastructure を使ってみよう
その1 - OCIコンソールにアクセスして基本を理解する
その2 - クラウドに仮想ネットワーク(VCN)を作る
ちなみにLiveLabsの実施方法に関しては、いくつか選択肢があるので、本記事以外のやり方もあります。OCIの経験があり別のやり方もわかる、という方は、適宜読みかえてください。
本ワークショップにおいては、OCIのコンピュートインスタンスにOracle Database + EMの環境を作成します。したがってコンピュートインスタンスの利用に、必要であれば課金が発生します。これはそれほど高額にはならないと考えられます。
ワークショップではない通常の用途でOCIのコンピュート環境にOracle Databaseをインストールして利用する場合、オンプレミス環境と同様のBYOLするためのOracle Databaseのライセンスが必要です。ただし、このワークショップの用途だけに利用する場合、BYOLするためのOracle Databaseのライセンスは不要です。この点に関して下記が本ワークショップのドキュメントに記載されている内容となります。(ワークショップ用として作成した本環境に実環境のデータなどを持ち込んで利用することはできません。)
1.ワークショップのドキュメントを参照する
本記事で利用するワークショップのドキュメントを参照します。
Oracle LiveLabsへアクセス
まずはLiveLabsのトップページへアクセスします。
Welcome to LiveLabs
Oracle Database + Enterprise Managerによる性能チューニングのワークショップへアクセス
画面上部の検索窓にDatabase Performance Management
と入力し検索します。
これで本記事で利用するワークショップ「EM - Database Performance Management: Find, Fix, Validate」へアクセスできます。クリックしてワークショップの中身に入っていきます。
( 直接こちらのURLでアクセスすることもできます。
EM - Database Performance Management: Find, Fix, Validate
)
画面右上の [Start]をクリックします。
上のボタン[Run on Your Tenancy]をクリックします。
これで、いま選択しているいワークショップ「EM - Database Performance Management: Find, Fix, Validate」の手順が書かれているドキュメントへアクセスできます。
( 直接こちらのURLでアクセスすることもできます。
Oracle Enterprise Manager - Database Performance Management: Find-Fix-Validate › Introduction
)
このドキュメントにしたがって手順を実施すれば、ワークショップを実施することができます。本記事では、基本このドキュメントを読み進めていただく前提で、環境構築の作業を中心に手順をわかりやすく説明していきます。
2.ワークショップ用のOracle Database + EMの環境をつくる
OCIのコンソールへアクセス
ドキュメントの左側から[Get Started - Task2:Sign in to Your Account]を選択してください。
OCIの自身のテナントのアカウントで接続する手順がガイドされています。通常の手順と変わるところはありません。自身のアカウントでOCIに接続してください。
Lab1 Prepare Setup
ワークショップのための環境を構築するための準備作業が記載されています。本記事でご説明する順序で進めていただくことで過不足なく準備作業ができます。
Lab1-Task 1: Download Oracle Resource Manager (ORM) stack zip file
ワークショップの環境構築のための、OCIのリソースマネージャのZIPファイルがダウンロードできるようになっていますのでダウンロードします。このファイルを使えば、簡単にワークショップの用の環境構築が可能です。
Lab1-Task 2: Adding Security Rules to an Existing VCN
本記事の前提のところで記載したように、事前に環境を作成する自分のコンパートメントと仮想ネットワーク(VCN)が必要です。用意したVCNに関して、セキュリティ・リストのDefault Security Listで、下記画面で指定されたポートの通信を許可する設定をします。ドキュメントに指定された通りに設定してください。
OCIのコンソール画面での設定例は次のようになります。
仮想ネットワーク(VCN)の設定に関しては、下記のドキュメントが参考になります。
その2 - クラウドに仮想ネットワーク(VCN)を作る
Lab1-Task 3: Setup Compute
ドキュメントの「Lab1-Task 3: Setup Compute」では、この先の作業の選択肢を提示しています。ワークショップの内容として実行できることはあまり変わりませんが、Create Stack: Compute + Networkingの方が実際の自己学習には便利なので、本記事ではそちらで進めます。
Lab 2: Environment Setup
先にダウンロードしたOracle Resource Managerのstack zip fileを使って、ワークショップ用の環境を作成します。作業イメージが動画になっているので参照しておくと作業のイメージがしやすいです。
Lab2-Task 1A: Create Stack: Compute + Networking
本記事ではCompute + Networkingの方で進めます。ドキュメントの通り作業を進めれば、大きく迷うところはありません。ただドキュメントでは英語で、利用しているOCIコンソール画面を日本語にされているケースもあるかと思います。適宜読みかえれば作業を進められますが、ここでは日本語での画面イメージでも記載します。
この画面の用に[リソースマネージャ][スタック]を選択します。
[スタックの作成]をクリックします。
この画面のように選択して、先にダウンロードしているzipファイルを選択します。
「emcc-mkplc-find-fix-validate.zip」がアップロードされています。
zipファイルがアップロードされると、EMCCのLiveLabsのスタックであることが表示されます。画面下部の名前のところは自分でわかりやすい名前にするとよいです(自動でつけられる名前でも構いません)。この名前が、本ワークショップ環境のコンピュートインスタンスの名前になります。
コンパートメントが利用するものになっているか確認ください。確認できたら[次]をクリックします。
作成されるワークショップ環境のコンピュートインスタンスに関する設定をしていきます。画面のように設定します。
availablity domainは利用するものを選択ください。[Need Remote Access via SSH?]を選択します。コンピュートインスタンスにsshで接続するための設定です。
前提でお伝えしたSSHキーペアのファイルの、公開キー(.pub)ファイルをアップします。ここで[SSHキー・ファイルの選択]が選択されているのにファイルを選択する画面になっていないときは、いったん[SSHキーの貼付け]を選択してください。
それから再度[SSHキー・ファイルの選択]を選択してください。これでSSH公開キーのファイルを選択する画面になります。事前に用意したSSHキーペアファイルの、公開キー(.pub)ファイルをアップします。
公開キー(ここの例では id_rsa.pub) がアップされました。
作成されるコンピュートインスタンスの設定をしていきます。画面のように設定していきます。ocpuとメモリが少なすぎると、ワークショップでの動作に影響が出るので画面設定している例より大きな設定にした方がよいです。
インスタンスシェイプは「VM.Standard.E4.Flex」で「2 ocpu以上」が望ましいです。利用するVCNを選択し、パブリックサブネットも選択します。
画面のように[適用の実行]をチェックして[作成]をクリックします。これでワークショップ用のコンピュートインスタンスを作成するためのジョブが開始されます。
画面の下部にジョブの実行状況が表示されています。
このように出力されて、ジョブが終了します。
私が実行した設定・環境では20分程度で、このジョブが完了しました。何らかの理由でジョブが失敗した場合はログの中身を確認ください。利用しているテナント・リージョンに必要なリソースが割り当てられてなかったりする場合も考えられます。
Lab2-Task 2: Terraform Apply
ドキュメントのこの章では、ワークショップ用のコンピュートインスタンス作成のジョブの結果を確認します。画面のように「アプリケーション情報」を選択します。
この画面で、作成されたコンピュートインスタンスへsshでアクセスする際のIPアドレスを確認できます。ワークショップのためにブラウザだけでアクセスできるリモートデスクトップも利用可能となっており、そのためのURLも確認できます。
SSH、SFTPでアクセス
ここまでの作業でワークショップ用のコンピュートインスタンスが作成されました。sshでアクセスしてコンピュートインスタンスへteratermで接続できることを確認します。またsftpでファイルの送受信をFileZillaで実行できることを確認します。もちろんsshやsftpを利用するツールは、普段利用されているものでも構いません。
teratermを利用してsshでアクセスします。OCIでの通常のコンピュートインスタンスにアクセスするときと違いはありません。先に確認したパブリックアクセス用のIPアドレスを指定し、指定したSSHキーペアファイルの秘密鍵ファイルを指定します。(この画面の例では、秘密鍵ファイルにパスワードを指定しているので、そのパスワードも入力しています。)
opcユーザーでアクセスできたら、oracleユーザーにスイッチします。画面のように入力ください。
oracleユーザーにスイッチすると、このような画面が表示されます。この環境用の情報がいくつか記載されています。ワークショップを実行する際には、このoracleユーザーで実行するものが多くあります。(ドキュメントに、コマンド例が記載されているときは、opcユーザーで実行しているのか、oracleユーザーで実行しているのか、コマンドプロンプトの表記から確認するとよいです。)
続けてsftpでファイルの送受信ができる事を確認します。画面はFileZillaの設定例です。
Lab2-Task 3: Access the Graphical Remote Desktop
本記事ではあまり使わないのですが、ブラウザだけで作成された環境にアクセスするためのリモートデスクトップも、一定時間は利用できるようになっています。
( リモートデスクトップの利用に関しては、ワークショップ環境の作成後の一定時間を経過すると利用できなくなります。ワークショップの実行に関しては、リモートデスクトップを利用しなくても、sshとブラウザでのEM操作で進めることが可能なので、本記事ではそちらを前提に進めています。その場合、ワークショップ環境利用の時間制限はありません。)
「Lab2-Task 2: Terraform Apply」で確認したリモートデスクトップにアクセスするためのURLをブラウザに入力すると次のような画面になります。リモートデスクトップ内の画面右側のブラウザが、このように何も表示されていない場合、しばらく待ってください。Enterprise Managerの起動がまだ完了していない可能性があります。
Enterprise Managerの起動が完了すると、下記のような画面になります。画面右側のEnteprise Managerへログインするためには、UserName=sysman, Password=welcome1と入力します。
ここでLab 3: Initialize Environment - Appendix 2: External Web Access
ここで、ドキュメントのLabの少し先を参照して、リモートデスクトップではなくPC上のブラウザからEMへアクセスできることを確認します。ドキュメントの「Lab 3: Initialize Environment - Appendix 2: External Web Access」を確認ください。下記URLでEMにアクセスできるとガイドされています。IPアドレスは「Lab2-Task 2: Terraform Apply」で確認したものを指定します。
URL: https://<Your Instance public_ip>:7803/em
最初にEMにアクセスした場合は、下記のようなワーニングが表示されます。ワーニングは無視して構いません。
EMのログイン画面が表示されたら、UserName=sysman, Password=welcome1と入力します。
OCIコンソールから作成されたコンピュートインスタンスを確認する
作成されたコンピュートインスタンスに関する情報は、当然OCIコンソールから確認できます。作成されるインスタンスは一つです。コンピュートインスタンスの起動、停止、終了も、通常と同じくOCIコンソールから実施します。OCIコンソールのメニューから[コンピュート]-[インスタンス]を選択します。
作成されたコンピュートインスタンスを停止して再起動しても、ワークショップに必要なOracle DatabaseとEMは自動起動します。(起動が完了するまで相応の時間が必要です。環境によりますが10-15分くらいでしょうか。)
Lab 3: Initialize Environment
作成されたワークショップの環境を少し確認、設定していきます。
Lab3-Task 1: Validate That Required Processes are Up and Running.
ドキュメントのこの章に関しては、作成したコンピュートインスタンス上でワークショップのためにOracle Database、Enterprise Managerの起動が環境しているか、ということを確認していきます。確認するだけなので、作業しなくても(期待したように起動していれば)問題ありません。
なおドキュメントには、下記のDBインスタンスが作成されていることが記載されています。
このうちdb19cというDBインスタンスは自動起動しません。次のようにほかのインスタンスは起動していますが、db19cのインスタンスは起動していません。
必要な場合は、EMあるいはコマンドラインから起動できます。
この章で、下記の記載があり自動起動でDBインスタンス、リスナー、EMが起動したことを確認する方法を紹介しています。この前段階で、EMの画面へアクセスしていれば、おそらく問題ないので作業は省略して構いません。
ここで紹介されているような、コンピュートインスタンスのlinuxのシェルでのオペレーションは、どのユーザーで実行しているか注意しながら実行するとよいです(opcユーザーか、oracleユーザか)。下記の画面の例では、opcユーザーで実行しています。
続けて記載されている下記の箇所は、ある程度時間が経過してもDBインスタンス、リスナー、EMの起動が完了しない場合の作業です。起動が完了している場合は実施しません。
Lab3-Task 2: Initialize Enterprise Manager
ここでは作成されているコンピュートインスタンスの認証の情報を、EMで作成済みの認証の設定に追加します。ワークショップで実行する作業の準備で、ワークショップ前に一度実施しておけばいい作業です。実際には、コンピュートインスタンスで生成させたSSHキーをEMに登録します。
ドキュメントでは、リモートデスクトップを利用する前提で手順が記載されています。リモートデスクトップが利用できる状況であればドキュメント通りに実行してください。リモートデスクトップは利用しないで、ssh接続したteratermとPC上のブラウザからEMにアクセスしても同じことは実行できます。追加の作業は、SSHキーのファイルをコンピュートインスタンスからPCにダウンロードするだけです。
Lab3-Task 2: Generate SSH Keys
この手順はリモートデスクトップでも、ssh接続してteratermで実行しても同じです。ドキュメントの通り実行ください。
oracleでssh-keygen -b 2048 -t rsa
を実行します。
ドキュメントにある通り実行します。これで/tmp/rsa_priv
というファイルが作成されます。これをEMに認証用に登録します。
ここではリモートデスクトップではなく、PC上のブラウザからEMにアクセスする想定とします。/tmp/rsa_priv
をsftp(FileZillaなどを利用する)でPCにダウンロードしておきます。
Lab3-Task 2: Update the Named Credentials with the new SSH Key
本環境のEM上に作成済みの認証情報を、生成・ダウンロードしたSSHキーで更新します。
ブラウザからEMにアクセスします。URLやユーザー名、パスワードは「ここでLab 3: Initialize Environment - Appendix 2: External Web Access」で確認済みです。
EMの画面から、下記画面のように選択して「名前付き資格証明」をクリックします。
下記画面のように「ROOT」の名前付き資格証明を選択して、「編集」をクリックします。
下記画面のように、画面下部「ユーザー名」を「oracle」、「SSH公開鍵」を空欄、「別名実行」を「root」とします。それから「SSH秘密鍵」の右の「秘密キーのアップロード」でPC上にダウンロードしたrsa_priv
を読み込ませます。この秘密キーのアップロードは少しわかりにくいのですが、ファイルを読み込ませた後、下記画面のように表示は戻ります。
「テストと保存」をクリックします。
「資格証明操作に成功しました」と表示されればOKです。
続けてEMで定義済みのジョブを実行します。下記画面のように、「Enterprise-ジョブ-ライブラリ」を選択します。
ジョブのライブラリから「SETUP ORACLE CREDENTIALS」を選択して「発行」をクリックします。
ジョブが作成された、というメッセージの下のリンクをクリックして、ジョブが正常に完了したか確認します。
下記画面のようにステータスが「成功」となっていればOKです。
ここまでの作業で、本ワークショップを実施するための準備は完了です。お疲れ様でした。
Lab 4: Database Performance Management: Find-Fix-Validate
続けてLab 4: Database Performance Management: Find-Fix-Validateを実行することで、EMを利用したOracle Databaseの性能チューニングの自己学習を実施できます。
このワークショップには下記のメニューが用意されています。特にStep No.1~3が、EM+Diag,Tuningの機能を活用して性能チューニングを実施するための、汎用的な方法がガイドされています。問題の切り分けなどに大変有効です。
この自己学習のためのオペレーションは、ドキュメントを参照しながら進めることで、あまり迷う内容ではないと思われるので、本記事では詳細には説明しません。下記のTask 1~Task 6で構成されています。
Task 1は、ワークショップのためにデータベースに対して簡単な負荷をかけるSQLスクリプトを実行させる手順です。1Aあるいは1Bのどちらかを実施すればよいです。
Task 2,3,4が上記のStep No.1~3に該当します。
Step No.4,5(Task5,6)はRATの機能確認になります。実はRATに関しては、同じ環境を利用する次のワークショップがより有効です。 本記事で作成したコンピュートインスタンスの環境は、下記のRAT用のワークショップと同じものなので、そのまま活用できます。
Real Application Testing : SQL Performance Analyzer-Database Replay
このRATのワークショップのドキュメントはこちらです。
Oracle Enterprise Manager - Real Application Testing › Introduction
このRATのワークショップの「Lab 1: Prepare Setup、Lab 2: Environment Setup、Lab 3: Initialize Environment」は本記事で紹介したものと同じです。
に同じコンピュートインスタンスの環境でRATのワークショップを実行できます。Lab 4: Get Started with Real Application Testingを参照ください。Introductionにある動画で実際のワークショップの流れを確認できます。
ワークショップは下記画面のような内容になっています。
3.本ワークショップの環境を活用するにあたっての追加情報
このワークショップ用の環境を活用するにあたって、各DBインスタンスの起動・停止手順とEMの停止手順を紹介します。コンピュートインスタンスを停止するとき、その前にDBインスタンスを停止してEMを停止したい、と考えたときなどの参考情報です。DBインスタンスの設定を変えて再起動するときなどにも有益です。
各DBインスタンスの起動・停止方法
各DBインスタンスを起動・停止するには、EMから実行するかsshで接続した端末からコマンドライン(SQL*PLUS)で実行します。まずはEMから実行する方法です。下記の画面のようにメニューから「データベース」を選択します。
EMの監視対象となっているデータベースが表示されます。ここでは停止されている[db19c]を起動することにします。該当のDBを選択して右クリックしてから、下記の画面のように[Oracleデータベース]-[制御]-[起動/停止]と選択します。
下記画面が表示されます。[ホスト資格証明]で[名前付き][ROOT]を選択します。[データベース資格証明]で[名前付き][OEM_SYS]を選択します。
下記画面のようにデータベース起動の確認を求められるので、[はい]をクリックします。
下記画面のようにデータベースが起動しはじめます。
次にコマンドライン(SQLPLUS)から起動と停止を実施する方法です。通常のOracle Databaseと同様に、oracleユーザーにスイッチしてから、環境変数を設定し、SQLPLUSから/ as sysdba
で接続し、startup
あるいはshutdown immediate
を発行します。
環境変数を設定するためのシェルスクリプトが、oracleユーザーのホームディレクトリに用意されています。
19c.env cdb186.env hr.env sales.env
が該当します。(なぜか financeに該当するスクリプトは用意されていません。)DBインスタンスの19cを停止するには、下記のように実行します。
なおemrepというインスタンスはEMのリポジトリ用のDBなので、単独ではなくEM全体で停止・起動をするケースが多くなると考えられます。(EM全体を起動・停止するスクリプトも用意されています。)
EM停止方法
EMを停止するには、sshで接続したのちにoracleユーザーにスイッチして、下記のようにstop_all.sh
を実行します。
JPOUG Advent Calendar 2022 明日の記事は ora_gonsuke777さんの記事「シェルスクリプトで sqlplus から SQL を実行する時のお作法をあれこれ整理してみる。(Oracle Database)」です。