ノンストップデータベース HiRDB Version 9 コマンドリファレンス(UNIX(R)用)

[目次][索引][前へ][次へ]

4.4 規則及び注意事項

<この節の構成>
(1) 規則
(2) 注意事項
(3) SQLエラー時に出力される情報
(4) 注釈(コメント)の扱い
(5) CONNECT後の動作
(6) SQL文中の制御文字の扱い
(7) BOMを持つファイルの使用

(1) 規則

  1. データベース定義ユティリティは,HiRDBが稼働中のときだけ実行できます。
  2. データベース定義ユティリティは,任意のサーバマシンから実行できます。
  3. 定義系SQLを実行すると,1SQLごとにコミット処理を実行します。
  4. 実行できるSQL文の長さは,最大2,000,000バイトです。
  5. 1行に複数の定義系SQLは記述できません。
  6. データベース定義ユティリティでCREATE INDEXを実行する場合,インデクスを作成する表に行データが格納されていると,CREATE INDEXを実行するときにインデクスを一括作成します。このとき,クライアント環境定義にPDDBLOG=NOを指定していると,データベースの更新ログ取得しないでインデクスを一括作成します。したがって,この場合HiRDB管理者はログレスモードで運用する必要があります。ログレスモードの運用方法については,マニュアル「HiRDB Version 9 システム運用ガイド」を参照してください。
  7. データ連動の対象となる抽出側データべースに対して,ALTER TABLE又はDROP TABLEは実行しないでください。実行した場合,整合性が保証されません。ただし,対象となるデータべース中の表又は列が更新中でなく,かつ既に更新情報がすべて反映側に転送されている場合には,HiRDB側の定義を変更してください。そして,それに合わせてHiRDB Datareplicator側での抽出となる表又は列の抽出定義をhdeprepコマンドで再度解析してからHiRDB Datareplicatorを再起動すると,整合性が保証されます。これらの手順については,マニュアル「HiRDBデータ連動機能 HiRDB Datareplicator Version 8」を参照してください。
  8. システム定義のpd_sql_simple_comment_useオペランドがYの場合,Nの場合と制御文字の扱いが異なるため,制御文字を含むSQLの動作が次のように変わります。
    • 改行コードを含め,2,000,000バイトを超えるSQLがエラーになります。
    • 字句中に制御文字を含むSQLがエラーになります。又はオペランドの値によって結果が異なります。
  9. pddefを実行する場合,文字コードは定義を登録するHiRDBサーバと同じになるように設定し,設定した文字コードで入力してください。
    pddef実行時のLANG環境変数,クライアント環境定義PDLANG,PDCLTCNVMODEの設定方法を次の表に示します。

    表4-2 pddef実行時のLANG,PDLANG,及びPDCLTCNVMODEの設定方法

    入力文字コード 定義を登録するHiRDBサーバの文字コード※1 pddef実行環境の文字コード
    LANG※2 PDLANG※3 PDCLTCNVMODE※3
    SJIS(シフトJIS漢字コード) SJIS SJIS Linux版の場合:SJIS
    上記以外の場合:省略
    省略
    UJIS(EUC日本語漢字コード) UJIS UJIS 省略
    C(単一バイト文字コード) C C 省略
    chinese(EUC中国語漢字コード) chinese 任意 CHINESE
    GB18030(中国語漢字コード) chinese-gb18030 任意 CHINESE-GB18030
    Unicode(UTF-8) utf-8 任意(推奨値はC) UTF-8
    Unicode(IVS対応UTF-8) utf-8_ivs 任意(推奨値はC) UTF-8_IVS,又はUTF-8

注※1
pdsetupコマンドの-cオプションで設定した値です。

注※2
LANG環境変数の指定値はOSごとに異なります。LANGに指定する文字コードについては,マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

注※3
PDLANG,及びPDCLTCNVMODEについては,マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

(2) 注意事項

  1. データベース定義ユティリティの結果は,ユティリティ実行時のリターンコード,又はディクショナリ表を検索することで確認できます。リターンコードの意味を次に示します。
    • -Rオプションを省略した場合
      リターンコード 意味 対策方法 HiRDBの動作
      0 正常終了(SQLがエラーとなった場合も含む) 該当しません。 該当しません。
      8 メモリ不足 ほかのプロセスが終了してから再度実行するか,又はメモリを増やしてください。 処理を中断して,pddefを終了します。
      オプション指定エラー オプションを正しく指定してください。
      内部通信(オペレーションコードSINF)エラー 出力されるメッセージに従って対処してください。
    • -Rオプションを指定した場合
      リターンコード 意味 対策方法 HiRDBの動作
      0 正常終了 該当しません。 該当しません。
      4 HiRDB接続時のエラー 設定している環境変数を見直してください。 処理を中断して,pddefを終了します。
      SQLエラー 実行したSQLを見直してください。 処理を続行します。
      8 メモリ不足 ほかのプロセスが終了してから再度実行するか,又はメモリを増やしてください。 処理を中断して,pddefを終了します。
      オプション指定エラー オプションを正しく指定してください。
      内部通信(オペレーションコードSINF)エラー 出力されるメッセージに従って対処してください。

      リターンコード4が発生し,その後にリターンコード8が発生した場合,処理を中断し,最終リターンコード8で終了します。

  2. HiRDB接続時のパスワード秘匿化機能を使用している場合,必要に応じて,クライアント環境変数PDAUTHTYPEを設定し,HiRDBへ接続するときの認証方式を指定してから実行してください。指定値についてはマニュアル「HiRDB Version 9システム運用ガイド」の「HiRDB接続時のパスワード秘匿化機能の設定方法」を参照してください。

(3) SQLエラー時に出力される情報

次のSQL文でエラーが発生した場合,GET DIAGNOSTICS文が実行され,エラー情報が出力されます。ただし,SQL文中に注釈がある場合,ERROR_POSITIONには注釈を除いた値が表示されます。

エラー情報の形式を次の図に示します。

図4-2 エラー情報の形式

[図データ]

(4) 注釈(コメント)の扱い

SQL文の最初に現れた「/*」以降を注釈とみなします。それ以降,指定したすべての文字(セミコロンを含む)を注釈として扱います。また,注釈の開始を示す「/*」以降,最初に現れた「*/」を注釈の終了とみなします。この注釈を囲み注釈といいます。ただし,システム定義のpd_sql_simple_comment_useオペランドがYの場合は,SQL文中の「--」から,それ以降の最初の改行コードまでのすべての文字(セミコロンを含む)を注釈とみなします。この注釈を単純注釈といいます。

例を次に示します。なお,下線部が注釈とみなされます。

 
(例1)
CREATE TABLE T1 (C1 INT) ; /* CU ADDRESS TABLE */   …注釈の開始・終了
 
(例2)
CREATE TABLE T1 /* CU ADDRESS TABLE */ (C1 INT) ;   …注釈の開始・終了
 
(例3)
CREATE TABLE T1 /* CU ADDRESS   …注釈の開始・継続
TABLE */ (C1 INT) ;   ………………注釈の終了
 
(例4)
CREATE TABLE T1 /* CU ADDRESS TABLE * (C1 INT) ;   …注釈の開始・継続
 
(例5)
CREATE TABLE T1 /* CU /* ADDRESS */ TABLE */ (C1 INT) ;  …注釈の開始・終了
 
(例6)
CREATE TABLE T1 -- CU ADDRESS  …注釈の開始・終了
(C1 INT) ;
 

引用符(")やアポストロフィ(')で囲まれた「/* 〜 */」及び「-- 〜 改行コード」は注釈とみなされません。注釈の記述方法については,マニュアル「HiRDB Version 9 SQLリファレンス」のSQLの記述形式を参照してください。また,注釈の扱いは会話型SQL実行ユティリティ(pdsql)とは異なるので注意してください。

(5) CONNECT後の動作

CONNECT後にサーバと内部通信します(オペレーションコードSINF)。この内部通信がエラーになると,SQLエラーが出力され,処理を終了します。

(6) SQL文中の制御文字の扱い

データベース定義ユティリティを実行した場合,条件によってSQL文中の制御文字の扱いが異なります。条件ごとの制御文字の扱いを次に示します。

表4-3 SQL文中の制御文字の扱い

項番 システム定義のpd_sql_simple_comment_useオペランドの値 改行コードの削除 改行コード以外の制御文字の空白変換
1 N
2 Y × ×

(凡例)
○:削除又は変換します。
×:削除又は変換しません。

(7) BOMを持つファイルの使用

pdsetupコマンドで文字コードとしてutf-8,又はutf-8_ivsを選択した場合,pddefの入力ファイルには,BOMを持つファイルを使用できます。なお,pddefの入力ファイルとしてBOMを持つファイルを使用しても,BOMは読み飛ばされます。