ページの先頭行へ戻る
Interstage Navigator ServerV9.6.0 管理者ガイド(辞書管理ツール編)(Standard Edition用)
FUJITSU Software

8.8.3 辞書の運用に必要なファイルが壊れた場合の対処

Navigator Serverで使用している管理情報ファイルのすべて、または一部のファイルを誤って削除してしまったり、不慮の電源切断やハードディスク障害などで消失や破壊されてしまった場合に正常に動作しなくなることがあります。この状態を「辞書の不整合」と呼びます。
こういった不慮の事態に備えNavigator Serverはこの管理情報をDBMS上の辞書テーブルの情報を元にしてリフレッシュしDBMS上の情報と同期をとるために、以下のコマンドを使用します。コマンドの詳細は、“Navigator Server コマンドリファレンス”を参照してください。

辞書の管理情報ファイルを検査する場合(「検査モード」と呼びます)

rn_refresh -c -t <スキーマ名> -u <ユーザ名>[/<パスワード>] [-d <辞書用ユーザ名>[/<パスワード>]] > 実行結果ファイル

登録スキーマの管理情報ファイルを検査する場合(「検査モード」と呼びます)

rn_refresh -c -a -u <ユーザ名>[/<パスワード>] [-d <辞書用ユーザ名>[/<パスワード>]] > 実行結果ファイル

不整合を修復する場合(「修復モード」と呼びます)

rn_refresh -r -t <スキーマ名>[.<テーブル名>] -u <ユーザ名>[/<パスワード>] [-d <辞書用ユーザ名>[/<パスワード>]] [-s <参照DBMSのユーザ名>[/<パスワード>]] > 実行結果ファイル

管理情報ファイルを修復するための手順

以下に示す手順で管理情報ファイルの不整合の状態を検出し、不整合の管理情報ファイルをリフレッシュし修復します。

なお、本操作を実行する前に辞書の管理者のホームディレクトリ配下にあるディレクトリ、およびファイルをバックアップしてください。

『備考』

不整合の発生

運用中に以下のエラーが発生した場合に、辞書ディレクトリの修復コマンドを実行します。

また、運用中に管理情報ファイルの一部、または全部を誤って削除した場合も辞書ディレクトリの修復コマンドを実行します。

環境変数の設定

OSがUNIXの場合、辞書ディレクトリの修復コマンドを実行するには、事前に必要な環境変数を設定しておく必要があります。設定する環境変数、および設定する内容は、辞書として使用するDBMSの種類、OSの環境、参照するDBMSの種類などにより異なります。

なお、環境変数の設定漏れ・誤りによるエラーを防止するために、Navigator Serverの環境設定ファイルに設定してある環境変数をすべて設定しておくことをお勧めします。

以下に例を示します。

Solarisの場合
Linuxの場合
Windowsサーバの場合

Navigator Serverにより、自動的に環境変数が設定されるので環境変数の設定は不要です。

辞書の管理情報ファイルの検査

以下のコマンドにより辞書の管理情報ファイルが不整合になっていないか検査します。実行環境に依存している箇所はアンダーラインで表記していますので適宜置き換えて入力してください。

辞書のDBMSがSymfoware/RDBの場合

rn_refresh -c -t KVRGnnnnnnnn -u user/password > outfile

辞書のDBMSがPostgres、Oracle、またはSQL Serverの場合

rn_refresh -c -t KVRGnnnnnnnn -u user/password -d KVRGnnnnnnnn/password > outfile

【指定例】

例えば、辞書の管理者のユーザIDが3000でユーザ名がnaviadmの場合、以下のように指定します。

検査結果の確認

上記の指定例では、コマンドの実行結果はdic.resファイルに出力されます。このファイルをエディタなどで開き、エラーが出力されていないか確認します。以下のエラーメッセージが出力されているスキーマ、およびテーブルの管理情報ファイルは「辞書ディレクトリの修復コマンド」により修復することができます。

その他のメッセージは、“Navigator Server メッセージリファレンス”を参照し対処してください。

【出力例】

以下に不整合を検出したときに出力される情報の例を示します。

===================================================================================
# [Check Dictionary Table]
#       Schema Name         : KVRG00000BB8
#       Table Name          : KVRG00000BB8S
#       Data Source Name    : RDB2DB
#       DBMS                : SYMFOWARE/RDB
#       Error Message       : KVR52325 辞書の管理情報にスキーマ“KVRG00000514”のテーブル“KVRG00000514S”が存在しません.
rn_refresh -r -t "KVRG00000BB8.KVRG00000BB8S" -u naviadm/***
# KVR52321 辞書ディレクトリの修復コマンドが正常に終了しました.
=====================================================================================

上記の出力例はUNIXの場合の例です。Windowsサーバの場合、上記出力例の行の先頭のシャープ(#)の部分は(@rem)となります。また、Windowsサーバの場合、出力の前に @echo off および出力の後ろに @echo on の行が付加されます。

検査結果の編集

不整合が検出されたスキーマ、およびテーブルの管理情報ファイルはそれを修復するためのコマンド文字列を出力します。ただし、パスワードの部分はアスタリスク文字(***)で出力されます。

DBMS種別やデータソース名などとともに出力されるのでその内容にしたがってパスワードを編集してください。

辞書の管理情報ファイルの修復

UNIXの場合は実行結果ファイルにchmodで実行権を与えます。Windowsサーバの場合は実行結果ファイルの拡張子を.batに変更します。このファイルを実行します。このときリダイレクトで結果をファイルに出力してください。
このファイルをエディタなどで参照し、エラーが出力されていないか確認します。エラーが出力されていた場合には、“Navigator Server メッセージリファレンス”を参照し対処してください。

【指定例】

以下に実行結果ファイルをdic.resとした場合の指定例を示します。

登録スキーマの管理情報ファイルの検査

以下のコマンドにより辞書に登録したスキーマの管理情報辞書ファイルが不整合になっていないか検査します。実行環境に依存している箇所はアンダーラインで表記していますので適宜置き換えて入力してください。

辞書のDBMSがSymfoware/RDBの場合

rn_refresh -c -a -u user/password > outfile

辞書のDBMSがPostgres、Oracle、またはSQL Serverの場合

rn_refresh -c -a -u user/password -d KVRGnnnnnnnn/password > outfile

【指定例】

例えば、辞書の管理者のユーザIDが3000でユーザ名がnaviadmの場合、以下のように指定します。

検査結果の確認

上記の指定例では、コマンドの実行結果はdic.resファイルに出力されます。このファイルをエディタなどで開き、エラーが出力されていないか確認します。以下のエラーメッセージが出力されているスキーマ、およびテーブルの管理情報ファイルは「辞書ディレクトリの修復コマンド」により修復することができます。

その他のメッセージは、“Navigator Server メッセージリファレンス”を参照し対処してください。

【出力例】

以下に不整合を検出したときに出力される情報の例を示します。

===================================================================================
# [Check User's Table]
#       Schema Name         : RNTESTDB
#       Table Name          : SUPERZ
#       Data Source Name    : RDB2DB
#       DBMS                : SYMFOWARE/RDB 
#       Error Message       : KVR52325 辞書の管理情報にスキーマ“RNTESTDB”のテーブル“SUPERZ”が存在しません.
rn_refresh -r -t "RNTESTDB.SUPERZ" -u naviadm/***
# KVR52321 辞書ディレクトリの修復コマンドが正常に終了しました.
=====================================================================================

上記の出力例はUNIXの場合の例です。Windowsサーバの場合、上記出力例の行の先頭のシャープ(#)の部分は(@rem)となります。また、Windowsサーバの場合、出力の前に @echo off および出力の後ろに @echo on の行が付加されます。

検査結果の編集

不整合が検出されたスキーマ、およびテーブルの管理情報ファイルはそれを修復するためのコマンドを出力します。ただしこのパスワードの部分はアスタリスク文字(***)で出力されます。また、-sパラメタが必要なデータソースの場合には、コマンド文字列に-s <user>/***が付加されます。

DBMS種別やデータソース名などとともに出力されるのでその内容にしたがってパスワード、および-sパラメタのユーザ名とパスワードを編集してください。

登録スキーマの管理情報ファイルの修復

UNIXの場合は実行結果ファイルにchmodで実行権を与えます。Windowsサーバの場合は実行結果ファイルの拡張子を.batに変更します。このファイルを実行します。このときリダイレクトで結果をファイルに出力してください。

このファイルをエディタなどで参照し、エラーが出力されていないか確認します。エラーが出力されていた場合には、“Navigator Server メッセージリファレンス”を参照し対処してください。

【指定例】

以下に実行結果ファイルをdic.resとした場合の指定例を示します。

動作確認

Navigator辞書管理ツール、およびNavigatorクライアントから操作を実施し、正常に動作することを確認してください。

注意

  • 「辞書ディレクトリの修復コマンド」ではDBMS上の辞書テーブルの情報を元にして修復するため、DBMS上の辞書スキーマ、および辞書テーブルの情報を修復することはできません。サーバ上のDBMSの構造とNavigatorで辞書に定義した情報が不整合状態である場合には「辞書ディレクトリの修復コマンド」で修復した後、Navigator辞書管理ツールで整合性チェック機能を使用して整合性を確保してください。

  • Solarisの場合、Bシェルではスラッシュ(/)を含んだ環境変数名は指定できません。
    スラッシュ(/)を含んだ環境変数名を指定する場合、Cシェルで実行してください。

  • Solarisでは、環境変数LD_LIBRARY_PATH_64は指定できません。実行前に、LD_LIBRARY_PATH_64を無効にしてください。

  • Linuxの場合、シェルでスラッシュ(/)を含んだ環境変数名は指定できません。
    スラッシュ(/)を含んだ環境変数名には、以下があります。

    • RN_SYMFOWARE/RDB_DBSPACE

    • RN_SYMFOWARE/RDB_MAXNAME

    • RN_SYMFOWARE/RDB_CHARSET

    • RN_SYMFOWARE/RDB_ISOLATIONLEVEL

    環境変数名にスラッシュ(/)を含んだ環境変数を使用する場合、環境変数名のスラッシュ(/)をアンダスコア(_)に変更して指定してください。

    例) CシェルでRN_SYMFOWARE/RDB_DBSPACEを指定する場合

    setenv RN_SYMFOWARE_RDB_DBSPACE DBSP1