アプリケーションのコンパイル・リンク時および実行時の動作環境のチューニングは、環境変数で指定できます。
アプリケーションのコンパイル・リンク時に指定する環境変数
LANG(Solaris/Linuxの場合)
RDBDB
SQLPC
SQLPCOB
INCDIR(Solaris/Linuxの場合)
INCLUDE(Windows(R)の場合)
アプリケーションの実行時に指定する環境変数
LD_LIBRARY_PATH_64(Solarisの場合)
LD_LIBRARY_PATH
RDBNAME
SQLRTENV
このほかに、アプリケーションの動作環境ファイルの実行パラメタに関する環境変数もあります。アプリケーションの動作環境のチューニングは、主に動作環境ファイルで行いますが、一部の環境については、環境変数で指定することもできます。環境変数に指定するパラメタはrdbuptコマンドおよびrdbunlsqlコマンドでも有効になります。
環境変数による指定と動作環境ファイルによる指定が重複する場合は、環境変数による指定が優先されます。
環境変数による指定を省略した場合は、動作環境ファイルの指定に従います。
環境変数と動作環境ファイルの実行パラメタの対応を以下に示します。
環境変数名 | 動作環境ファイルの実行パラメタ |
---|---|
CHAR_SET | |
COREFILE_PATH | |
RDBCSNAME(注) | CLUSTER_SERVICE_NAME |
DIV_TRACE_FILE | |
RDBDSI(注) | INCLUSION_DSI |
RDBDSO(注) | DSO_LOCK |
ISOLATION_WAIT | |
SQL_LEVEL | |
MSG_PRINT | |
NCHAR_CODE | |
RDBOBJTB(注) | DEFAULT_OBJECT_TABLE_SIZE |
RDBODBIX(注) | DEFAULT_INDEX_SIZE |
RDBODBTB(注) | DEFAULT_TABLE_SIZE |
RDBODBTY(注) | DEFAULT_DSI_TYPE |
RDBPSCAN(注) | PARALLEL_SCAN |
RDBRCVL(注) | RCV_MODE |
R_LOCK | |
ROUTINE_SNAP | |
SIGNAL_INF | |
SET_CALLBACK | |
SORT_MEM_SIZE | |
RDBSYDSI(注) | DSI_EXPAND_POINT |
TRAN_SPEC | |
SQL_SNAP | |
WORK_MEM_SIZE | |
WORK_PATH |
注)データベース簡単運用の場合は、指定できません。
各環境変数の指定形式と意味は、以下のとおりです。
Solarisの場合
LANG = {ja | ja_JP.eucJP | ja_JP.PCK | ja_JP.UTF-8 | C}
Linuxの場合
LANG = {ja_JP.UTF-8 | C}
UNIX系システムにおいて、アプリケーションのロケールを指定します。
指定したロケールからアプリケーションの言語や文字コード系が決まります(下表参照)。具体的には、以下に影響を与えます。
アプリケーションのソースコード
アプリケーションの入出力ファイル
クライアント用の動作環境ファイル
SQLメッセージ(SQLMSG)
SQLメッセージは、以下のロケールの強度に従ってロケールが決まります。
(強い)LC_ALL > LC_MESSAGE > LANG(弱い)
Symfoware/RDBは、ロケールの言語がjaで始まる場合は日本語のメッセージを出力し、それ以外のロケール(Cロケールなど)の場合は英語でメッセージを出力します。
対象OS | ロケール | 文字コード系 |
---|---|---|
[Solaris] | ja | EUCコード |
ja_JP.eucJP | ||
ja_JP.PCK | シフトJISコード | |
ja_JP.UTF-8 | UNICODE | |
C | インストール時の文字コード系が設定されます。(注) | |
[Linux] | ja_JP.UTF-8 | UNICODE |
C | インストール時の文字コード系が設定されます。(注) |
注) アプリケーションのデフォルトの文字コード系は、アプリケーションが動作する環境により決まります。
アプリケーションが動作する環境 | アプリケーションのデフォルトの文字コード系 |
---|---|
Symfoware/RDBと同一サーバのアプリケーション | データベースの文字コード系 |
Connection Managerを利用するアプリケーション | Connection Managerインストール時の文字コード系 |
クライアント端末のアプリケーション | Symfoware Server クライアント機能インストール時の文字コード系 |
RDBCHARSET = {EUC_S90|EUC_U90|EUC|SJIS|UTF8}
文字列型のホスト変数、文字列型の動的パラメタ、および、SQLMSGの文字コード系を指定します。この指定は、アプリケーションをC言語で記述している場合に有効です。
データベースに格納される文字列型データの文字コード系とRDBCHARSETとの関係を以下に示します。
データベースの文字コード系 | RDBCHARSETの指定 | ||||
---|---|---|---|---|---|
EUC_S90 | EUC_U90 | EUC | SJIS | UTF8 | |
EUCコードのS90コード | ○ | × | ○ | ○ | |
EUCコードのU90コード | × | ○ | ○ | ○ | |
シフトJISコード | ○ | ○ | ○ | ○ | |
UNICODE | ○ | ○ | ○ | ○ |
○:指定可能
×:指定不可能
ホスト変数内文字列のデータの文字コード系がEUCコードのS90コードの場合に指定します。
ホスト変数内文字列のデータの文字コード系がEUCコードのU90コードの場合に指定します。EUCは互換として存在します。
ホスト変数内文字列のデータの文字コード系がシフトJISコードの場合に指定します。
ホスト変数内文字列のデータの文字コード系がUTF-8形式の場合に指定します。
注意
アプリケーションをCOBOLで記述している場合は、本パラメタは無視されます。詳細は、“2.3.1 文字コード系の決定”を参照してください。
RDBCSNAME = クラスタサービス名
PRIMECLUSTERまたはSafeCLUSTERと連携する場合、クラスタシステムに登録されているクラスタサービス名を記述します。
RDBDIVTRC = ({YES | NO})
複数のアプリケーションが動作する場合、出力ファイル名(SQL_SNAP機能やROUTINE_SNAP機能によって出力されるファイル、および、アクセスプラン情報やSQL性能情報を取得するファイル)の後ろに、プロセスIDなどの情報を付加して個別のトレース情報を出力するか否かを指定します。
出力ファイル名の後に以下の情報を付加して個別のトレース情報を取得します。
ログイン名
プロセスID
セション開始時間
出力ファイル名をsqlsnap.lstとし、ログイン名がtest、プロセスIDが288、セション開始時間が2007年4月16日12時34分56秒であるとした場合、以下のファイルに情報が出力されます。
sqlsnap_test_288_20070416123456.lst
個別のトレース情報を取得しません。
注意
アプリケーションがマルチスレッド環境で動作する場合は、RDBDIVTRCの指定に関係なく、自動的に以下の情報を出力ファイル名の後に付加して、個別のトレース情報を出力します。
ログイン名
プロセスID
セションID
セション開始時間
RDBDSI = データベース名.DSI名[,データベース名.DSI名・・・]
アプリケーションで、DSIを限定したい表のDSI名を指定します。
アプリケーションでは、限定されたDSIを含む表に対しては、そのDSIだけがデータ操作の範囲となります。また、本実行パラメタの指定により、アプリケーション中での探索条件の記述が省略できます。なお、アプリケーションでDSIを限定していない表に対しては、データ操作をすることができます。
DSIを限定したい表のDSI名を指定します。
RDBDSO = DSO名[/[P][占有モード]][,DSO名[/[P][占有モード]]・・・]
アプリケーションで使用するDSOおよびその占有の単位、占有モードを指定します。RDBDSOが指定された場合、SET TRANSACTION文、クライアント用の動作環境ファイルのDEFAULT_ACCESS_MODEおよびDEFAULT_ISOLATIONは指定できません。
また、環境変数RDBRLOCK=YESを指定することはできません。
アプリケーションで使用するDSO名を以下の形式で指定します。
データベース名.DSO名
DSOの占有の単位をページとします。省略した場合は、占有の単位はDSIとなります。
DSO名に指定されたDSOにPRECEDENCE(1)が指定されている場合、本パラメタは指定できません。
占有のモードとして以下のいずれかを指定します。省略した場合は、EXが指定されたとみなします。
非共有モードの排他を行います。
共有モードの排他を行います。
RDBLOCK = DYNAM[,{WAIT | REJECT}]
あるトランザクションで資源にアクセスしようとしたとき、別のトランザクションがその資源を占有していた場合に、資源の占有が解除されるまで待つか否かを指定します。
この環境変数を指定する場合には必ず指定します。
資源の占有が解除されるまで待ちます。
エラーとしてアプリケーションに復帰します。
RDBLSQL = ({SQL88 | SQL92 | SQL95 | SQL96 | SQL2000 | SQL2007})
アプリケーションの予約語とSQL機能のレベルを設定します。
予約語とSQL機能のレベルを設定することで、キーワードの範囲と利用可能なSQLの機能を変更できます。
SQLの機能とそれを利用可能なレベルとの関係を以下に示します。
表に記載のない機能は、RDBLSQLに関係なく利用可能です。
RDBLSQL | SQLの機能 | |
---|---|---|
SQL2007 | 数値関数 | ACOS |
ASIN | ||
ATAN | ||
ATAN2 | ||
COS | ||
EXP | ||
LN | ||
POWER | ||
SIGN | ||
SIN | ||
SQRT | ||
TAN | ||
ASCII | ||
OCTET_POSITION | ||
データ列値関数 | LTRIM | |
RTRIM | ||
OCTET_SUBSTRING | ||
CHR | ||
日時値関数 | CNV_TIME | |
CNV_TIMESTAMP | ||
XMLQUERY関数 | ||
述語 | XMLEXISTS述語 | |
ROWNUM | ||
SQL2000以上 | ファンクションルーチン | |
ロール | ||
プロシジャ例外事象 | 条件宣言 | |
ハンドラ宣言 | ||
SIGNAL文 | ||
RESIGNAL文 | ||
SQL96以上 | トリガ | |
行識別子 | ||
並列指定 | ||
SQL95以上 | プロシジャルーチン | |
SQL92以上 | 定数 | 日時定数 |
時間隔定数 | ||
データ型 | 日時型 | |
時間隔型 | ||
BLOB型 | ||
順序定義 | ||
一時表定義 | ||
数値関数 | POSITION | |
EXTRACT | ||
CHAR_LENGTH | ||
CHARACTER_LENGTH | ||
OCTET_LENGTH | ||
データ列値関数 | SUBSTRING | |
UPPER | ||
LOWER | ||
TRIM | ||
日時値関数 | CURRENT_DATE | |
CURRENT_TIME | ||
CURRENT_TIMESTAMP | ||
CAST指定 | ||
CASE式 | NULLIF | |
COALESCE | ||
CASE | ||
結合表 | ||
カーソルのSCROLL指定 |
ポイント
SQL2007の関数名と同名のファンクションルーチンを定義している場合、関数とファンクションルーチンの動作の優先順位は以下になります。
ファンクションルーチン名へのスキーマ名修飾の有無 | RDBLSQL | |
---|---|---|
SQL2007 | SQL2000 | |
スキーマ名修飾有 | ファンクションルーチン | ファンクションルーチン |
スキーマ名修飾無 | 関数 | ファンクションルーチン |
SQL文にSQL2007の関数名と同名のファンクションルーチンを指定している場合、関数が優先して動作することで、ファンクションルーチンの結果と異なる結果になる場合があります。
ファンクションルーチンの動作を優先する場合は、RDBLSQLにSQL2000を指定するか、ファンクションルーチン名をスキーマ名修飾してください。
RDBMSG = E
RDBNCHAR = {EUC_S90|EUC_U90|EUC|COBOL_EUC_S90|COBOL_EUC_U90|COBOL_EUC|SJIS|UTF8|UCS2|UCS2B}
各国語文字列型のホスト変数、各国語文字列型の動的パラメタの文字コード系を指定します。この指定は、アプリケーションをC言語で記述している場合に有効です。
アプリケーションをC言語で記述している場合の、RDBCHARSETとRDBNCHARの関係を以下に示します。
| RDBNCHARの指定 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
RDBCHARSET | EUC | COBOL | EUC | EUC | COBOL | COBOL | SJIS | UTF8 | UCS2 | UCS2B |
EUC_S90 | ○ | × | × | × | ||||||
EUC_U90 | × | ○ | × | × | ||||||
EUC | ||||||||||
SJIS | × | × | ○ | × | ||||||
UTF8 | × | × | × | ○ |
○:有効
×:無効
データベースに格納される各国語文字列型データの文字コード系とRDBNCHARとの関係を以下に示します。
データベースの文字コード系 | RDBNCHARの指定 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
EUC_S90 | COBOL_EUC_S90 | EUC_U90 | EUC | COBOL_EUC_U90 | COLBOL_EUC | SJIS | UTF8 | UCS2 | UCS2B | |
EUCコードのS90コード | ○ | × | ○ | ○ | ||||||
EUCコードのU90コード | × | ○ | ○ | ○ | ||||||
シフトJISコード | ○ | ○ | ○ | ○ | ||||||
UNICODE | ○ | ○ | ○ | ○ |
○:指定可能
×:指定不可能
ホスト変数内文字列のデータの文字コード系がEUCコードのS90コードの場合に指定します。
ホスト変数内文字列のデータの文字コード系がEUCコードのU90コードの場合に指定します。EUCは互換として存在します。
ホスト変数内文字列のデータの文字コード系がEUCコードのS90コードのCOBOLの内部表現形式(COBOL_EUC)の場合に指定します。
ホスト変数内文字列のデータの文字コード系がEUCコードのU90コードのCOBOLの内部表現形式(COBOL_EUC)場合に指定します。COBOL_EUCは下位互換として存在します。
ホスト変数内文字列のデータの文字コード系がシフトJISコードの場合に指定します。
ホスト変数内文字列のデータの文字コード系がUTF-8形式の場合に指定します。
ホスト変数内文字列のデータの文字コード系がUCS-2形式の場合に指定します。
ホスト変数内文字列のデータの文字コード系がバイトスワップしたUCS-2形式の場合に指定します。
注意
アプリケーションをCOBOLで記述している場合は、本パラメタは無視されます。詳細は、“2.3.1 文字コード系の決定”を参照してください。
RDBOBJTB = ページ長,初期量[,拡張量,拡張契機]
格納構造定義を行わない表を作成する場合、OBJECT構造の表のデータ格納域の割付け量、ページ長などを指定します。単位はキロバイトです。
データ格納域のページ長を指定します。必ず32を指定します。
データ格納域の初期量を2~2097150の範囲で指定します。
データ格納域の拡張量を1~2097150の範囲で指定します。省略した場合は、32768が指定されたとみなします。
データ格納域の拡張を行うタイミングとして、表のDSIの空き容量を0~2097150の範囲で指定します。つまり、表のDSIの空き容量がここで指定した値になると、表のデータ格納域の拡張が行われます。省略した場合は、0が指定されたとみなします。
注意
自動容量拡張の拡張量と拡張契機は、ページ長単位に繰り上げますので、ページ長の倍数で指定してください。
RDBODBIX = ベース部ページ長,インデックス部ページ長,ベース部初期量,インデックス部初期量[,拡張量,拡張契機]
格納構造定義を行わないインデックスを作成する場合、インデックスのベース部とインデックス部の割付け量、ページ長などを指定します。単位はキロバイトです。
ベース部のページ長を1、2、4、8、16、32の中から指定します。
インデックス部のページ長を1、2、4、8、16、32の中から指定します。
ベース部の初期量を2~2097150の範囲で指定します。
インデックス部の初期量を2~2097150の範囲で指定します。
ベース部の拡張量を1~2097150の範囲で指定します。省略した場合は、10240が指定されたとみなします。インデックス部の拡張量は、ベース部の5分の1の値となります。
インデックスのベース部およびインデックス部の拡張を行うタイミングとして、DSIの空き容量を0~2097150の範囲で指定します。つまり、インデックスのDSIの空き容量がここで指定した値になると、インデックスのベース部とインデックス部の拡張が行われます。省略した場合は、3072が指定されたとみなします。
注意
自動容量拡張の拡張量と拡張契機は、ページ長単位に繰り上げますので、ページ長の倍数で指定してください。
ベース部の5分の1がインデックス部のページ長の倍数でない場合、インデックス部のページ長の倍数に繰り上げます。
インデックス定義時には、容量拡張を行いません。拡張量および拡張契機は、インデックス定義した後に有効となります。
RDBODBTB = ページ長,初期量[,拡張量,拡張契機]
格納構造定義を行わない表を作成する場合、表のデータ格納域の割付け量、ページ長などを指定します。単位はキロバイトです。
データ格納域のページ長を1、2、4、8、16、32の中から指定します。
データ格納域の初期量を2~2097150の範囲で指定します。
データ格納域の拡張量を1~2097150の範囲で指定します。省略した場合は、10240が指定されたとみなします。
データ格納域の拡張を行うタイミングとして、表のDSIの空き容量を0~2097150の範囲で指定します。つまり、表のDSIの空き容量がここで指定した値になると、表のデータ格納域の拡張が行われます。省略した場合は、3072が指定されたとみなします。
注意
自動容量拡張の拡張量と拡張契機は、ページ長単位に繰り上げますので、ページ長の倍数で指定してください。
RDBODBTY = {SEQUENTIAL | OBJECT}
格納構造定義を行わない表を作成する場合に、Symfoware/RDBが自動的に生成する表のDSOの格納構造を選択します。本パラメタにより格納構造の選択ができるのは、表の形式が以下の条件をすべて満たしている場合のみです。
表の最後に1つだけ、BLOB型でサイズに32キロバイト以上を指定している場合
BLOB型以外の列は固定長属性の場合
BLOB型の列にNOT NULL制約を指定している場合
上記以外の場合は、表のDSOはSEQUENTIAL型となります。
表のDSOとしてSEQUENTIAL格納構造のDSOを定義します。
表のDSOとしてOBJECT格納構造のDSOを定義します。
RDBPSCAN = {YES | NO}
アプリケーション単位またはコネクション単位に、データベースを並列に検索するか否かを指定します。
データベースを並列に検索します。この場合、そのアプリケーションの問合せを並列検索で実行できます。ただし、以下のいずれかの条件を満たす場合、並列検索は実行されず従来のアクセス手順でデータベースをアクセスします。
表がDSI分割されていない、または1つのDSIに対するアクセスの場合
クラスタキーを利用したデータベースアクセスが可能な場合
探索条件にROW_IDを指定した検索の場合
インデックスを利用したデータベースアクセスが可能な場合
データベースを並列に検索しません。
RDBRCVL = {RCV | NRCV}
RDBRLOCK = {YES | NO}
占有の単位を行とします。このパラメタを指定した場合、環境変数RDBDSOおよび動作環境ファイルのDSO_LOCKパラメタを指定することはできません。
占有の単位は、RDBDSOの指定に従います。このパラメタを指定し、かつRDBDSOが指定されていない場合は、Symfoware/RDBによって自動的に占有の単位が選択されます。
参照
占有の単位の詳細については、“アプリケーション開発ガイド(共通編)”の“排他制御”を参照してください。
注意
RDBRLOCKがNOの場合、動作環境ファイルのDEFAULT_ISOLATIONにREPEATABLE_READを指定、またはSET TRANSACTION文にREPEATABLE READを指定しても、独立性水準はSERIALIZABLEになります。
RDBRLOCKがYESの場合、動作環境ファイルのDEFAULT_ISOLATIONまたはSET TRANSACTION文にSERIALIZABLEを指定しても、独立性水準はREPEATABLE READになります。
データベース簡単運用でない場合、RDBRLOCKがNOのときには、DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造の表にアクセスするアプリケーションの占有の単位はDSIになります。
RDBRTRC = 出力レベル,ファイル名
ROUTINE_SNAP機能の出力レベルと、ファイル名を指定します。
ROUTINE_SNAP機能は、SQL手続き文の実行情報をファイルに出力する機能です。ROUTINE_SNAP機能の詳細および使用方法については、“7.2 アプリケーションのデバッグ”を参照してください。
出力する情報のレベルとして、1または2を指定します。省略した場合は、2が指定されたとみなします。出力レベルの指定と出力情報の対応については、“7.2.3 ROUTINE_SNAP機能の利用方法”を参照してください。
SQL手続き文の実行情報の出力先のサーバ側のファイル名を、絶対パスで指定します。指定されたファイルがすでに存在する場合は、情報を追加して出力します。
複数のアプリケーションが動作する場合は、環境変数RDBDIVTRCの指定により、出力ファイル名の後にプロセスIDなどの情報を付加して、個別のトレース情報を出力します。
アプリケーションがマルチスレッド環境で動作する場合は、RDBDIVTRCの指定に関係なく、出力ファイル名の後にプロセスIDやセションIDなどの情報を自動的に付加して、個別のトレース情報を出力します。
RDBSETCALLBACK = ライブラリ名
アプリケーションの起動時にコールバック関数を登録する場合、動的ライブラリ名を指定します。
動的ライブラリ名が絶対パスでの指定でない場合は、以下のディレクトリにライブラリを格納する必要があります。
Solaris/Linuxの場合
環境変数LD_LIBRARY_PATHに指定したディレクトリ
Windows(R)の場合
PATHに指定したディレクトリ
動的ライブラリ名を指定します。
RDBSMEM = メモリサイズ
ソート処理のために作業用ソート領域としてサーバ側で使用するメモリの大きさを指定します。この領域は、RDBプロセスのローカルメモリにセション単位に獲得されます。
ソート処理のデータ量が環境変数に指定した値を超えると、二次記憶の作業用ソート領域にデータを書き出し、書き出したデータのソートを行います。このとき、二次記憶からのソートデータの読み込み回数はソートデータの全体量と環境変数に指定した値に依存します。このため、ソートデータの全体量に応じて、環境変数に指定する値を見積もってください。
ソート処理のデータ量が環境変数に指定した値の1万倍以上になると、ソート処理で必要なメモリが不足し、「JYP2221E 実行時の制限値を超えました.code:“4”」のエラーとなる場合があります。ただし、メモリ上の作業域の必要最低限なサイズは、作業用ソート領域へのレコードの格納順に依存するため、環境変数に指定した値の1万倍は目安となります。
サーバ側で使用するメモリの大きさを64~2097150の範囲で指定します。単位はキロバイトです。
RDBTRAN = {SC | TC}
各プラットフォームのトランザクションの仕様に従います。
SQL文の実行がエラーとなった場合に、トランザクションをロールバックします。
RDBTRC = 出力レベル,ファイル名[,繰り返し幅]
SQL_SNAP機能の出力レベルと、出力先ファイル名を指定します。
SQL_SNAP機能は、アプリケーションが実行したSQL文の情報をファイルに出力する機能です。ROUTINE_SNAP機能の詳細および使用方法については、“7.2 アプリケーションのデバッグ”を参照してください。
注意
本機能の利用は性能に影響を与えるため、デバッグ作業が終了したら、本環境変数の設定を解除してください。
出力する情報のレベルとして、1から3または、PRC1、PRC2のいずれかを指定します。ただし、レベル2とレベル3の出力情報は同じです。出力レベルの指定と出力情報の対応については、“7.2 アプリケーションのデバッグ”を参照してください。
SQL_SNAP機能が出力するSQL文の実行情報の出力先ファイル名を指定します。ファイル名にディレクトリの指定がない場合は、カレントディレクトリが指定されたとみなします。指定されたファイルがすでに存在する場合は、情報を追加して出力します。
複数のアプリケーションが動作する場合は、環境変数RDBDIVTRCの指定により、出力ファイル名の後にプロセスIDなどの情報を付加して、個別のトレース情報を出力します。
アプリケーションがマルチスレッド環境で動作する場合は、RDBDIVTRCの指定に関係なく、出力ファイル名の後にプロセスIDやセションIDなどの情報を自動的に付加して、個別のトレース情報を出力します。
出力する情報の繰り返し幅として、1から32767を指定します。1つのSQL文の出力を1とします。繰り返し幅を指定した場合は、その幅でサイクリックに情報を出力します。省略した場合は、先頭からの情報をすべて出力します。
RDBWMEM = メモリサイズ
サーバ側で使用するメモリの大きさを64~2097150の範囲で指定します。単位はキロバイトです。