Symfoware Serverの操作からDBミラーリングシステムの運用の対象資源を保護する、実行抑止について説明します。
DBミラーリングシステムでは、利用者が誤ったSymfoware Serverの操作を行った場合、運用の対象資源を破壊しないように、実行を抑止します。たとえば、副系ノードで業務アプリケーションからデータを誤って更新することによる正系ノードとのデータ不整合などです。
この実行抑止の状態では、RLPを作成しているロググループ単位に属するDSIまたは順序に対して、RDBコマンドや業務アプリケーションから以下の操作を行った場合にエラーとなります。なお、一時表はDBミラーリングシステムの二重化対象資源でないため、一時表に対する操作は、利用規定の対象となりません。
DSIのデータを更新する操作
順序番号を生成する操作
DSIおよび順序に対するデータベースの定義および変更操作
参照
DSIのデータを更新する操作の詳細については、“B.3.4.4 DSIのデータを更新する操作”を参照してください。
順序番号を生成する操作の詳細については、“B.3.4.5 順序番号を生成する操作”を参照してください。
DSIおよび順序に対するデータベースの定義および変更操作の詳細については、“B.3.4.6 DSIおよび順序に対するデータベースの定義および変更操作”を参照してください。
RDBコマンドや業務アプリケーションの操作に対する実行抑止の状態は、RLPのオンライン・オフライン状態や実行するSymfoware/RDBの操作によって決定されます。
実行抑止の状態か否かは、rdbbcdcuコマンドにより取得したRLPのオンライン・オフライン状態およびオンラインモードと、実行する操作の関係により実行抑止状態かどうかを判断してください。
これらの関係については、“B.3.4.3 RLPの状態とRDBコマンドおよび業務アプリケーションの操作ごとの実行抑止の関係”を参照してください。
RLPのオンライン・オフライン状態は、以下のコマンドにより変化します。
dxsvstartコマンド
dxsvstopコマンド
dxswitchコマンド
dxdcustopコマンド
各コマンド実行後のRLPの状態を、以下に示します。
コマンド名 | オプション | RLPの状態(主系) | 補足 |
---|---|---|---|
dxsvstartコマンド | -c | オンライン(複写元) |
|
-r | オンライン(複写先) |
| |
dxsvstopコマンド | なし | オフライン(切替え) | 正系ノードで実行し、両ノードで左記の状態となります。 |
-mc | |||
-r | 変化なし | コマンド実行前の状態と同じです。 | |
-m | オフライン(休止) |
| |
-term | オフライン(終了) |
| |
-term -c | |||
dxswitchコマンド | なし | オンライン(複写元) | 正系ノードのSymfoware/RDBは自動または手動により停止し、副系ノードのRLPは左記のように変化します。 |
-n | オンライン(複写元) | ||
-force | オフライン(終了) | ||
dxdcustop | -term | オフライン(終了) | 該当ロググループのみ |
なお、DCUの定義後、dxsvstartコマンド実行までの間、RLPはオフライン(初期状態)となります。
ポイント
RLPがオンライン状態でrdbstopコマンドを実行し、Symfoware/RDBを停止しても、RLPの状態は変化しません。
ただし、データベースサーバの運用の状態は、オフラインとなります。
参照
RLPの状態については“F.2 RLPの状態”を参照してください。
dxsvstartコマンド、dxsvstopコマンド、dxswitchコマンド、および、dxdcustopコマンドの詳細は、“コマンドリファレンス”を参照してください。
rdbstopコマンドの詳細は、“コマンドリファレンス”を参照してください。
RLPの状態による、RDBコマンドおよび業務アプリケーションの操作ごとの実行抑止状態について、以下の表に示します。
実行抑止の状態で以下の操作を行うと、RDBコマンドおよび業務アプリケーションがエラーになります。
システム | RLPの状態 | RDBコマンドおよび業務アプリケーションの操作 | |||||
---|---|---|---|---|---|---|---|
DSIのデータを更新する操作(RERUNログを取得) | DSIのデータを更新する操作(RERUNログを取得しない)(注1) | 順序番号を生成する操作 | DSIおよび順序に対するデータベースの定義変更操作 | DSIを初期化する操作(注2) | |||
正系ノード | オンライン | ○ | × | ○ | × | ○ | |
オフライン | 初期状態 | × | ○ | × | ○ | ○ | |
休止 | × | × | × | × | × | ||
切替え | × | ○ | × | ○ | ○ | ||
終了 | ○ | ○ | ○ | ○ | ○ | ||
副系ノード | オンライン | × | × | × | × | × | |
オフライン | 初期状態 | × | ○ | × | ○ | ○ | |
休止 | × | × | × | × | × | ||
切替え | × | ○ | × | ○ | ○ | ||
終了 | ○ | ○ | ○ | ○ | ○ |
○:実行可能な状態
×:実行抑止の状態(RDBコマンドおよび業務アプリケーションがエラーになる)
注1) rdbsloaderコマンド、rdbsuloaderコマンド、rdbsaloaderコマンド、およびsオプション指定のrdbalidxコマンド
注2) rdbfmtコマンド
注意
上記の表のオフラインの説明では、DCUを構成するRLPのうち、主系RLPについて説明しています。なお従系のRLPは、実行抑止には関係しません。
実行抑止の対象操作となるDSIのデータを更新する操作について示します。なお、本操作は大きく以下の2つに分類されます。
実行抑止の対象となるRERUNログを取得する操作には、RDBコマンドと業務アプリケーションによるSQL文があります。
以下のRDBコマンドを実行した場合に実行抑止の対象になります。
rdbuptコマンド
rdbexecsqlコマンド(“実行抑止の対象となるSQL文”を発行した場合)
参照
rdbuptコマンドおよびrdbexecsqlコマンドの詳細は、“コマンドリファレンス”を参照してください。
以下のSQL文を業務アプリケーションより発行した場合、実行抑止の対象になります。
分類 | SQL文 | 備考 | |
---|---|---|---|
データベース操作系 | データ操作文 | DELETE文:探索 |
|
UPDATE文:探索 |
| ||
DELETE文:位置づけ |
| ||
UPDATE文:位置づけ |
| ||
INSERT文 |
| ||
動的SQL文 | 動的DELETE文:位置づけ |
| |
動的UPDATE文:位置づけ |
| ||
準備可能動的DELETE文:位置づけ |
| ||
準備可能動的UPDATE文:位置づけ |
| ||
EXECUTE文, | 動的SQL文として、データ操作文を発行した場合 | ||
ストアドプロシジャ | プロシジャルーチンで定義したSQL文が上記のデータ操作文の場合 | CALL文により左記のストアドプロシジャを実行した場合 | |
トリガ | 被トリガSQL文が上記のデータ操作文の場合 | 左記の被トリガSQL文が動作した場合 |
参照
各SQL文の詳細は、“SQLリファレンス”を参照してください。
実行抑止の対象となる順序番号を生成する操作には、RDBコマンドと業務アプリケーションからの順序番号の生成操作があります。
以下のRDBコマンドを実行した場合に実行抑止の対象になります。
rdbexecsqlコマンド
rdbunlsqlコマンド
rdbsloaderコマンド
rdbsaloaderコマンド
rdbsuloaderコマンド
rdbuptコマンド
なお、rdbexecsqlコマンドおよびrdbunlsqlコマンドは、“実行抑止の対象となるSQL文”を発行した場合に、実行抑止の対象になります。
また、rdbsloaderコマンド、rdbsaloaderコマンド、rdbsuloaderコマンド、およびrdbuptコマンドの場合には、表の既定値として順序番号を補うような操作を実行した場合に、実行抑止の対象になります。
注意
順序定義に指定した割当順序数指定“CACHE”の値によっては、実行抑止の状態でも、RDBコマンドおよび業務アプリケーションによる順序番号の生成の操作が継続できることがあります。この場合、正系ノードおよび正系ノードでの順序番号の整合性は保証されているため、DBミラーリングシステムの運用には問題ありません。
参照
各RDBコマンドの詳細は、“コマンドリファレンス”を参照してください。
順序番号を生成するSQL文を業務アプリケーションより発行した場合に実行抑止の対象になります。
順序番号を生成するSQL文とは、SQL文中に順序のNEXTVALとCURRVALを指定したり、表の既定値として順序番号を補うようなSQL文を示します。
参照
順序番号の生成が可能なSQL文については、“SQLリファレンス”を参照してください。
実行抑止の対象となるDSIおよび順序に対するデータベースの定義および変更を行う操作について示します。なお、以下の方法により、データベースの定義および変更操作を行った場合に実行抑止の対象になります。
rdbddlexコマンド(lオプションを含む)
rdbddlfixコマンド
rdbalidxコマンド(sオプション指定時のみ)
業務アプリケーション(動的SQL文)
分類 | SQL文(データベースの定義および変更操作文)またはRDBコマンド | 備考 |
---|---|---|
スキーマ定義/操作文 | CREATE SEQUENCE, |
|
CREATE SCHEMA | スキーマ要素として順序を定義した場合 | |
CREATE TABLE | 格納構造定義を簡略化した場合 | |
DROP SEQUENCE, |
| |
DROP SCHEMA, | CASCADE指定により、DSI・INDEXまたは順序を削除する場合 | |
ALTER TABLE | 列定義の追加および変更が対象になります | |
格納構造定義/操作文 | CREATE DSI(表/INDEX) |
|
DROP DSI(表/INDEX) |
| |
DROP DSO | CASCADE指定によりDSIを削除する場合 | |
ALTER DSI | DSIの分割値変更を行う場合 | |
インデックスの状態を非活性状態に変更 | rdbalidx(-sオプション指定時) |
|
rdbddlexコマンドまたはrdbddlfixコマンドによる定義情報の変更の準備を行う場合には、定義文によって実行不可状態のエラーとなる契機が異なります。
SQL文(データベースの定義および変更操作文) | 操作 | エラーの契機 |
---|---|---|
CREATE DSI | 表のDSI定義文 | rdbddlfixコマンド(aオプション)実行時 |
インデックスのDSI定義文 | ||
ALTER TABLE | 表定義変更文(列定義追加) | rdbddlexコマンド(lオプション)実行時 |
参照
各RDBコマンドの詳細は、“コマンドリファレンス”を参照してください。
各SQL文の詳細は、“SQLリファレンス”を参照してください。
準備モードでのデータベースの定義変更については、“RDB運用ガイド”を参照してください。
以下のRDBコマンドを実行した場合に実行抑止の対象になります。
rdbfmtコマンド
上記のコマンドはRERUNログを取得します。
参照
rdbfmtコマンドの詳細は、“コマンドリファレンス”を参照してください。
dxsvstartコマンドやオプションを省略したdxsvstopコマンドでRLPのオンライン・オフライン操作を行う時点で、RDBコマンドまたは業務アプリケーションが実行中の場合、コマンドはエラーになります。なお、実行中とは以下を示します。
RDBコマンドの場合
RDBコマンドの処理中は実行中とみなします。RDBコマンドの終了を待ってから、オンライン・オフライン操作を再実行します。
注意
dxsvstartコマンドやdxsvstopコマンドなどでRLPのオンライン・オフライン操作を行うコマンドと、実行抑止対象のRDBコマンドが同時に実行された場合、実行抑止対象のRDBコマンドが異常終了する場合があります。
業務アプリケーションの場合
業務アプリケーションにより、RLPを作成しているロググループ単位に属するDSIまたは順序に対して、実行抑止対象のSQL文(データベースの定義および変更操作も含む)を発行した場合、本業務アプリケーションのコネクションが存在する間は実行中と見なし、DBミラーリングサービスの開始、またはDBミラーリングサービスの停止操作がエラーになります。
その場合には、これらの業務アプリケーションのコネクションをいったん停止してから、DBミラーリングサービスの開始、またはDBミラーリングサービスの停止操作を再実行します。
注意
Symfoware Serverにコネクションを接続している場合は、アプリケーションまたはアプリケーションサーバを停止してください。
dxsvstartコマンドやdxsvstopコマンドなどでRLPのオンライン・オフライン操作を行うコマンドと、実行抑止対象の業務アプリケーションの操作が同時に実行された場合、実行抑止対象の業務アプリケーションの操作が異常終了する場合があります。
dxsvstopコマンドのmcオプションは、アプリケーションサーバ経由で実行中の業務アプリケーションがある場合はそのコネクションを強制切断し、DBミラーリングサービスを通常停止します。