しばちょう先生の試して納得!DBAへの道 indexページ▶▶
みなさん、こんにちは。
先月は原稿提出の締め切りが迫ってきたので執筆に取り掛かろうと思った矢先、溶連菌(?)なるものに感染して40度の高熱を出し、敢え無く連載をお休みさせて頂くことになってしまいました。申し訳なかったです。「執筆は計画的に!」を心掛けてはいるものの今月も明日が締め切り日の状況で執筆しているわけで、まったく過去の反省を生かせない、”しばちょう”こと柴田長(しばた つかさ)です。
さて、今回はいつもの連載とは趣向を変えて、便利なツールをご紹介したいと思います。

初期化パラメータを始めとしたデータベースの設定には、そのデータベースのDBAの色が出る気がしています。特に、ベテラン、シニアなDBAの方々は、その豊富な経験から導かれた設定をお持ちだと思いますが、逆に、駆け出しDBAの方にとってみれば何が最適なのか分からないことも多々あるかと思います。また、如何にベテランDBAと言え、Oracle Databaseのバージョンをアップグレードすることによって、過去に施していた設定がそのまま最適なのかは未知数であるわけですよね。
そのような際には是非、”ORAchk”を使ってみてください!! “ORAchk”って何?と呟いたアナタ、今回の連載に挑戦して頂き、冒頭に述べた課題を”ORAchk”が瞬時に解決してくれる体験をしてみてくださいね。
以下の演習をOracle Database 11g Release 2のデータベースで試してみてください。もちろん、Oracle Database 12cの環境でも動作確認することが出来るはずです。
【今回ご紹介するネタ一覧(逆引き)】
- ORAchkのダウンロード(演習1)
- ORAchkをデータベース・サーバー上へ展開(演習2)
- ORAchkの実行(演習3)
- ORAchkの実行結果レポートの参照(演習4, 5)
- ORAchkの新旧の結果レポート比較(演習7)
1. My Oracle Supportの「Doc ID 1545832.2 ORAchk – Oracleスタックのヘルスチェック」(もしくは、「Doc ID 1268927.2 ORAchk – Health Checks for the Oracle Stack」)へアクセスし、最新のORAchkをダウンロードして下さい。
※ 次の画面キャプチャは2015年3月22日時点で取得したものであり、今後変更される可能性がありますのでご注意ください。

はい、上記の画像の左下にある「ORAchk 12.1.0.2.3のダウンロード」ボタンを押下することで、問題無くダウンロードすることが出来たかと思います。My Oracle Supportへ初めてログインする場合はアカウント登録が必要ですが、その際にサポートIDが必要となりますのでご注意ください。
さて、このORAchk(私は「オラ・チェック」と読んでいます)は、元々はRACcheck(ラック・チェック)というOracle Real Application Clusters (RAC)環境でヘルス・チェックをDBAの方が実施出来るように開発されたツールです。評価対象がRAC環境以外にも拡張(最大可用性アーキテクチャ(Maximum Availability Architecture:MAA)や非RACのデータベース、さらには、Oracle GoldenGate)してきたことから、名称をORAchkに変更しています。
ORAchkは何をしてくれるのか?を簡単に説明したかったので、上記の画像の右下の「ORAchkの特徴」の文言を次に抜粋してみました。
- お客様が利用している製品スタックの様々なレイヤーにまたがった重大な問題についてのプロアクティブなチェック
- どの既知の問題がお客様にとってリスクとなり得るかの調査、解析方法の簡潔化および能率化
- お客様の環境で実行できる負荷の軽いツールでOracleへのデータ送付不要
- 特定の問題をドリルダウンし、その解決方法を理解するための機能を備えたお客様のシステムのヘルスおよびリスクのチェックが可能な高いレベルのレポート
- 問題を検出した際に email 送付による通知をする構成が可能
- Collection Manager:Webベースのアプリケーションの集合体で、お客様のシステム全体の収集データを確認するための単一のダッシュボードを提供
とまあ、このような感じで良さそうなイメージはありますが、私は具体例が無いと納得できないタイプの人間ですので、次の演習からは実際にORAchkを実行して結果レポートを見ることにしましょう。
2. ヘルス・チェック対象のデータベース・サーバー上へ配置し、次の実行例(Linux OS環境)を参考に展開して下さい。
尚、ORAchkはRelease 12.1.0.2.1以降、Windows OS環境での実行もサポートされています。
[oracle@vm11204 work]$ mkdir orachk121023 ; cd ./orachk121023
### (作成したディレクトリに、orachk.zipを配置) ###
[oracle@vm11204 orachk121023]$ pwd
/home/oracle/work/orachk121023
[oracle@vm11204 orachk121023]$ ll
-rwxr-xr-x. 1 oracle oinstall 8278702 Mar 22 21:46 orachk.zip
[oracle@vm11204 orachk121023]$ unzip orachk.zip
[oracle@vm11204 orachk121023]$ ll
-rw-r--r--. 1 oracle oinstall 4114714 Mar 6 05:54 CollectionManager_App.sql
-rw-r--r--. 1 oracle oinstall 425 Mar 6 05:54 UserGuide.txt
-rw-r--r--. 1 oracle oinstall 37546297 Mar 6 05:55 collections.dat
-rwxr-xr-x. 1 oracle oinstall 2051654 Mar 6 05:54 orachk
-rwxr-xr-x. 1 oracle oinstall 8278702 Mar 22 21:46 orachk.zip
-rwxr-xr-x. 1 oracle oinstall 2051654 Mar 6 05:54 raccheck
-rw-r--r--. 1 oracle oinstall 3798 Mar 6 05:54 readme.txt
-rw-r--r--. 1 oracle oinstall 4754419 Mar 6 05:55 rules.dat
こちらも問題無いと思いますが、注意すべき点を無理やりですが3つ挙げさせて下さい。
一つ目は、orachk.zipを展開するOSユーザーは、必ずOracle DatabaseをインストールしたOSユーザーにして下さい。
二つ目は、orachk.zipをunzipで展開した場合には、専用のディレクトリ(上記の例では、orachk121023)を作成して、そのディレクトリ内にorachk.zipを配置しておくことをお薦めします。あくまでお薦めであり、守らないと動かないとかでは無いのですが・・・
三つ目は、展開後に生成されている実行ファイル「orachk」のパーミッションが「755」ではない事がありますので、もしもそのような場合には、「755」にパーミッションを変更して下さいね。
3. ORAchkを使用して、ベスト・プラクティスな設定、及び推奨パッチを含めた全てのチェックを実行して下さい。
[oracle@vm11204 orachk121023]$ pwd
/home/oracle/work/orachk121023
[oracle@vm11204 orachk121023]$ ./orachk -h
Usage : ./orachk [-abvhpfmsuSo:c:t:]
-h Prints this page.
-a All (Perform best practice check and recommended patch check)
-b Best Practice check only. No recommended patch check
-v Show version
-p Patch check only
-m exclude checks for Maximum Availability Architecture (MAA) scorecards
(see user guide for more details)
-u Run orachk to check pre-upgrade or post-upgrade best practices
for 11.2.0.3 and above
-o pre or -o post is mandatory with -u option like ./orachk -u -o pre
-f Run Offline.Checks will be performed on data already collected from the system
-o Argument to an option. if -o is followed by v,V,Verbose,VERBOSE or Verbose,
it will print checks which passs on the screen
(以降の出力は省略)
[oracle@vm11204 orachk121023]$ ./orachk -a -o verbose
CRS stack is running and CRS_HOME is not set. Do you want to set CRS_HOME to
/u01/app/grid/product/11.2.0/grid_1?[y/n][y] y ⟨enter⟩
List of running databases
1. orcl
2. None of above
Select databases from list for checking best practices. For multiple databases, select 1 for
All or comma separated number like 1,2 etc [1-2][1]. 1 ⟨enter⟩
. .
Checking Status of Oracle Software Stack - Clusterware, ASM, RDBMS
. . . . . . . . . . . . . . . . . . . . . .
------------------------------------------------------------------------------------------
Oracle Stack Status
------------------------------------------------------------------------------------------
Host Name CRS Installed ASM HOME RDBMS Installed CRS UP ASM UP RDBMS UP DB Instance Name
------------------------------------------------------------------------------------------
vm11204 No Yes Yes No Yes Yes orcl
------------------------------------------------------------------------------------------
... (省略)...
=============================================================
Node name - vm11204
=============================================================
Collecting - ASM Disk Groups
Collecting - ASM Disk I/O stats
Collecting - ASM Diskgroup Attributes
... (省略)...
「実行して下さい」って、少々乱暴でしたね。すいません。とは言え、どうやったら実行出来るのかを自分自身で探って頂きたいという私の意図があって、このような演習問題とさせて頂きました。
新しいツール、コマンドを使用する際には、ほとんどのケースで使用方法が記載された「README」であったり、実行引数を表示してくれるヘルプ・オプションが存在しますので、それを確認して頂きたいのです。インターネット上に情報が溢れている今の時代では直ぐに検索することが出来るでしょう。しかし、検索しても見つからなかった場合はどうしますか?諦めますか?もちろん、違いますよね?
と言う事で、演習2でorachk.zipを展開したディレクトリには「readme.txt」があることが確認出来ますし、私の実行例ではヘルプ・オプション「-h」を付けて実行することで、orachkのオプションを表示させています。その出力結果の中で、「-a」オプションが「All (Perform best practice check and recommended patch check)」と説明されているので、演習問題の「ベスト・プラクティスな設定、及び推奨パッチを含めた全てのチェック」に合致しますね。
と言う事で(相変わらず、「と言う事で」が多いなー)、私の実行例では「./orachk -a -o verbose」を実行しています。「-o verbose」は、標準出力としてPASSしたチェック項目も表示してくれるオプションです。これを指定しない場合は、チェックに引っ掛かった項目のみが標準出力されます。とは言え、このオプションを指定するか否かによって、結果レポートには影響ありませんので、実行する人の好みの話になるわけです。
ちなみに、今回の私の実行環境はOracle Restart環境です。非RAC環境ですがOracle Automatic Storage Management(ASM)を使用する為、Grid Infrastructureもインストールされています。上記のorachkの実行出力を見てみると、それが何となく分かりますよね?また、RAC環境でORAchkを実行した場合、評価するチェック項目に応じてrootユーザーのパスワードが求められる場合があります。そのようなケースで便利なのがSUDOでのアクセスを設定することなのですが、具体的な設定方法については「Doc ID 1545832.2 ORAchk – Oracleスタックのヘルスチェック」の「ORAchkユーザー・ガイド」タブの画面からダウンロード出来る「ORAchk User Guide」を参照してみてください。
4. 結果レポート(orachk_⟨ServerName⟩_⟨DatabaseName⟩_⟨Date⟩.html)を参照し、注意が必要なチェック項目を確認して下さい。

orachkと同じディレクトリ内に、サブ・ディレクトリ「orachk_⟨ServerName⟩_⟨DatabaseName⟩_⟨Date⟩」が作成されており、その中に実行結果が全て含まれています。また、このサブ・ディレクトリをZIPで圧縮したファイル「orachk_⟨ServerName⟩_⟨DatabaseName⟩_⟨Date⟩.zip」も作成されています。
そして、まず見るべきは、Oracle orachk Assessment Report (orachk_⟨ServerName⟩_⟨DatabaseName⟩_⟨Date⟩.html)です。私の環境での実行結果は上記の通りであり、System Health Scoreが100点満点中の91点と中々優秀な結果となっています。100点満点という表現を使うと、何とか100点にしなければならないと勘違いし易いのですが、全てのWARNING/FAILの項目に対して設定変更が必須ということではありません。 同時にレポートに出力されている各項目のBenefitやImpact、さらにはRiskを考慮し、必要に応じて設定変更をご検討下さい。
なので、次に見るのは、具体的に指摘されたチェック項目が何なのか?と言う事になるので、Oracle oracheck Assessment Reportの「Findings Needing Attention」セクションを確認してみます。私の環境に対するDatabase Server関連のチェックの実行結果としては、FAILが1個、WARNINGが7個、INFOが6個です。INFOに関しては情報提供的なものなので基本的に設定変更は不要ですが、意外と重要な情報があったりしますので、必ず「Details」列の「View」リンクを押下して内容を確認しておきましょう。
また、今回「FAIL」で指摘されたのは昨年大きな話題となった「Bashの脆弱性」でした。検証環境なので対応を怠っていましたが、ORAchkが見事に指摘してくれたわけです。ORAchkのチェック項目は四半期に一度のペースで追加更新されていくので、常に最新のORAchkをダウンロードして使用して頂くことをお薦めしていることもあり、その意 味を今回の結果が物語っていますね。
上記の画像では、Database Server関連のチェックの実行結果のみしか掲載していませんが、今回の実行ではこれ以外にも「Maximum Availability Architecture(MAA) Score Card」セクション、「GRID and RDBMS patch recommendation Summary/Detailed Report」セクションが出力していました。そして、名前の通り、MAA Score Cardは高可用性に関する設定(Data GuardやBlock Corruption)の評価が行われており、さらには、DatabaseとGrid Infrastructureの推奨パッチを提供するようにも指摘されていました(汗)
5. もう一つの結果レポート(reports/orachk_browse_⟨ServerName⟩_⟨DatabaseName⟩_⟨Date⟩.html)を参照し、Oracle ASMとOracle Databaseの初期化パラメータ一覧、及び、Database ServerのOS周辺情報(カーネル・パラメータ、CPU、メモリ情報等)を確認して下さい。

実行結果が格納されているディレクトリ「orachk_⟨ServerName⟩_⟨DatabaseName⟩_⟨Date⟩」内のサブ・ディレクトリ「report」内に作成されている「reports/orachk_browse_⟨ServerName⟩_⟨DatabaseName⟩_⟨Date⟩.html」が私はとても好きです。
なぜならば、ASMインスタンスとDatabaseインスタンスの初期化パラメータ一覧を履歴として保持しておくことが可能になりますし、Database Serverのカーネル・パラメータの設定や、CPU情報(/proc/cpuinfo)やメモリ情報(/proc/meminfo)、さらにはRPM一覧やGrid InfrastructureやOracle Databaseのパッチ情報までもが一元管理出来るのですからね。なので、メンテナンス等で何かしらの構成変更を施したタイミングでは、可能な限り、ORAchkを実行して結果レポートを保持しておくことをお薦めしたいです!!
6. 各種設定を変更後、再度ORAchkを使用して、ベスト・プラクティスな設定、及び推奨パッチを含めた全てのチェックを実行して下さい。

演習4で確認した通り、私のテスト環境において幾つか指摘がされてしまいましたので、ちょっと設定変更を施してみました。そして、再度、ORAchkを実行した結果レポートが上記です。見事に、System Health Scoreが93点へアップ(91点から2点アップ)していますね。パチパチパチー!点数がアップしたことを見ると、このデータベースの安定性が増したように安心出来るのは不思議ですね。事実、増しているのだとは思いますがね。
具体的に、どのチェック項目の指摘が無くなったのかについては、演習3とこの演習6の2枚のHTML結果レポートOracle orachk Assessment Reportを比較すれば分かると言えば分かるのですが、なんだか面倒だなーと思った方、その感覚は間違えていないのでご安心ください。是非とも次の演習にチャレンジしてみてくださいね!
7. 演習3と演習6で取得したレポートを比較して、設定変更が反映されているか否かを確認して下さい。
[oracle@vm11204 orachk121023]$ ./orachk -h
-diff ⟨Old Report⟩ ⟨New Report⟩ [-outfile ⟨Output HTML>]
Diff two orachk reports. Pass directory name or zip file or html report file
as ⟨Old Report⟩ & ⟨New Report⟩
[oracle@vm11204 orachk121023]$ ./orachk -diff
./orachk_vm11204_orcl_032215_220651/orachk_vm11204_orcl_032215_220651.html
./orachk_vm11204_orcl_032315_180331/orachk_vm11204_orcl_032315_180331.html
-outfile orachk_diff_output2.html
Summary
Total : 128
Missing : 0
New : 0
Changed : 6
Same : 122
Check comparison is complete. The comparison report can be viewed in:
/home/oracle/work/orachk121023/orachk_diff_output2.html
なんと!新旧2つの結果レポートのDiffを取得するオプションが存在しているではないですか!早速実行してみると、わずか数秒で次のような「orachk Health Check Baseline Comparison Report」が生成されます。

ふむふむ。128個のチェック項目のうち、新旧2つのレポートの間で6個の項目に違いが存在したと言う事がSummaryから確認することが出来ますね。そして、具体的な6個の項目については、次の「Table of Contents」セクションで確認出来ます。

なるほど。この6個の項目を私は設定変更していたのですね。と言う事が一目瞭然じゃないですか。これは非常に便利ですよね。しかし、このようなHTMLファイルで履歴を保存し続けるのは、管理面で煩わしい感は否めませんよね。と、またもやメンドクサイ病が発症する私なのですが、そこに吉報が!実は演習1の解説部で「Orachkの特徴」の一つとして既に記載させて頂いているのです!
=====
Collection Manager:Webベースのアプリケーションの集合体で、お客様のシステム全体の収集データを確認するための単一のダッシュボードを提供
=====
はい、上記の通り、それはCollection Managerです。簡単に言えば、ORAchkの実行結果を管理用データベースにアップロードし、Application Express(APEX)のWebインターフェースを通してモニタリングすることが可能となります。構成方法、利用方法については「Doc ID 1545832.2 ORAchk – Oracleスタックのヘルスチェック」の「コレクション・マネージャ」タブの画面からダウンロード出来る「ORAchk Collection Manager Application Installation & User Guide」を参照してみてください。
さて、ORAchkの体験は如何でしたでしょうか?
冒頭の繰り返しになりますが、初期化パラメータを始めとしたデータベースの設定は、駆け出しDBAの方にとってみれば何が最適なのか分からないことも多々あるかと思いますし、如何にベテランDBAと言え、Oracle Databaseのバージョンをアップグレードすることによって、過去に施していた設定がそのまま最適なのかは未知数であるわけです。そのような場合に非常に有効なツールであるORAchkの破壊力にご納得頂けたのであれば、非常に嬉しい限りです。日頃のデータベース運用の中に組み込んで使用して頂くことで、最新のベスト・プラクティスを反映することが可能となり、ほんの少しでもトラブルの発生を未然に防止することに貢献できるのではないかと考えております。ちなみに、Exadata環境に特化してヘルス・チェックを行うExachk(エクサ・チェック)もあり、私がお客様のExadata環境の状況を確認する際には、必ず実行して頂いております。
と言う事で、今回も最後まで体験して頂きましてありがとうございました。是非、感想や質問をお待ちしておりますね。次回以降もどうぞよろしくお願い致します。
