コーソル DatabaseエンジニアのBlog へようこそ

コーソル DatabaseエンジニアのBlogでは、 コーソル所属のDatabaseエンジニアである 渡部と守田がOracle Databaseを中心としたDatabaseに関わる技術情報を発信しています。

コーソルでは、Oracle Databaseをはじめとするデータベース全般に関わるサービス(コンサルティング、設計、構築など)、オラクル製品のプロダクトサポートサービスを提供しています。 また、不定期で無償の技術セミナーを開催しています。


コーソルでは、Oracle Databaseスペシャリストになりたいエンジニア、 Oracle Database技術を活かして働きたいエンジニアを絶賛募集中です。

hiring.png

コーソルについて知るためには・・・

エンジニアのスキル向上を支援する各種施策については・・・

コーソルのエンジニアの多くが従事する、「Oracle Database サポートエンジニアの仕事」の利点について知るためには・・・。

コーソルで働くことに興味を持たれた方は・・・

2018年10月22日

Oracle Database 18c (18.3) RPM版リリース

守田です。

Oracle Database 18c より新機能として、「RPMベースのデータベース・インストール」が可能となっていました。
しかし、オンプレミス版がリリースされて直後はこのRPM版のメディアがマニュアルに記載されている
OTNサイト(Oracle Technology Network)、Oracle Software Delivery Cloud portal (edelivery)、
Unbreakable Linux Network (ULN)になく、
RPMベースのデータベースのメディアが入手できませんでした。

しかし10/20にサイトを確認すると、OTNサイトにてダウンロードできるようになっていました!!
OTNサイト(Oracle Technology Network) otn.JPG
ということで、さっそくインストールをためしてみました。
依存性関連で一緒に oracle-database-preinstall-18c もインストールされるので
非常に簡単にインストールできます。
inst1.JPG inst2.JPG

ちなみに、RPMベースのインストールですと、以下のような制限事項があるようです。
- RPMを使用したOracle Databaseソフトウェアへのパッチ適用はサポートされない。
- RPMベースのOracle Databaseインストールは、Standard Edition2では使用できない。※Standard Edition2のサポートは19cで予定。
- rpm -Uvhを使用したRPMベースのデータベースのアップグレードはサポートされない。
- RPMベースのインストールでは、複数のOracle Databaseソフトウェア・バージョンを同じマシンの異なるOracleホームにインストールする。

制限事項の詳細はマニュアルをご確認ください。
Database インストレーション・ガイド for Linux
RPMベースのインストールの制限事項とガイドライン

2018年10月21日

Oracle OpenWorld(+SF小旅行)の様子をtwitterからお届け!

渡部です。 今年のOracle OpenWorldが始まりました! コーソル参加メンバーによるOpenWorld聴講とサンフランシスコ小旅行の様子は、 例年同様Twitterでお届けします!

すでにいくつかサンフランシスコの様子がいくつかtweetされています :-)

過去のtweetまとめ

2018年10月 1日

db tech showcase 2018 Tokyo #JPOUG セッション「Platinumホルダーが選ぶ! 現場で役立つOracle Database18c新機能」資料公開しました #dbts2018

渡部です。 db tech showcase 2018 Tokyoで、2018年9月21日(金) 17:30 - 18:15 のJPOUGセッション枠で 五十嵐さんに発表いただいた資料を公開しました。

20180921_jpoug_cosol_igarashi_dbtech_18c_newfeatures.png

発表資料では以下のOracle Database 18c新機能についてご紹介しています。 お役に立てば幸いです!

  • Install
    • RPM-based Database Installation
    • Read-Only Oracle Home
  • Maintenance
    • Online Merging of Partitions and Subpartitions
    • Shadow Lost Write Protection
    • Ability to Encrypt Sensitive Credential Data in the Data Dictionary
  • Performance
    • Scalable Sequences
    • Private Temporary Tables
  • Utility
    • SQL*Plus Display the sql_id for a query
    • SQL*Plus Set the number of rows displayed for a query
    • SQL*Plus Dynamically change the output display to fit the screen size
  • Multitenant
    • Ability to Create a Keystore for Each Pluggable Database
    • RMAN duplicate PDB into existing CDB
  • Data Guard
    • Copying a PDB in an Oracle Data Guard Environment
    • Automatic Correction of Non-logged Blocks at a Data Guard Standby Database

2018年9月30日

Orabbixについて少し調べてみた

渡部です。 実は以前から弊社にZabbixを用いたOracle Database監視に関するご相談が増えてきたこともあり、 私を含めた複数のコーソル メンバーがOracle Database監視を想定したZabbixの拡張の実装に取り組んでいます。

その作業の中で、以前Orabbixについて少し調べてみた時のメモを書いておきたいと思います。

orabbix_logo_02.png

ご存知の方が多いとは思いますが、ZabbixはOSSの運用監視ツールでは現在デファクトスタンダードといってよいソフトウェアです。導入コストが低いことから、弊社のお取引先でも多くのお客様がご利用ですが、残念ながらデフォルトのままではOracle Databaseの監視はできません。作りこみをするか、拡張機能を導入する必要があります。

若干古いですが、Zabbix関連の著作で有名なAndrea Dalle Vacche氏が作成したOracle Database監視のZabbix拡張であるOrabbixが存在していますので、 参考のため、以前調査しました。

Orabbixの特徴および気になる点

  • 無償 / GPLライセンス
  • 最新リリース: 1.2.2 (2011年10月12日)
  • 動作要件
    • Zabbix 1.8.x (最新: Zabbix 3.4 / 4.0近日中リリース予定)
    • Oracle Database 10gR2, 10gR1
    • Java Runtime Environment 6 (最新: Java 11)

最近はアクティブな状態では無いようで、動作要件が全般的に古いですね。

Orabbixのアーキテクチャ

orabbix_003.png

Orabbixアーキテクチャの特徴は以下の通りです。

  • Orabbix監視の実体はOrabbixサーバ上で動作するOrabbixデーモン
    • Java 6で実装
    • (※) Orabbixサーバは単独のサーバとせず、Zabbixサーバなどに同居することも可能
  • OrabbixデーモンはJDBCリモート接続を用いてOracleデータベースに接続し、監視データを収集する
    • 複数データベースを監視可能
  • 収集した監視データはZabbixトラッパーを用いてZabbix Serverに送信される
    • Orabbixデーモンがzabbix_sender相当の機能を持つイメージ
  • アイテムを定義したテンプレートTemplate_Oracleが提供されるため、監視対象ホストにこのテンプレートをリンク(適用)すると、Orabbixが定義した監視項目を使ってそのホストを監視できる

Orabbix同梱のZabbixテンプレートTemplate_Oracleで提供されるアイテムとグラフ

Orabbixには、アイテムなどを定義したZabbixテンプレートTemplate_Oracleが同梱されており、 監視対象ホストにこのテンプレートをリンク(適用)すると、Orabbixが定義したアイテムなどを使ってそのホストを監視できます。

以下にテンプレートTemplate_Oracleに含まれるアイテムとグラフの一覧を示します。 なお、このテンプレートにはアイテムとグラフ以外にもトリガーも含まれています。

テンプレートTemplate_Oracleのアイテムの一覧

orabbix_items_graphs.png

テンプレートTemplate_Oracleのグラフ一覧

orabbix_graphs.png

実際のグラフ表示例は http://www.smartmarmot.com/wiki/index.php?title=Orabbix#Whatcanit_monitor.3F から確認できます。

config.pros

Orabbixのアーキテクチャで示した通り、監視処理の主体/実体はOrabbixデーモンです。 そのOrabbixデーモンの設定はconfig.prosファイルに指定します。

基本的な構成におけるconfig.prosファイルの主要な設定は、

  1. 監視データ送信先となるZabbix Serverのアドレス情報
  2. 監視対象となるOracleデータベースへのJDBCリモート接続の接続情報
  3. Oracleデータベースの監視処理で使用する監視クエリ定義

です。

orabbix_012.png

監視クエリの構成

監視データを取得するために実行する監視クエリ(SELECT文)は、query.propsファイルに定義されており、通常はこれを使用します。アイテムに対応する形で監視クエリが定義されています。

orabbix_015.png

orabbix_013.png

ただ、何らかの理由で監視クエリ(SELECT文)をデフォルトから変更したい場合は、query.propsファイルに定義されているSELECT文を変更したり、変更を加えた監視クエリ(SELECT文)を記載した別の監視クエリ定義ファイルを使用することもできます。

また、監視対象のOracleデータベース毎に異なる監視クエリ定義ファイルを使用可能です。 これは、バージョンによって監視データを得るSELECT文が異なる場合などに有効です。

orabbix_014.png

監視クエリ構成の基本は監視クエリのSELECT文を定義することですが、これ以外もいくつかの設定が可能です。

orabbix_016.png

orabbix_017.png

orabbix_018.png

Orabbixについて

弊社では独自にOracle Database監視機能の実装を進めているため、Orabbixをそのまま使うことは考えにくいのですが、 Orabbixの適度な柔軟性は良い感じに思えます :-)

  • システム構成が柔軟かつ一般的な用途に沿っている
    • 1つのOrabbixサーバから複数データベースを監視可能
    • ZabbixサーバとOrabbixサーバを分離可能 : ZabbixサーバからOracleへのリモート接続が不可な場合に必要になる
  • アイテムおよび監視処理の拡張性が比較的高い
    • アイテムごとに監視間隔を設定可能
    • 接続先データベース毎に実行するクエリを変更可能
    • アイテムの追加が可能

動的なZabbixアイテム設定 (ユーザーマクロとローレベルディスカバリ)

渡部です。 実は以前から弊社にZabbixを用いたOracle Database監視に関するご相談が増えてきたこともあり、 私を含めた複数のコーソル メンバーがOracle Database監視を想定したZabbixの拡張の実装に取り組んでいます。

zabbix_logo_500x131.png

Zabbixにおいて監視を実装するということは、監視項目を定義すること、すなわちアイテムを設定(作成)することになるわけですが、設定するアイテムの構成は環境により異なります。

具体的に表領域の監視を行うとしても、表領域の名前や数は環境によりことなるため、 アイテム設定の定義を一概に決めることはできません。 このため、動的にアイテムを設定する仕組みが必要となるわけですが、それを実現するのがユーザーマクロとローレベルディスカバリです。

動的なアイテム設定の基本となる考え方はシンプルです。

  • 可変となる部分を変数化したアイテムのプロトタイプを、テンプレートに定義する
  • テンプレートをホストにリンクすると、変数部分が定数化され、アイテム定義が動的に決定されてホストに継承される

zabbix_pf_023.png

1つのアイテムのプロトタイプから、1つのアイテムを動的に設定する場合はユーザーマクロを使用します。 また、1つのアイテムのプロトタイプから、1つ以上の複数のアイテムを動的に設定する場合はローレベルディスカバリを使用します。

ユーザーマクロ

ユーザーマクロを用いて動的にアイテムを設定する考え方は、ユーザーマクロを使って変数の設定値を定義しておき、これをアイテム定義が動的に決定するときに使用するというものです。

zabbix_pf_025.png

ユーザーマクロは、グローバルレベル、テンプレートレベル、およびホストレベルで定義できます。

ローレベルディスカバリ

ローレベルディスカバリを用いて動的にアイテムを設定する考え方は、 1つのアイテムのプロトタイプから、1つ以上の複数のアイテムを動的に設定するため、 ディスカバリルールと呼ばれる一種の関数から複数パターンの変数設定を得るというものです。

zabbix_pf_027.png

ローレベルディスカバリの動作のカギになるのは、ディスカバリルールです。 ディスカバリルールは、監視対象のホストの構成に応じて、JSON形式で複数パターンの変数設定(変数=値)を返す一種の関数です。

zabbix_pf_028.png

zabbix_pf_029.png

Zabbix監視処理の拡張

渡部です。 実は以前から弊社にZabbixを用いたOracle Database監視に関するご相談が増えてきたこともあり、 私を含めた複数のコーソル メンバーがOracle Database監視を想定したZabbixの拡張の実装に取り組んでいます。

zabbix_logo_500x131.png

残念ながら、ZabbixはデフォルトのままではOracle Databaseを監視できません。Oracle Database向けの監視処理の拡張を実装する必要があります。

Zabbix監視処理を拡張する主な方法には以下の3つがあります。

  • UserParameter : 監視処理を実行するリモートコマンドをAgentで実行する
  • Zabbixトラッパー : 別途、監視対象ホストで監視処理を実行しておき、その結果となる監視データをZabbix Serverに送信する。
  • Loadable module : 共有ライブラリ(*.so)として拡張処理を実装する

上記の3つのうち、Loadable moduleを用いる方法は、UserParameterやZabbixトラッパーを用いる方法では性能上問題となる状況で使用する位置づけです。このため、まずはUserParameterやZabbixトラッパーを用いる方法に限定して学習しました。

UserParameterによる監視機能の拡張

UserParameterによる監視機能の拡張の考え方はシンプルで(「ナイーブ」が正しいかもしれない・・・)、 監視処理を実行するリモートコマンドをAgentで実行するというものです。

zabbix_pf_037.png

若干蛇足/余談気味ですが、なぜこの機能に「UserParameter」という名前を付けたんだろう・・・

Zabbixトラッパー

Zabbixトラッパによる監視機能の拡張の考え方は、Zabbix Serverに監視データの受け口を用意しておくので、そちらで勝手に監視しといてというものです(若干乱暴なまとめですが・・・)

zabbix_pf_038.png

Zabbixトラッパを構成する流れは以下の通りです。

  1. Zabbix Server側で受け取る監視データに対応するトラッパーアイテムを作成しておく必要がある
    • アイテムタイプ=トラッパー
    • キー文字列=監視データ(JSON形式)のkey
  2. 監視対象ホストで監視処理および監視データ送信処理を定期的に実行する
    • 送信する監視データのフォーマットはJSON

なお、Zabbixには監視データ送信処理を実装したコマンドとしてzabbixsenderが用意されており、 簡単な監視処理であれば、監視処理とzabbixsenderの呼出しを行うスクリプトを作成し、これをcronで定期的に実行することで実装が可能です。

zabbix_pf_039.png

Zabbixを初めて学んだときにハマったこと(小ネタ・随時更新予定)

渡部です。 Oracle Database監視を想定したZabbixの拡張の実装に先立ち、Zabbixを初めて学んだときにハマったことを まとめておきます。小ネタ過ぎて、これからZabbixを学ぶ人の役に立つかはわかりませんが・・・

zabbix_logo_500x131.png

すべてのホストはいずれかのホストグループに所属させる必要がある

ホストグループは、いくつかのホストをグループ化して管理する仕組みです。 最初は「すべてのホストはいずれかのホストグループに所属させる必要がある」ことを知らず、 この理解のもと、最初は、ホストは特にホストグループに所属させず、 ホストの数が増えてきたらホストグループを使って分類しよう・・・ と考えていたのですが・・・ ホスト作成時(ホスト新規登録時)にホストグループの指定が「必須」扱いになっていて戸惑いました。

zabbix_mistaking_001.png

まぁ、とりあえず定義済みのホストグループに所属させるか、別途「その他」扱いのホストグループを作成しておき、 このグループに所属させればよいのですが・・・

「エージェントのインターフェース」の「接続方法=DNS」はDNSを使用することを意味しない

ホスト作成時(ホスト新規登録時)に指定する「エージェントのインターフェース」は、Zabbix Serverから管理対象ホストのZabbix Agentへの通信に用いる宛先情報です。 「接続方法」に「IPアドレス」または「DNS」を指定できるようになっています。

zabbix_mistaking_002.png

管理対象ホストの指定にホスト名を使用する場合は、「DNS名」にホスト名を入力し、「接続方法」に「DNS」を指定する必要があります。 特に名前解決にDNSを使用しない場合(/etc/hostsを使用して名前解決する場合など)でも「DNS」を指定することに注意です。(なんかUI設計含めてイマイチな感じだよなぁ)

Agentの死活監視用アイテムを設定しないと、「エージェントの状態」が緑色表示にならない

ホスト作成作業(ホスト新規登録作業)の完了後、設定が正しいことを確認するため、 「エージェントの状態」→「ZBX」が緑色表示になることを待ちました。 しかし、いつまで待っても「エージェントの状態」→「ZBX」が緑色表示にならない・・・

zabbix_mistaking_003.png

理由は、ホストに、Agentの死活監視用アイテムを設定していないからでした。 「エージェントの状態」→「ZBX」を用いるためには、ホストに、Agentの死活監視用アイテムを設定する必要があります。

ホストにAgentの死活監視用アイテムを設定していれば、しばらくすると、 「エージェントの状態」→「ZBX」が緑色表示になります。

zabbix_mistaking_004.png

なお、このアイテムはTemplate App Zabbix Agentなどのテンプレートに含まれるので、ホスト作成時にこれらのテンプレートにリンクしておくと、自動的にAgentの死活監視用アイテムが設定されます。 「Zabbixのベーシックな動作を理解したいから、まずは何もテンプレートをリンクせずにホストを登録して・・・」 などと考えるとハマりやすい気がします。

ホストとテンプレートで同じキー文字列のアイテムは定義できない

この制限はマニュアルなどにも明確に記載されているため、 特に理解しにくいものではないのですが、検証作業なので似たようなアイテムを多数作成していると エラーを発生させやすいですね。

zabbix_mistaking_005.png

Zabbixを初めて学んだときに理解に苦しんだ概念

渡部です。 実は以前から弊社にZabbixを用いたOracle Database監視に関するご相談が増えてきたこともあり、 私を含めた複数のコーソル メンバーがOracle Database監視を想定したZabbixの拡張の実装に取り組んでいます。

zabbix_logo_500x131.png

もちろん、拡張の実装に先立ち、まずはZabbixについて学習を進めたのですが、学習当初いくつか理解に苦しんだ点があります。これからZabbixを学ぶ人の少しでもお役に立てたらと思い、これらについて書いておきたいと思います。

アイテム周りの論理構造(オブジェクト構造)

Zabbixにおける監視の基本となる主体はアイテムなのですが、 アイテムだけではなく、アイテムの周辺にあるいくつかの概念を理解する必要があります。 具体的には、キー / アイテム / トリガー / グラフ / アクションの相関関係を理解する必要があります。

(私見ですが)Zabbixのマニュアルや研修資料には、これらの相関関係を見通しよく記載した図がなく、理解に苦しみました。以下が、渡部がまとめた図です(万が一誤りがあったら優しく指摘お願いします!)。

zabbix_pf_005.png

「アイテムのタイプ」の意味づけ

次に、「アイテムのタイプ」の概念を明確に理解するのに苦しみました。 雰囲気レベルで理解することはできているのですが、明確な意味構造の中で捉えることがなかなかできませんでした。 (ライティングやセミナーを業務の一部とする関係上、どうしても新しい概念を明確な意味構造で理解したく考えてしまうのですよね・・・)

「アイテムのタイプ」についての、自分なりの構造的な観点での意味づけは以下です。

  • 「アイテムのタイプ」=「監視処理(または監視データ収集処理)の種類」
    • 「監視項目(≒アイテム)の種類」という意味ではない
    • (渡部私見だが)その意味で「アイテムタイプ」や「アイテムのタイプ」という言葉はあまり良いものではない
  • 独自の分類だが、アイテムのタイプは監視処理(または監視データ収集処理)の実装に応じて、4つに分類されると考えると理解しやすいのでは
    • 分類1: Zabbix Agentに実装済みのアイテムのタイプ
    • 分類2: 独自に実装するが必要あるアイテムのタイプ
    • 分類3: Zabbix Serverに実装済みのアイテムのタイプ
    • 分類4: その他

zabbix_pf_010.png

zabbix_pf_011.png

「キー」の誤解ない定義づけ

その次には、「キー」の概念を明確に理解するのに苦しみました。

その原因の一つに、異なる意味で「キー」という用語が使われている、具体的には、 以下の2つを明確に区別せずに説明が記載されていることがあるのではと考えています。

  • パラメータを除いた純粋なキー名
  • キー名とパラメータからなるアイテムキー

個人的には、以下のように明確にわけて表記するのがよいのではと考えていますが・・・

  • 「キー」または「キー名」 : パラメータを除いた純粋なキー名
  • 「キー文字列」: キー名とパラメータからなるアイテムキー

この区別になぜこだわるのかというと、同一ホストでのキーの一意性における説明が理解できなくなるからです・・・

zabbix_pf_016.png

「キー」の意味づけ

キーの「意味(役割)」ですが、

  • キー=「アイテムで使用する監視処理を一意に特定するための識別子」

と考えてよいのでしょう。ただし以下の留意点(例外)があると考えないといけないかもしれません。

  • 正確には「アイテムタイプ」+「キー」で、アイテムで使用する監視処理が一意に特定される
  • トラッパーアイテムでは、監視データとアイテムを紐づけるキーと考える方が理解しやすいはず

zabbix_pf_015.png

上記の留意点(例外)のこともあり、キーの「意味(役割)」はしっくり整理しきれていません。 所詮はZabbixの内部のデータの持ち方、処理の仕方に依存する概念であり、 意味的に(人間の理解構造的に)しっくりする定義はできないものかもしれませんが・・・

ま、ごにょごにょ書いていますが、 「パラメータを除いた純粋なキー名」 「キー名とパラメータからなるアイテムキー」については明確に区別して欲しいと思いますね! 最初混乱する人 多いんじゃないかなぁ・・・

2018年9月20日

11/3(土) ORACLE MASTER Oracle Database 12c Gold試験合格セミナーやりますよ(ごめんなさい黒本購入者限定)

渡部です。 書籍『オラクルマスター教科書 Gold Oracle Database 12c』購入者限定となり恐縮ですが・・・ ORACLE MASTER Oracle Database 12c Gold試験対策セミナーを、書籍出版元の翔泳社さま、 試験実施元の日本オラクル株式会社さま、そして、私の所属する株式会社コーソルの共催で実施することになりました :-)

se_page.png

  • 講座名 オラクル Excellentセミナー in 青山
  • 日 時 2018年11月3日(土)13:00~17:00(受付開始12:30)
  • 会 場 日本オラクル株式会社 本社セミナールーム(東京都港区北青山2-5-8 オラクル青山センター)東京メトロ銀座線 「外苑前」駅 4B出口より接続)
  • 受講料 無料
    但し、『オラクルマスター教科書 Gold Oracle Database 12c』を購入し持参すること(電子書 籍可) ※受付で、書籍、または電子書籍画面のご提示をお願いします。
  • 定 員 50名
  • 主 催 株式会社翔泳社 日本オラクル株式会社 株式会社コーソル

セミナーの申し込みは、以下の翔泳社様のページからお願いします。ちょっと定員少なめなので、受講を希望される方はお早めにお申し込みくださいませ!

[補足] 書籍「オラクルマスター教科書 Gold Oracle Database 12c」について

oracle-master-gold-oracle-database-12c-cover.jpg

この書籍は、アップグレードではない、いわゆる通常の資格取得パス(12c Bronze → 12c Silver → 12c Gold)でORACLE MASTER Gold Oracle Database 12cを取得するために必要な試験である 1Z0-063 Oracle Database 12c: Advanced Administration の合格に向けた学習を支援する書籍です。

すでに11g Goldをお持ちの方など、アップグレードの資格取得パスで12c Goldを取得する方向けの書籍ではないため、ご注意くださいませ。(その場合は、オラクルマスター教科書 Gold Oracle Database 12c Upgrade 新機能編 を)

db tech showcase 2018 Tokyo 『コーソル「DBAの窓口」presents: ロジカルレプリケーションの動作の仕組みから見るOracleレプリケーション3製品のイチオシポイント』資料公開しました #dbts2018

渡部です。 db tech showcase 2018 Tokyoで、2018年9月19日(水) 17:30 - 18:15 に発表した以下のセッションについて、

発表資料を公開しました。

dbts2018tky_cosol_rep_cover.png

コーソルでは、ロジカルレプリケーション、セキュリティ、パフォーマンス監視などのデータベース関連製品の製品選定、販売、販売後の設計、導入、運用をサポートしております。データベースに関するお困りごとがある場合は、弊社サービス「DBAの窓口」までお気軽にご相談くださいませ!

license_mainimg.jpg

投稿内容は個人の意見であり、所属企業・部門見解を代表するものではありません。

プロフィール

Ryota WATABE / 渡部 亮太

100x100.jpg

  • Oracle ACE
  • AWS Certified Solutions Architect - Associate
  • ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

Norio Morita / 守田 典男

Norio Morita

  • 新しもの好きな Oracle Fighter。
  • 保有資格 : ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数