Skip to Content
Author's profile photo Sawa Ito

SAP SQL Anywhere 17 – インメモリデータベースのバリデーション

このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

 

 

バックアップとリカバリプランの一環として、リカバリプロセスのテストを定期的に行うとともに、バックアップに成功した後にバックアップデータベースをバリデーションするのがベストプラクティスであると考えられています。本番データベースが有効かどうか、バックアップがクリーンか、必要な時にリカバリ可能かどうか確認するにはこれがベストな方法です。

 

しかし、残念ながら、サーバーのバックアップデータベースを起動するということは、そのバックアップデータベースに関連したログファイルのオフセットの予期したスタートに先行して、(少なくとも)チェックポイントが発生します。

これはつまり、そのバックアップデータベースをリカバリに使用した場合には、本番データベースからログファイルをそれに適用することはできないことを意味します。なぜならば予期したログオフセットはもはやマッチしないからです。

バックアップが有効であり、さらにそれがまだリカバリに使用できることを確認するには、バックアップデータベースを「リードオンリー」モード(サーバー –r オプションまたは START DATABASE 文の FOR READ ONLY 句 )で起動し、そのデータベース/ログに何の変更もないことを確認する必要があります。

多くの場合はうまく機能しますが、全てうまくいくとは限りません。もしバックアップを開始し、データベース内にオープンなトランザクションがある場合には(よくあることですが)、そのバックアップデータベースはそれが開始される時にリカバリを経る必要があります(これらのトランザクションを完了するか、またはロールバックし、ACID 準拠のデータベースを確認します)。

これはつまり、「リードオンリー」モードをバリデーションには使用できないということを意味します。

この場合には、バックアップデータベースのコピーを作成してスタートし、データベースをリカバリさせ、それからバリデーションを行います。明らかに、これではバックアッププランに対して時間とディスクスペースの両方の面でオーバーヘッドを大幅に増加させてしまいます。

バージョン17では、「in-memory validation」または IMVと呼ぶ新しいインメモリーモードでこれに対応しました。これは、データベースとログファイルのコピーを別に作成しなくともバックアップのバリデーションができるようにするものです。

別途ライセンスが必要な(Editionによっては含まれていない)SQL Anywhere のその他のインメモリーモード (in-memory checkpoint-only モード (-im c) や in-memory never-write モード (-im nw ))とは異なり、この in-memory validation モードは全ての SQL Anywhere のバージョンに含まれています

つまりこれは、別途ライセンスされるコンポーネントでは ありません(Editionによっては含まれていないということはありません)。

In-memory validation モードは、サーバーのコマンドライン上で、”-im validation” スイッチ (あるいは短縮して “-im v” ) と指定することで有効になります。

 

dbsrv17.exe –im v foo.db

このサーバー in-memory validation モードでは、以下のような動作になります。

  • データベースファイルとログファイルはディスク上では決して修正されません。
  • 全ての修正は、データベースサーバーのキャッシュで維持されます。そのため、チェックポイントログ、redo ログ、そして/または undo ログが大きな数のデータベースページを修正する場合には、サーバーのキャッシュ(例:メモリー)がなくなる可能性があります。
  • サーバーは、temp ファイルを作成&使用して、可能な場合にはキャッシュプレッシャーを緩和します。
  • インメモリーの修正 (DML, DDL, etc) は、リカバリタスクでのみ変更可能です(つまり、チェックポイントログ、redo ログ(1または複数)、そしてundo ログ(1または複数)を適用するため)。
  • クライアント接続、ユーザー定義のイベント、etc のような全てのノンリカバリのオペレーションは、リードオンリーです(サーバーのリードオンリー(-r) モードと似ている)。
  • データベースは、-a、-ad、または -f のフラグが指定されている場合には、リカバリ後にシャットダウンしません。
  • サーバーは “-r” (read-only) コマンドラインオプション(1または複数)を無視し、START DATABASE 文のFOR READ ONLY 句は無視します。
  • IMV モードで稼働しているデータベースのバックアップは、オリジナルと一致するバックアップ、つまり IMV サーバー上でスタートされた修正されていないデータベースファイルを生成します。

DBValid/DBValidate()へのアップデート

サーバーの動作変更に追加して、dbvalid コマンドラインツールでは、新たに “-im <mode>” スイッチをサポートし、サーバーの in-memory モードをコントロールできるようにしました。しかし、これは autostart するサーバーに限られます。Valid モードには、none、v、c、nw が含まれます。デフォルトのモードは v です。

デフォルトの ‘v’ モードを含む ‘none’ 以外のモードが使用された場合には、dbvalid は、提供された “-im <mode>” スイッチを StartLine 接続パラメーターにアペンドします。そうでない場合には、StartLine は “dbeng16 -im <mode>” に設定されます。StartLine にすでに “-im <mode>” コマンドラインスイッチが含まれる場合には、サーバーは最初のものを尊重します (つまり、dbvalid でアペンドされたものではなく接続ストリングからのもの)。–im ‘none’ が指定されている場合には、StartLine は設定も修正もされません。

dbtools ライブラリ DBValidate(…) メソッドもまた、新しいインメモリーモードオプションをサポートするためにアップデートされました。

 

 

 

 

 

===

 

SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。

 

上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティ

に掲載しています。

 

SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。

 

SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。

Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」

を入力してください。

不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。

 

======================
ご購入に関するお問い合わせ

こちらよりお問い合わせください。

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.