【IRIS/Cache】データベース間でグローバルをチェックする(実行編)

はじめに

前回の設定編からの続きとなります。
前回を参照していない方は、↓にて確認して頂けると幸いです。

グローバルチェックの設定が終わったので、今度はいよいよグローバルのチェックを行いたいと思います。

4) Start(チェック実行)

チェックの設定が終わったら、いよいよ実行したいと思います。
「4) Start」を選択して下さい。

1) Create New Configuration
2) Edit Configuration
3) View Details
4) Start
5) Stop
6) Delete Configuration
7) Incoming Connections to this System as a DataCheck Source
 
Option? [4]
 
Configuration Name: defragCheck
 
State:  Stopped due to Workflow Stop Phase
Current Phase: 3 - Stop
Workflow Phases:
  1 - Check
  2 - RecheckDiscrepancies, Iterations=2
  3 - Stop
  (restart)
Workflow Timeout: 432000
 
DataCheck will transition to phase #1.
 
Start Datacheck configuration 'defragCheck'? [y]
Starting...

チェック設定が複数ある場合は、実行するチェックの選択がありますが、今回は1つしか設定していないので、自動で「defragCheck」が選択されています。

スタートするのか聞かれるので、「y」をクリックして下さい。

3) View Details(状況確認)

チェックを開始したら、「3) View Details」で状況の確認を行います。

Option? 3
 
Configuration Name: defragCheck
 
1) View Status
2) View Results
3) View Queries
4) View Log
 
Option?

1) View Status(状況確認)

「1) View Status」を選択すると、チェックの進捗状況を確認することが出来ます。

「Current Phase: 2」とあるので、再チェックフェーズに入っていますね。
ただ、「0 Unmatched」とあるので差異がないと結果が出ています。
そのためPhase 2は即終了です。

チェックシナリオがPhase 1~3で完了のため、チェックが終了しました。
その時のターミナルの状態になります。

チェッククエリが全て一致(Matched)して(1776回)、不一致(Unmatched)だったチェッククエリが0と結果が出ています。
これで、デフラグしたデータベースはグローバル異常が発生していないと確信できました。

確認が終われば、「q」をクリックする事で画面を戻せます。

2) View Results(結果確認)

チェックが完了したら、結果の確認を行います。
全ての結果が一致していれば特に不要だと思いますが、不一致が確認できた時は、不一致グローバルを探す必要があります。

結果を確認するには、「2) View Results」を選択して下さい。

1) View Status
2) View Results
3) View Queries
4) View Log
 
Option? [2]
 
1) Active Results  (2024-04-22 08:44:46 - 2024-04-22 08:49:06)
 
Which set would you like to view? [1]
Skip globals that matched between source and destination? No => [Enter]
View detailed subscript ranges? Yes => [Enter]
Device: [ファイルパス入力(D:\Temp\output\datacheck.txt)]
Parameters? "WNS" => [Enter]
 

チェックは1回しか行っていないので1を選択し、出力先のファイルパスを入力します。
細かい選択はEnterで良いでしょう。

念のため結果を確認してみます。


DataCheck Destination System: defragCheck
Results for check started: 2024-04-22 08:44:46
                    ended: 2024-04-22 08:49:06


D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag10D	Matched
	^developer.data.Defrag10D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag10I	Matched
	^developer.data.Defrag10I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag1D	Matched
	^developer.data.Defrag1D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag1I	Matched
	^developer.data.Defrag1I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag2D	Matched
	^developer.data.Defrag2D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag2I	Matched
	^developer.data.Defrag2I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag3D	Matched
	^developer.data.Defrag3D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag3I	Matched
	^developer.data.Defrag3I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag4D	Matched
	^developer.data.Defrag4D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag4I	Matched
	^developer.data.Defrag4I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag5D	Matched
	^developer.data.Defrag5D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag5I	Matched
	^developer.data.Defrag5I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag6D	Matched
	^developer.data.Defrag6D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag6I	Matched
	^developer.data.Defrag6I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag7D	Matched
	^developer.data.Defrag7D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag7I	Matched
	^developer.data.Defrag7I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag8D	Matched
	^developer.data.Defrag8D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag8I	Matched
	^developer.data.Defrag8I --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag9D	Matched
	^developer.data.Defrag9D --Matched--> [end]

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag9I	Matched
	^developer.data.Defrag9I --Matched--> [end]

20 Globals Reported

全てのグローバルで、一致していると結果が出力されましたね。

不一致を確認してみる

不一致がどういう表示をするのか確認してみたいと思います。
差異を演出するため下記グローバルを削除して、再度チェックを行ってみたいと思います。

k ^developer.data.Defrag5D(78)

再チェックが完了しました。
「4 Unmatched」とありますが、再チェック分も加算されているので、あまりUnmatched数にビックリしなくても大丈夫です。
初見だとかなりのインパクトですよね(笑

1) View Status
2) View Results
3) View Queries
4) View Log
 
Option? 2
 
1) Active Results  (2024-04-22 08:54:36 - 2024-04-22 08:59:11)
2) Last Completed Results  (2024-04-22 08:44:46 - 2024-04-22 08:49:06)
 
Which set would you like to view?

結果を確認してみます。

~ 略 ~

D:\IRISDB\SAMPLE-DATA\	^developer.data.Defrag5D	Unmatched
	^developer.data.Defrag5D --Matched--> ^developer.data.Defrag5D(64)
	^developer.data.Defrag5D(64) --Unmatched--> ^developer.data.Defrag5D(96)
	^developer.data.Defrag5D(96) --Matched--> [end]

~ 略 ~

^developer.data.Defrag5D(64 ~ 96)間に、何らかの相違がある事が出力されています。
後は、管理ポータルで目視確認するか、チェック設定を細かくして相違箇所を絞り込んでいき、相違しているグローバルを探していきます。

※今回の相違は、「^developer.data.Defrag5D(78)」を削除したため発生しています。

5) Stop(チェック停止)

端末の高負荷等で、チェックを途中で停止する必要が出てきたときに使用します。

一度停止を行うと次回チェック時に、停止した箇所からの再チェックが可能になります。
 ↓再スタートを確認するアナウンスが表示されます。

Start Datacheck configuration 'defragCheck'? (yes/no/restart)

ただ、稼働中のシステムの場合、長時間停止し続けると前回のチェックからデータが変動している可能性があるため、最初からやり直した方が良いです。
 ※ドキュメントにも同様の記述あります

6) Delete Configuration(チェック設定の削除)

不要になった設定を削除する事が出来ます。
もう使わないと判断したらゴミとして残ってしまうので、後々を考えると消しておいた方が良いかもしれません。

1) Create New Configuration
2) Edit Configuration
3) View Details
4) Start
5) Stop
6) Delete Configuration
7) Incoming Connections to this System as a DataCheck Source
 
Option? [6]
 
Configuration Name: defragCheck
Delete? No => [y]
 

案内にそって削除する項目を選択して下さい。

7) Incoming Connections to this System as a DataCheck Source

チェックのソース元として、どんな端末が接続してきたのかを一覧表示します。
セキュリティの一環としての利用だと考えています。

Option? 7
 
1) List Source Systems
2) View Log
 
Option? [1]
 
Name    DestinationHost DestinationName State
SOURCE-87CA6A20-E011-4427-AB61-0B44CDA13AE2     127.0.0.1       defragCheckStopped
 
1 Rows(s) Affected

閉じた環境で運用していたので、このオプションを使ったことが無いですが、お客様の環境で実行する時は、念のため確認した方が良いかもしれません。

おわりに

データチェックが終われば、サービスの「%Service_DataCheck」を無効にした方が良いと思います。

普段、データベース間でのデータチェックを行う機会は少ないと思いますが、シャドウイング・ミラーリング・データコピー等々、元データと一致しているか心配になる時は、是非試してみて下さい。

私も、シャドウイング開始前に、このデータチェックを行って一応の安心を取っています。