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のユーザ名>[/<パスワード>]] > 実行結果ファイル |
管理情報ファイルを修復するための手順
以下に示す手順で管理情報ファイルの不整合の状態を検出し、不整合の管理情報ファイルをリフレッシュし修復します。
なお、本操作を実行する前に辞書の管理者のホームディレクトリ配下にあるディレクトリ、およびファイルをバックアップしてください。
『備考』
「登録スキーマ」とは辞書に登録したスキーマを意味します。
不整合の発生
運用中に以下のエラーが発生した場合に、辞書ディレクトリの修復コマンドを実行します。
KVQ01060のエラー
KVQ01002のエラー
KVR07888のエラー
KVR70024のエラー
また、運用中に管理情報ファイルの一部、または全部を誤って削除した場合も辞書ディレクトリの修復コマンドを実行します。
環境変数の設定
OSがUNIXの場合、辞書ディレクトリの修復コマンドを実行するには、事前に必要な環境変数を設定しておく必要があります。設定する環境変数、および設定する内容は、辞書として使用するDBMSの種類、OSの環境、参照するDBMSの種類などにより異なります。
なお、環境変数の設定漏れ・誤りによるエラーを防止するために、Navigator Serverの環境設定ファイルに設定してある環境変数をすべて設定しておくことをお勧めします。
以下に例を示します。
辞書のDBMS、および参照するDBMSがOracle19cでCシェルの場合
=================================================================================== setenv ORACLE_HOME /opt/oracle/app/oracle/product/19.3.0/dbhome_1 setenv ORACLE_SID orcl setenv RN_BASERDBMS ORACLE setenv RN_ORACLE_RELEASE 190 setenv LANG ja_JP.PCK setenv NLS_LANG Japanese_Japan.JA16SJIS setenv RN_CHARACTER_SET SJIS setenv PATH /opt/FJSVenavi/bin:$ORACLE_HOME/bin:/usr/bin setenv LD_LIBRARY_PATH /opt/FJSVenavi/bin:$ORACLE_HOME/lib =====================================================================================
※/opt/FJSVenaviは、Enterprise Editionの場合です。その他のエディションを利用している場合は、“Navigator Serverのインストール先について”を参照してください。
環境変数RN_CONF_FILEに環境設定ファイルを指定することで、以下を除いて事前に環境変数の設定をする必要がなくなります。
PATH
LD_LIBRARY_PATH
RN_CHARACTER_SET
RN_CONF_FILE
部門の環境設定ファイルに指定した環境変数
辞書のDBMS、および参照するDBMSがOracle19cでBシェルの場合
=================================================================================== ORACLE_HOME=/opt/oracle/app/oracle/product/19.3.0/dbhome_1; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID RN_BASERDBMS=ORACLE; export RN_BASERDBMS RN_ORACLE_RELEASE=190; export RN_ORACLE_RELEASE LANG=ja_JP.PCK; export LANG NLS_LANG=Japanese_Japan.JA16SJIS; export NLS_LANG RN_CHARACTER_SET=SJIS; export RN_CHARACTER_SET PATH=/opt/FJSVenavi/bin:$ORACLE_HOME/bin:/usr/bin; export PATH LD_LIBRARY_PATH=/opt/FJSVenavi/bin:$ORACLE_HOME/lib; export LD_LIBRARY_PATH =====================================================================================
※/opt/FJSVenaviは、Enterprise Editionの場合です。その他のエディションを利用している場合は、“Navigator Serverのインストール先について”を参照してください。
辞書のDBMS、および参照するDBMSがOracle19cでCシェルの場合
=================================================================================== setenv ORACLE_HOME /opt/oracle/app/oracle/product/19.3.0/client_1 setenv ORACLE_SID orcl setenv RN_BASERDBMS ORACLE setenv RN_ORACLE_RELEASE 190 setenv LANG C setenv LC_ALL C setenv NLS_LANG Japanese_Japan.JA16SJIS setenv RN_CHARACTER_SET SJIS setenv TMPDIR /var/tmp setenv PATH /opt/FJSVenavi/bin:$ORACLE_HOME/bin:/usr/bin:/bin setenv LD_LIBRARY_PATH /opt/FJSVenavi/bin:$ORACLE_HOME/lib =====================================================================================
※/opt/FJSVenaviは、Enterprise Editionの場合です。その他のエディションを利用している場合は、“Navigator Serverのインストール先について”を参照してください。
辞書のDBMS、および参照するDBMSがOracle19cでBシェルの場合
=================================================================================== ORACLE_HOME=/opt/oracle/app/oracle/product/19.3.0/client_1; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID RN_BASERDBMS=ORACLE; export RN_BASERDBMS RN_ORACLE_RELEASE=190; export RN_ORACLE_RELEASE LANG=C; export LANG LC_ALL=C; export LC_ALL NLS_LANG=Japanese_Japan.JA16SJIS; export NLS_LANG RN_CHARACTER_SET=SJIS; export RN_CHARACTER_SET TMPDIR=/var/tmp; export TMPDIR PATH=/opt/FJSVenavi/bin:$ORACLE_HOME/bin:/usr/bin:/bin; export PATH LD_LIBRARY_PATH=/opt/FJSVenavi/bin:$ORACLE_HOME/lib; export LD_LIBRARY_PATH =====================================================================================
※/opt/FJSVenaviは、Enterprise Editionの場合です。その他のエディションを利用している場合は、“Navigator Serverのインストール先について”を参照してください。
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の場合、以下のように指定します。
辞書のDBMSがSymfoware/RDBの場合
rn_refresh -c -t KVRG00000BB8 -u naviadm/navi > dic.res |
辞書のDBMSがPostgres、Oracle、またはSQL Serverの場合
rn_refresh -c -t KVRG00000BB8 -u naviadm/navi -d KVRG00000BB8/bb8 > dic.res |
検査結果の確認
上記の指定例では、コマンドの実行結果はdic.resファイルに出力されます。このファイルをエディタなどで開き、エラーが出力されていないか確認します。以下のエラーメッセージが出力されているスキーマ、およびテーブルの管理情報ファイルは「辞書ディレクトリの修復コマンド」により修復することができます。
KVR52324E
KVR52325E
その他のメッセージは、“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とした場合の指定例を示します。
UNIXの場合
chmod +x dic.res
./dic.res
Windowsサーバの場合
ren dic.res dic.bat
dic.bat
登録スキーマの管理情報ファイルの検査
以下のコマンドにより辞書に登録したスキーマの管理情報辞書ファイルが不整合になっていないか検査します。実行環境に依存している箇所はアンダーラインで表記していますので適宜置き換えて入力してください。
辞書の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の場合、以下のように指定します。
辞書のDBMSがSymfoware/RDBの場合
rn_refresh -c -a -u naviadm/navi > dic.res |
辞書のDBMSがPostgres、Oracle、またはSQL Serverの場合
rn_refresh -c -a -u naviadm/navi -d KVRG00000BB8/bb8 > dic.res |
検査結果の確認
上記の指定例では、コマンドの実行結果はdic.resファイルに出力されます。このファイルをエディタなどで開き、エラーが出力されていないか確認します。以下のエラーメッセージが出力されているスキーマ、およびテーブルの管理情報ファイルは「辞書ディレクトリの修復コマンド」により修復することができます。
KVR52324E
KVR52325E
その他のメッセージは、“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とした場合の指定例を示します。
UNIXの場合
chmod +x dic.res
./dic.res
Windowsサーバの場合
ren dic.res dic.bat
dic.bat
動作確認
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 |