Solaris 9 Operating Enviroment J2S1-8280-01 PowerRDBconnector for NetCOBOL 1.0 説明書 PRIMEPOWERシリーズ
Solaris 9 Operating Enviroment
J2S1-8280-01
PowerRDBconnector for NetCOBOL 1.0 説明書
PRIMEPOWERシリーズ
まえがき
製品の呼び名について
本書に記載されている製品の名称を、以下のように略して表記します。オペレーティング・システムを総称
して、OSと記載しています。データベース製品を総称して、データベースと記載しています。
● PowerRDBconnector for NetCOBOL 1.0
「PowerRDBconnector」
● Solaris(TM) 9 Operating Environment
「Solaris」または、「Solaris 9 OE」
● Oracle9i Database Enterprise Edition Release 2
「Oracle」、「Oracle9i」または、「Oracle9i Database Enterprise Edition」
● Oracle9i Database Standard Edition Release 2
「Oracle」、「Oracle9i」または、「Oracle9i Database Standard Edition」
● Oracle Database 10g Release 1
「Oracle」、「Oracle10g」または、「Oracle Database 10g」
● NetCOBOL Base Edition 7.0
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Standard Edition 7.0
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Professional Edition 7.0
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Base Edition 運用パッケージ 7.0
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Standard Edition 運用パッケージ 7.0
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Base Edition 運用パッケージ 7.2
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Base Edition 開発・運用パッケージ 7.2
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Professional Edition 開発・運用パッケージ 7.2
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Standard Edition 運用パッケージ 7.2
「NetCOBOL」または、「NetCOBOL for Solaris」
● NetCOBOL Standard Edition 開発・運用パッケージ 7.2
「NetCOBOL」または、「NetCOBOL for Solaris」
PowerRDBconnectorについて
PowerRDBconnectorは、以下のオペレーティング・システムとデータベースで動作します。
製品名 オペレーティング・システム データベース
PowerRDBconnector for NetCOBOL 1.0 日本語Solaris 9 OE ● Oracle9i Release 2
● Oracle Database 10g
Release 1
i
本書の目的
本書は、PowerRDBconnector の製品概要および使用方法から注意事項について説明しています。
本書の読者
本書は、PowerRDBconnector の導入、環境設定および運用管理を行う方を対象としています。
本書を読むにあたり、以下について熟知している必要があります。
● COBOL及びNetCOBOL
● データベース及びOracle
● オペレーティング・システム及びSolaris
本書の構成
本書は、以下の章で構成されています。
第1章 導入前に
本製品を使用する際に考慮及び配慮することを説明します。
第2章 PowerRDBconnector とは
PowerRDBconnector の特長及び機能について説明します。
第3章 PowerRDBconnector の使用手引き
PowerRDBconnector の使用方法について説明します。
第4章 使用上の注意
本製品を使用する際の注意を説明します。
本書の読み方
本書は、PowerRDBconnector の使用方法について書かれています。
本製品を理解していただけるように、関連製品のオペレーション・システム(OS)、NetCOBOL及びデータベー
スに関する記載(設定方法、仕様など)をしていますが、関連製品が変更した場合に異なることがあります。
また、本書の中で関連製品のマニュアルを参照するように出来る限り記載していますが、すべてに個所で記
載していません。
関連製品に関する最新情報及び詳細情報は、必ず各関連製品のマニュアルを参照ください。
● COBOLに関しては、NetCOBOL及び関連製品のマニュアルを必ず参照してください。
● データベースに関しては、ご使用になるデータベース及び関連製品のマニュアルを必ず参照してください。
商標について
● MicrosoftおよびWindowsは、米国Microsoft Corporationの米国およびその他の国における登録商標です。
● Oracleは、米国Oracle Corporationの登録商標です。
● Sun、Sun Microsystems、Sunロゴ、SolarisおよびすべてのSolarisに関連する商標及びロゴは、米国およ
びその他の国における米国Sun Microsystems, Inc.の商標または登録商標です。
● UNIXは、米国およびその他の国におけるオープン・グループの登録商標です。本書に記載されている会社
名および製品名は、各社の商標または登録商標です。
● JavaおよびすべてのJava関連の商標およびロゴは、米国およびその他の国における米国Sun Microsystems,
Inc.の商標または登録商標です。
● その他、本書に記載されているシステム名、製品名などには必ずしも商標表示(TM、R)を付記していませ
ん。
高度な安全性が要求される用途への使用について
本製品は、一般事務用、パーソナル用、家庭用、通常の産業等の一般的用途を想定して開発・設計・製造され
ているものであり、原子力施設における核反応制御、航空機自動飛行制御、航空交通管制、大量輸送システム
における運行制御、生命維持のための医療用機器、兵器システムにおけるミサイル発射制御など、極めて高度
な安全性が要求され、仮に当該安全性が確保されない場合、直接生命・身体に対する重大な危険性を伴う用途
ii
(以下「ハイセイフティ用途」という)に使用されるよう開発・設計・製造されたものではありません。
お客さまは本製品を必要な安全性を確保する措置を施すことなくハイセイフティ用途に使用しないでくださ
い。 また、お客さまがハイセイフティ用途に本製品を使用したことにより発生する、お客様または第三者か
らのいかなる請求または損害賠償に対しても富士通株式会社およびその関連会社は一切責任を負いかねます。
インターネットでの使用について
本製品はインターネットへのサービスを提供する用途を想定して設計・製造されておりません。 インターネッ
トに接続しない環境(ローカルネットワークまたはイントラネット内)で使用するか、インターネットに接続
して使用する場合は、運用環境によりセキュリティ侵害対策を構築した上でご使用ください。
iii
iv
2004年8月
お願い
本書を無断で他に転載しないようお願いします。
本書は予告なしに変更されることがあります。
All Rights Reserved,Copyright(C) 富士通株式会社 2004
目次
第1章 導入前に考慮すること....................................................................... 1 1.1 本製品で実現できる性能..................................................................... 2 1.2 本製品で実現できる排他制御................................................................. 3 1.3 対象とする既存システム..................................................................... 4 1.4 データベース製品を使用する際の考慮......................................................... 5 1.5 本製品を使用する際の注意................................................................... 6
第2章 PowerRDBconnector とは..................................................................... 7 2.1 PowerRDBconnector の特長................................................................... 8 2.1.1 入出力文でデータベース・アクセス..................................................... 8 2.1.2 既存COBOLを再利用.................................................................... 9 2.1.3 データベースを活用したシステム構築................................................... 9
2.2 機能...................................................................................... 10 2.2.1 ファイルアクセス機能................................................................ 10 2.2.2 トランザクション機能................................................................ 11 2.2.3 排他制御............................................................................ 12 2.2.4 認証機能............................................................................ 12 2.2.5 機能範囲............................................................................ 13
2.3 システム構成.............................................................................. 18 2.3.1 運用形態............................................................................ 19
第3章 PowerRDBconnector の使用手引き............................................................ 21 3.1 環境設定.................................................................................. 22 3.1.1 PowerRDBconnector を構成する要素.................................................... 23 3.1.2 環境設定の手順...................................................................... 24 3.1.3 データベースの作成.................................................................. 27 3.1.4 PowerRDBconnector 動作環境ファイル.................................................. 35 3.1.5 COBOL初期化ファイル................................................................. 40
3.2 トランザクションの使用方法................................................................ 42 3.2.1 トランザクション.................................................................... 44
3.3 エラー時の対処............................................................................ 46 3.3.1 ファイルアクセス時のエラー情報...................................................... 47 3.3.2 トランザクションアクセス時のエラー情報.............................................. 54
第4章 使用上の注意.............................................................................. 57 4.1 性能に関する注意事項...................................................................... 58 4.1.1 データベースの準備.................................................................. 58 4.1.2 アプリケーションによる性能向上...................................................... 61
4.2 排他制御に関する注意事項.................................................................. 63 4.2.1 OPEN文での排他制御について(TableLock)............................................... 66 4.2.2 READ文での排他制御について(RecordLock).............................................. 68 4.2.3 アプリケーションが排他制御を考慮する場合............................................ 72
4.3 COBOLアプリケーションに関する注意事項..................................................... 73 4.3.1 ファイル識別名について.............................................................. 73 4.3.2 LOW-VALUE、HIGH-VALUEについて....................................................... 73 4.3.3 COBOLで扱えないデータ値との整合性について........................................... 74 4.3.4 データベースで扱えないデータ値との整合性について.................................... 74 4.3.5 キーに重複した値がある索引ファイルについて.......................................... 74
4.4 その他の注意事項.......................................................................... 75 4.4.1 レコード長不一致について............................................................ 75 4.4.2 キー値及びレコードの並び順について.................................................. 75 4.4.3 英数字項目と日本語項目のサイズ制限について.......................................... 75
v
vi
4.4.4 ビューの使用について................................................................ 75 4.4.5 読取り一貫性とデータ整合性について.................................................. 75 4.4.6 行(レコード)の格納位置について.................................................... 75 4.4.7 Oracleのバージョンを変更した際の対処について........................................ 76 4.4.8 トランザクションの終了状態について.................................................. 76 4.4.9 多重動作時の設定について............................................................ 76 4.4.10 インターネットでの使用について...................................................... 76
付録A 他製品のファイル資源...................................................................... 77 A.1 論理ファイル.............................................................................. 77
索引.............................................................................................. 79
1.1 本製品で実現できる性能
第1章 導入前に考慮すること
本章では、本製品を使用する際に考慮及び配慮することを説明します。この製品をはじめてお使
いになる方は、必ずお読みください。
1
第1章 導入前に考慮すること
1.1 本製品で実現できる性能
本製品は、データベース製品が提供するSQLアクセスインターフェースを使用して、COBOLアプリ
ケーションの入出力文を処理します。
そのため実現できる性能は、入出力文の処理論理を変更せずに、SQLアクセスインターフェース
でアクセスした場合と同等です。
入出力文を直接サポートしているファイルシステム系製品の入出力文COBOLアプリケーションと
同等の性能は得られません。
データベースに対するチューニングは必要です。
データ検索では、COBOLの索引ファイルのレコードキーに対応するデータベースのインデックス
が必要です。
データベースでデータ更新を行うと、データベースではデータ保証のため、履歴管理で管理され
ている履歴ファイル(OracleはREDOログ、UNDO領域、アーカイブREDOログ)にも更新が行われま
す。そのため、履歴管理の無いファイルシステム系製品と同等の更新性能が得られません。
データ更新を性能向上させるには、トランザクションを適用して、更新データをトランザクショ
ン単位でまとめてコミットする必要があります。
2
1.2 本製品で実現できる排他制御
1.2 本製品で実現できる排他制御
データベースでは、排他制御のメカニズムがファイルシステム系製品と大きく異なります。また、
データベース製品同士でも異なります。
使用するデータベース製品の排他制御を理解する必要があります。
Oracleでは、排他を維持する区間がトランザクション単位のみとなるため、トランザクションの
適用が必須となります。
重要:本製品は、排他制御を実現するために強制的にトランザクションを操作してテーブル又は
レコードに対してロックを行います。詳しくは、「4.2 排他制御に関する注意事項」を参照して
ください。
3
第1章 導入前に考慮すること
1.3 対象とする既存システム
本製品は、データベース製品を使用して、既存システムの入出力文COBOLアプリケーションをSQL
文COBOLアプリケーションに書き直さずに再活用することを目的としたもので、以下の既存シス
テムの入出力文COBOLアプリケーションを対象としています。
● 中小規模のシステム
● 旧既存システムからの入出力文COBOLアプリケーションの再活用
● CSP/FX(FX-RDB)、ASP(RDB/6000、Symfoware6000)、UXP/DS(RDB/7000、SymfoWARE7000)か
らの移行
4
1.4 データベース製品を使用する際の考慮
1.4 データベース製品を使用する際の考慮
データベース製品を使用するには、データベースに熟知し、高い技術力を持つ技術者である必要
があります。データベースを理解せずに業務を設計すると、設計後に大きな見直しが必要となり
ます。
5
第1章 導入前に考慮すること
1.5 本製品を使用する際の注意
本製品を使用する上で性能、排他制御、プログラミングなどで考慮が必要です。
たとえば、ファイルアクセス系製品とは、データ値の扱いが異なります。データベースでは、文
字データ型には文字のみ、数字データ型には数値のみが格納可能なため、データ値のチェックを
行います。一方、COBOLではプログラミングの仕方で、数字データ型に文字が設定されることが
あります。
そのようなデータ操作はできないため、アプリケーションの修正が必要になります。
詳しくは、「第4章 使用上の注意」を参照してください。
6
1.5 本製品を使用する際の注意
第2章 PowerRDBconnector とは
本章では、PowerRDBconnector の特長及び機能について説明します。
7
第2章 PowerRDBconnector とは
2.1 PowerRDBconnector の特長
この節では、PowerRDBconnector の特長について説明します。PowerRDBconnector には以下の特
長があります。
● 入出力文でデータベース・アクセス
● 既存COBOLアプリケーションを再利用
● データベースを活用したシステム構築
2.1.1 入出力文でデータベース・アクセス
PowerRDBconnector は、入出力文COBOLアプリケーションのOPEN、START、READ、REWRITE、WRITE、
CLOSEといった入出力文でデータベースのテーブル、ビューにアクセスが行えます。
テーブル ビュー
OPEN READ WRITE CLOSE
入出力文COBOLアプリケーション データベース
データベースに対して COBOLの入出力文インターフェースで
ファイルアクセスを行えます。
インデックス
図1.1 入出力文でデータベース・アクセス
8
2.1 PowerRDBconnector の特長
2.1.2 既存COBOLを再利用
SQL文でSQL文COBOLアプリケーションに書き直さなくても、従来の入出力文COBOLアプリケーショ
ンで、データベース(テーブル、ビュー)にファイルアクセスを行えるため、従来のCOBOLアプ
リケーションコードを再利用できます。
従来のCOBOLアプリケーションコードで再利用
例えば、ファイルシステムからデータファイルをデータベースにデータ移行し、入出力文COBOL
アプリケーションを再利用してデータベースにアクセスすることができます。
物
なお、
4章 使
2.1.3 デ
データ
COBOL業
COBOLアプリケーション
SQLへの書直し不要
OPEN READ WRITE CLOSE
キー
ファイルシステム
理ファイル 論理ファイル
データ移行
図1.2 既存COBOLを再利用
入出力文COBOLアプリケーションのプログラミング上の注意点が
用上の注意」を参照してください。
ータベースを活用したシステム構築
ベース機能を活用して、バックアップ、リカバリ、クラスタシス
務システムを構築できます。
COBOLアプリケーション
OPEN READ WRITE CLOSE
テー
あ
テ
データベース
インデックス
ビュー ブル
ります。詳しくは、「第
ムなどで堅牢性のある
9
第2章 PowerRDBconnector とは
2.2 機能
この節では、PowerRDBconnector の機能について説明します。
● ファイルアクセス機能
● トランザクション機能
● 排他機能
● 認証機能
● 機能範囲
2.2.1 ファイルアクセス機能
データベース(テーブル又はビュー)に対して、COBOLファイルアクセス(順ファイル、索引フ
ァイル)を行うことができます。
表1.1 ファイルアクセス機能
編成
ORGANIZATION
アクセスモード
ACCESS MODE データベースオブジェクト
SEQUENTIAL SEQUENTIAL(順呼出し) テーブル、ビュー
SEQUENTIAL(順呼出し)
RANDOM(乱呼出し) INDEX
DYNAMIC(動呼出し)
テーブル、ビュー、インデックス
テー
索引アクセス
入出力文COBOLアプリケーション
順
図1.3 ファイルアクセス機能
10
データベース
アクセスインデックス
ブル ビュー
2.2 機能
2.2.2 トランザクション機能
COBOLファイルアクセスに対して、トランザクション操作(開始、終了、取消し)を行うことが
できます。
COBOLアプリケーション
OPEN トランザクション開始命令 READ WRITE トランザクション終了命令 トランザクション開始命令READ WRITE トランザクション取消し命令
トランザクション開始
データベース
重要:本製品は、排他制御
レコードに対してロックを
ください。
トランザクション
トランザクション開始
トランザクション終了
インデックス
テーブル ビュー
トランザクション
トランザクション取消し
図1.4 トランザクション機能
を実現するために強制的にトランザクションを操作してテーブル又は
行います。詳しくは、「4.2 排他制御に関する注意事項」を参照して
11
第2章 PowerRDBconnector とは
2.2.3 排他制御
排他制御を実現するために強制的にトランザクションを操作してテーブル又はレコードに対し
てロックを行います。詳しくは、「4.2 排他制御に関する注意事項」を参照してください。
● I-OオープンのREAD文でのレコードに対するロック
● OPEN文でのテーブルに対するロック
2.2.4 認証機能
以下の方法で認証できます。
● OS認証
データベースのオペレーション・システム認証機能を使用して認証します。
● データベース認証
データベースのデータベース認証機能を使用して認証します。
12
2.2 機能
2.2.5 機能範囲
利用できる機能範囲を説明します。
2.2.5.1 COBOLアプリケーションの機能範囲
利用できるCOBOLアプリケーションの機能範囲を以下に示します。
表1.2 COBOLアプリケーションの機能範囲
分類 項目 利用可否
レコード順ファイル ○
相対ファイル × ファイル ファイル
編成
索引ファイル ○
固定長レコード形式 ○ レコード
形式 可変長レコード形式 × レコード
レコードの 大長(バイト数) 32,760
SELECT句 OPTIONAL指定 ×
ファイル識別名指定 ○
ファイル識別名定数指定 ○ ASSIGN句
データ名指定 ○
FILE STATUS句 ファイル状態 ○
AUTOMATIC ×
EXCLUSIVE × LOCK MODE句
MANUAL ×
RECORD KEY句 ○
ALTERNATE
RECORD KEY句指定できるキーの 大個数 98
英数字 ○
日本語 ○
符号なし外部10進数 ○
符号付き外部10進数 ○
符号なし内部10進数 ○
符号付き内部10進数 ○
ファイル
機能
ファイル
管理記述項
レコード
キーの項目
符号なし2進数 ○
13
第2章 PowerRDBconnector とは
符号付き2進数 ○
多重項目キー ○
OPEN文 ○
CLOSE文 ○
READ文 ○
WRITE文 ○
REWRITE文 ○
START文 ○
文
DELETE文 ○
プロセス(シングルスレッド) ○ プログラミング スレッド
マルチスレッド ×
開始 ○
終了 ○ 操作
取消し ○
トランザクション
分離レベル ReadCommitted
テーブルロック ○ 排他制御 対象
レコードロック ○
1プロセス(シングルスレッド)で可能な 大オープン数 600
1システムで可能な 大多重実行数 1,000
● 相対ファイル
COBOLファイルシステムの相対ファイルなどの使用を検討してください。
● ASSIGN句
ASSIGN句はファイル識別名で行い、「3.1.5 COBOL初期化ファイル」に指定することを推奨
します。なお、PowerRDBconnectorではファイル識別名を一意の名前で指定してください。
● FILE STATUS句
FILE STATUS 02 は返却しません。
● ALTERNATE RECORD KEY句
指定できるキーの 大個数は、RECORD KEY句と合わせて99個です。
● トランザクション操作
トランザクション操作をするには、CALL文で PowerRDBconnector が提供するトランザク
ションサブルーチンを呼び出します。
● 排他制御
テ ー ブ ル ロ ッ ク 又 は レ コ ー ド ロ ッ ク を 指 定 し ま す 。 指 定 方 法 は 、「 3.1.4
PowerRDBconnector 動作環境ファイル」を参照してください。
● 1システムで可能な 大多重実行数
同時実行できる 大多重実行数は、アプリケーションの処理内容(入出力文回数)、デー
タベース及び使用するハードウェア(CPU、ハードディスク能力)の要件に依存します。
たとえば、バッチプログラムの大量データ処理は、高負荷となるため、多重実行に耐えら
14
2.2 機能
れません。
15
第2章 PowerRDBconnector とは
2.2.5.2 参考:データベースの機能範囲
ここでは、データベースの機能範囲を入出力文COBOLの機能範囲に置き換えて説明します。
これは、あくまで参考程度の説明です。詳細は、データベース製品のマニュアルを参照してくだ
さい。
表1.2.1 参考:データベースの機能範囲
分類 項目 Oracle
ファイル定義ツール SQL*Plus
ユーティリティなど
ファイルの 大サイズ
(バイト数) 無制限
ファイル
ファイルの 大数 無制限
レコードの 大長(バイト数) 2,000,000
レコード内の 大項目数(列数) 1,000
レコード
レコードの 大数(行数) 無制限
指定できる項目の 大
個数 32
RECORD KEY句
指定できる項目総長の
大(バイト数) 設定依存
指定できるキーの 大
個数 無制限
指定できる項目の 大
個数 32
ALTERNATE
RECORD KEY句
指定できる項目総長の
大(バイト数) 設定依存
ファイル
管理記述項
多重項目キーに定義できる 大列数32
トランザクション ○
リカバリ ○
バックアップ ○
1テーブルに定義できるインデックス数 無制限
1プロセス(シングルスレッド)で
可能な 大オープン数 設定依存
ファイル
機能
1システムで可能な 大オープン数 特に記載
なし
16
2.2 機能
● Oracleでの機能範囲について
Oracleのマニュアルをもとに記載しています。詳しくは、Oracleが提供している情報を参
照してください。
1) ファイルの 大数
Oracleのマニュアルに無制限と記載されているため、無制限と記載しています。
2) レコードの 大長(バイト数)
Oracleがサポートする行長が大きいが、PowerRDBconnectorがサポートするレコー
ドの 大長(32,760バイト)に制限されます。
3) レコードの 大数(行数)
Oracleのマニュアルに無制限と記載されているため、無制限と記載しています。
4) キーに指定できる項目の 大個数
Oracleのマニュアルに32と記載されているため、32と記載しています。
5) キー指定できる項目総長の 大(バイト数)
Oracleのデータ・ブロックのサイズ(初期化パラメーター DB_BLOCK_SIZE によっ
て指定される)に依存します。
6) 指定できるキーの 大個数
Oracleのマニュアルに無制限と記載されているため、無制限と記載しています。
7) 1プロセス(シングルスレッド)で可能な 大オープン数
1セッション当たりの制限は、Oracleの初期化パラメーター OPEN_CURSORS に依存
します。
17
第2章 PowerRDBconnector とは
2.3 システム構成
PowerRDBconnector は、以下の製品が必要です。
表1.3 システム構成
OS 以下のいずれかの製品が必要です。
● Solaris 9 OE
COBOL
以下のいずれかの製品が必要です。
● NetCOBOL Base Edition 7.0
● NetCOBOL Standard Edition 7.0
● NetCOBOL Professional Edition 7.0
● NetCOBOL Base Edition 開発・運用パッケージ 7.2
● NetCOBOL Standard Edition 開発・運用パッケージ 7.2
● NetCOBOL Professional Edition 開発・運用パッケージ 7.2 開発
データベース
以下のいずれかの製品が必要です。
● Oracle9i Database Enterprise Edition Release 2
新パッチ(PSR9.2.0.5以降)を適用してください。
● Oracle9i Database Standard Edition Release 2
新パッチ(PSR9.2.0.5以降)を適用してください。 ● Oracle Database 10g Release 1
OS 以下のいずれかの製品が必要です。
● Solaris 9 OE
COBOL
以下のいずれかの製品が必要です。
● NetCOBOL Base Edition 運用パッケージ 7.0
● NetCOBOL Standard Edition 運用パッケージ 7.0
● NetCOBOL Base Edition 運用パッケージ 7.2
● NetCOBOL Standard Edition 運用パッケージ 7.2 運用
データベース
以下のいずれかの製品が必要です。
● Oracle9i Database Enterprise Edition Release 2
新パッチ(PSR9.2.0.5以降)を適用してください。
● Oracle9i Database Standard Edition Release 2
新パッチ(PSR9.2.0.5以降)を適用してください。 ● Oracle Database 10g Release 1
18
2.3 システム構成
2.3.1 運用形態
本製品は、NetCOBOLが動作するサーバコンピュータにインストールし、各端末から使用します。
開発:開発系製品
運用:運用系製品
リモート端末
(X Window)
WWW フ ゙ ラ ウ サ ゙
(MeFt/Web)
コンソール端末
製品本体
Oracle Database
PowerRDBconnector for
NetCOBOL
NetCOBOL
COBOL アプリケーション
図1.5 運用形態
19
第2章 PowerRDBconnector とは
20
2.3 システム構成
第3章 PowerRDBconnector の使用手引き
本章では、PowerRDBconnector の使用方法について説明します。
21
第3章 PowerRDBconnector の使用手引き
3.1 環境設定
この節では、PowerRDBconnector を構成する環境について説明します。
● PowerRDBconnector を構成する要素
● 環境設定の手順
● データベースの作成
● PowerRDBconnector 動作環境ファイル
● COBOL初期化ファイル
22
3.1 環境設定
3.1.1 PowerRDBconnector を構成する要素
PowerRDBconnector を構成する要素は以下のようになります。
DBプロバイダー
PowerRDBconnec
入出力文COBOアプリケーショ
データベース
ビュー
インデックス
テーブル
データベース製品
図2.1 PowerRDBconnector を構成
各構成要素を以下に示します。
表2.1 PowerRDBconnector を構成
入出力文COBOLアプリケーション 入出力文でファイ
COBOL初期化ファイル COBOLアプリケーシ
ァイル
PowerRDBconnector 動作環境ファイル PowerRDBconnecto
イル
PowerRDBconnector 入出力文インター
る本ソフトウェア
DBプロバイダー
データベースをア
ンターフェース
Oracle Call Inte
データベース PowerRDBconnecto
テーブル データファイルに
Oracleでは、表と
ビュー 索引ファイルに相
インデックス レコードキーに相
Oracleでは、索引
COBOL 初期化ファイル (COBOL.CBR)
PowerRDBconnector 動作環境ファイル (DBIO_ENV)
tor
Lン
COBOL製品
する要素
する要素
ルアクセスするCOBOLアプリケーション
ョンの実行情報を格納するテキストフ
r の動作環境を格納するテキストファ
フェースでデータベースをアクセスす
クセスするデータプロバイダー又はイ
rface(OCI)を使用します。
r がサポートするデータベース
相当するデータベースオブジェクト
呼んでいます。
当するデータベースオブジェクト
当するデータベースオブジェクト
と呼んでいます。
23
第3章 PowerRDBconnector の使用手引き
3.1.2 環境設定の手順
必要な環境設定の手順を説明します。
NetCOBOL製品
のインストール
NetCOBOL製品をインストールします。詳しくは、NetCOBOL製品のマ
ニュアルを参照してください。
↓
データベース製品
のインストール
データベース製品をインストールします。
● Oracle Call Interface(OCI)はインストールの既定値で
選択されています。非選択としないでください。
● OS認証を行う場合は、Oracleに設定が必要です。
― REMOTE_LOGIN_PASSWORDFILE 初期化パラメーターが
NONE に設定されていることを確認します。
― オペレーティング・システムに定義されたOSDBA 又は
OSOPER グループに追加したユーザーを使用します。
詳しくは、Oracleのマニュアルを参照してください。なお、
Oracleの 新パッチ(PSR9.2.0.5以降)を適用してください。
↓
PowerRDBconnector
のインストール
PowerRDBconnector をインストールします。
詳しくは、製品CDに添付されているインストールガイド
(D23QRK-0100-1.pdf)を参照してください。
↓
環境の確認
PowerRDBconnector は、NetCOBOL及びデータベースの実行環境(環
境変数など)が正しく設定されたプロセス上で動作できます。正し
く設定されているか確認してください。PowerRDBconnectorは、シ
ステム既定環境(/usr/lib 及び /usr/bin)で動作します。
NetCOBOL 各種の環境変数(PATH、LD_LIBRARY_PATH、LANG)
などの設定が必要です。詳しくは、NetCOBOL製品
のマニュアルを参照してください。
Oracle 各種の環境変数(PATH、ORACLE_BASE、
ORALCE_HOME、ORACLE_SID、ORACLE_NLS33、
LD_LIBRARY_PATH、LD_LIBRARY_PATH_64、LANG、
NLS_LANG)などの設定が必要です。なお、Oracle
の32ビット版と64ビット版でLD_LIBRARY_PATH、
LD_LIBRARY_PATH_64の設定が異なります。詳しく
は、Oracleのマニュアルを参照してください。
↓
24
3.1 環境設定
データベースの作成
入出力文COBOLアプリケーションからアクセスするテーブル及びビ
ューを作成します。
インデックス作成と 適化も必ず行ってください。
↓
PowerRDBconnector
動作環境ファイル
の作成
PowerRDBconnector の動作環境ファイルを作成します。
↓
入出力文
COBOLアプリケーション
の準備
入出力文COBOLアプリケーションを準備します。
COBOLアプリケーションの作成/コンパイル方法は、NetCOBOLのマニ
ュアルを参照してください。
COBOLアプリケーションのリンクはOracleの仕様で、以下のように
行います。
● Oracleが提供しているライブラリ(OCIライブラリ)との動的
リンク指定が必要です。
例:
ld -dy –o P1 P1.o –lclntsh
トランザクションを使用する場合は、さらにトランザクショ
ンサブルーチンの動的リンク指定が必要です。
例:
ld -dy –o P1 P1.o –lclntsh –lXITRN
ldはNetCOBOLのリンクコマンドです。-dyは動的リンクの指定
です。”-o P1”は出力ファイルの指定です。”P1.o”は入力
ファイルの指定です。-lclntshはOracleが提供しているライ
ブラリ(OCIライブラリ)とのリンク指定です。–lXITRNはトラ
ンザクションサブルーチンのリンク指定です。
↓
COBOL初期化ファイル
の作成
入出力文COBOLアプリケーションの実行に必要なCOBOL初期化ファ
イルを作成します。
↓
25
第3章 PowerRDBconnector の使用手引き
COBOLアプリケーション
の実行
入出力文COBOLアプリケーションを実行します。
26
3.1 環境設定
3.1.3 データベースの作成
COBOLで定義されているファイルに対応するデータベースオブジェクト(テーブル又はテーブル
とビュー)を作成します。
フ
FILE-CONTROL.
SELECT T1 AS
OR
AC
RE
RE
FILE SECTION.
FD T1.
01 REC.
02 C1
02 C2
02 C3
02 GRP.
03 C4
03 C5
02 C6
02 C7
02 C7GRP
03 C7R1
03 C7R2
ァイル定義
SIGN TO FILE1
GANIZATION IS INDEXED
CESS MODE IS RANDOM
CORD KEY IS C1
CORD FORMAT IS REC.
PIC X(10).
PIC N(10).
PIC 9(4) PACKED-DECIMAL.
PIC S9(5) COMP.
PIC X(3).
PIC X(2) OCCURS 2.
PIC X(5).
REDEFINES C7.
PIC X(2).
PIC S9(4).
データベース
ビュー
インデックス
テーブル
作成
図2.2 データベースの作成
27
第3章 PowerRDBconnector の使用手引き
3.1.3.1 作成手順
以下の手順を参考に作成します。正しく作成しないと動作できませんので、注意して作成してく
ださい。
SQL定義文の作成
1. テーブル名
TableNameプロパティに設定できる任意の名前にします。
2. ファイル構成
レコードキーが定義されたファイルは、インデックス又はプ
ライマリキーを定義します。「表2.2 ファイルからテーブル又
はビューの対応」を参考にデータベースオブジェクトを構成
します。
3. レコード構成
ファイル記述項(FD句)のレコード記述項に定義したデータ
本来の格納形式を定義した基本項目からテーブル又はビュー
の列を定義します。「表2.3 COBOLデータ定義とDBデータ定義
の対応」を参考に列定義(データ型、列名)を構成します。
なお、列には NOT NULL制約を定義してください。
↓
SQL定義文の実行
作成したSQL定義文を実行します。
Oracle SQL*Plus ユーティリティで実行できます。
28
3.1 環境設定
3.1.3.2 ファイルからテーブル又はビューの対応
ファイルからテーブル又はビューの対応を以下に示します。ビューの構成は、「ファイルからテー
ブル又はビューの作成例」で記載されている範囲の1つのテーブルで構成された単一ビューで使
用してください。なお、ビューに関数、表結合、副問合せなどが定義されている場合は動作でき
ません。
表2.2 ファイルからテーブル又はビューの対応
ファイル編成 データベースオブジェクト コメント
順ファイル
以下のいずれかで作成
● テーブルで作成
● テーブルとビューで作成
テーブルのみで作成する場合は、テーブルの列名
は「表2.3 COBOLデータ定義とDBデータ定義の対
応」で定めた列名にする必要があります。
テーブルとビューで作成すると、テーブルの列名
を任意の名前で作成できます。
索引ファイル
以下のいずれかで作成
● インデックス又はPRIMARY
KEY付きテーブル ● 上記のテーブルを導出元に
したビュー
テーブルのみで作成する場合は、テーブルの列名
は「表2.3 COBOLデータ定義とDBデータ定義の対
応」で定めた列名にする必要があります。
テーブルとビューで作成すると、テーブルの列名
を任意の名前で作成できます。
RECORD KEY句にあたる列にインデックス又は
PRIMARY KEYを設定します。
UNIQUE属性は、RECORD KEY句に合わせます。
インデックス付きテーブルを導出元にしたビュー
でも索引ファイルとしてアクセスできます。
29
第3章 PowerRDBconnector の使用手引き
3.1.3.3 列定義の対応
列定義の対応を以下に示します。
表2.3 COBOLデータ定義とDBデータ定義の対応
COBOL定義 DBデータ定義
PICTURE句 項目
の
種類
USAGE句
符号 精 度
(p)
位 取 り
(s)
データ型 列名
なし 1~18 0~18 NUMBER(p,s) <任意の文字列>_UNSIGN_NUMERIC 又は <任意の文字列>_UNUM
DISPLAY
(外部10進)
あり 1~18 0~18 NUMBER(p,s) <任意の文字列>_NUMERIC 又は <任意の文字列>_NUM
なし 1~18 0~18 NUMBER(p,s) <任意の文字列>_UNSIGN_DECIMAL 又は <任意の文字列>_UDEC
数字
項目
PACKED-DECIMAL
(内部10進)
あり 1~18 0~18 NUMBER(p,s) <任意の文字列>_DECIMAL 又は <任意の文字列>_DEC
1~4 --- NUMBER(p,0) <任意の文字列>_UNSIGN_SMALLINT 又は <任意の文字列>_USINT
5~9 --- NUMBER(p,0) <任意の文字列>_UNSIGN_INTEGER 又は <任意の文字列>_UINT
なし
10~18 --- NUMBER(p,0) <任意の文字列>_UNSIGN_BIGINT 又は <任意の文字列>_UBINT
1~4 --- NUMBER(p,0) <任意の文字列>_SMALLINT 又は <任意の文字列>_SINT
5~9 --- NUMBER(p,0) <任意の文字列>_INTEGER 又は <任意の文字列>_INT
整数
項目
COMP,
COMPUTATIONAL,
BINARY
(2進)
あり
10~18 --- NUMBER(p,0) <任意の文字列>_BIGINT 又は <任意の文字列>_BINT
p --- CHAR(p) 英数字
項目 X(英数字) ---
p --- NCHAR(p)
<任意の文字列>_CHAR 又は <任意の文字列>_CHR
p --- CHAR(p×2) 日本語
項目 N(日本語) ---
p --- NCHAR(p)
<任意の文字列>_NCHAR 又は <任意の文字列>_NCHR
精 度
(p)
: 精度は、全体桁数及び項目の長さ(文字数)です。
位取り
(s)
: 位取りは、小数部の桁数です。
1) COBOLのレコード記述項のレコード長とテーブルの行長でCOBOLがチェックします。必ず、レコード記述項に合
わせて列を定義してください。 2) 必ず、RECORD KEY句に定義したキーに適切なインデックスを定義してください。 3) COBOLのレコード記述項に定義したOCCURS句は、繰り返された基本項目が列になります。 4) COBOLのレコード記述項に定義したREDEFINES句は、データ本来の格納形式を定義した基本項目を列としてくだ
さい。
30
3.1 環境設定
5) COBOLで扱えるデータが格納されるようにしてください。
入出力文COBOLアプリケーション以外の各種のアプリケーション、ユーティリティとテーブルを併用する際は、
以下の注意が必要です。
1. 符号無し数字項目にマイナス値が格納されてしまうことがあります。
符号無し数字項目でマイナス値は扱えません。
マイナス値を制限したい場合は、CHECK制約などで制限することがデータベースの機能で可能です。
2. 整数項目の精度(p)より大きい整数値が格納されてしまうことがあります。
整数値の範囲を制限したい場合は、CHECK制約などで制限することがデータベースの機能で可能です。
3. NULL値が格納されてしまうことがあります。
NULL値は扱えません。NULL値を制限したい場合は、NOT NULL制約などでNULL値を制限することがデータベ
ースの機能で可能です。
4. N項目に半角文字でREADされてしまうことがあります。
N項目に対応したCHAR又はNCHARに半角文字が格納されていると、N項目で半角文字を扱わない NetCOBOL
で半角文字が READ されます。
半角文字を制限したい場合は、CHECK制約などで半角文字を制限することがデータベース機能で可能です。
6) 文字セットは、NetCOBOLの文字コードとデータベースの文字コードを一致させて使用してください。データ型
及び文字コードの組合せを以下に示します。
表2.3.2 文字セットの組合せ
NetCOBOL Oracle 文字セット
データ型 文字コード データ型 文字コード
X項目 SJIS CHAR JA16SJIS
SJIS N項目
SJIS
(全角のみ)CHAR JA16SJIS
X項目 EUC CHAR JA16EUC
EUC N項目
EUC
(全角のみ)CHAR JA16EUC
1) 文字セットが一致しない場合は、Oracleが自動的に文字コード変換を行います。
2) 文字セットの設定方法は、NetCOBOL及びデータベースのマニュアルを参照してください。
なお、EUCコード系を使用する場合は、( ja 又は ja_JP.eucJP)で行ってください。 7) 作成できるテーブル及びビューの制限値( 大テーブル数、 大テーブルサイズ、 大行長、 大列数、 大
列長、 大列名長など)は、データベースのマニュアルを参照してください。 8) PowerRDBconnector は、以下の仕様で文字列の後ろの空白を扱います。
入出力文COBOLアプリケーション 列名
READ文 WRITE文 及び REWRITE文
“_CHAR” 半角空白でパディングします。 データベースがパディングします。
“_NCHAR” 全角空白でパディングします。 データベースがパディングします。
9) データベースの仕様で、英数字項目及び日本語項目で定義するデータベースの精度(p)は以下のサイズ制限と
なります。
Oracle 項目の種類
データ型 サイズ
英数字項目 CHAR 2,000バイト
日本語項目 NCHAR 2,000バイト
31
第3章 PowerRDBconnector の使用手引き
ファイルからテーブル又はビューの作成例
以下にファイルからテーブル又はビューの作成例を説明します。
1. 以下のファイル記述項(FD句)のレコード記述項をもとにテーブルを作成します。
ファイル記述項(FD句)のレコード記述
FILE-CONTROL.
SELECT T1 ASSIGN TO FILE1
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS C1
RECORD FORMAT IS REC.
FILE SECTION.
FD T1.
01 REC.
02 C1 PIC X(10).
02 C2 PIC N(10).
02 C3 PIC 9(4) PACKED-DECIMAL.
02 GRP.
03 C4 PIC S9(5) COMP.
03 C5 PIC X(3).
02 C6 PIC X(2) OCCURS 2.
02 C7 PIC X(6).
02 C7GRP REDEFINES C7.
03 C7R1 PIC X(2).
03 C7R2 PIC S9(4).
2. レコード記述項のレコード構造のレイアウトは以下のようになります。
太字のデータ項目が 下位レベル番号の基本項目になります。
レコード構造
GRP C7GRP X(6)C1 C2 C3
C4 C5 C6_1 C6_2
C7R1 C7R2
X(10) N(10) 9(4)
PACK S9(5)
COMPX(3) X(2) X(2) X(2) S9(4)
32
3.1 環境設定
3. 「表2.2 ファイルからテーブル又はビューの対応」と「表2.3 COBOLデータ定義とDBデー
タ定義の対応」に基づいて対応付けると、以下のSQL定義文(CREATE文)で作成できます。
以下の二通りで作成できます。
テーブルのみで作成
テーブルとビューで作成
索引ファイルで定義されているので、インデックスは必ず作成します。
テーブルのみで作成する場合 CREATE TABLE T1 ( ← ①
C1_CHAR CHAR(10) NOT NULL,
C2_NCHAR CHAR(20) NOT NULL,
C3_UNSIGN_DECIMAL NUMBER(4,0) NOT NULL,
C4_INTEGER NUMBER(5,0) NOT NULL,
C5_CHAR CHAR(3) NOT NULL,
C6_1_CHAR CHAR(2) NOT NULL, ← ④
C6_2_CHAR CHAR(2) NOT NULL, ← ④
C7R1_CHAR CHAR(2) NOT NULL,
C7R2_NUMERIC NUMBER(4,0) NOT NULL
)
CREATE UNIQUE INDEX T1_IX1
ON T1 (C1_CHA ← ⑥ R)
テーブルとビューで作成する場合 CREATE TABLE T1 (
C1 CHAR(10) NOT NULL,
C2 CHAR(20) NOT NULL,
C3 NUMBER(4.0) NOT NULL,
C4 NUMBER(5,0) NOT NULL,
C5 CHAR(3) NOT NULL,
C6_1 CHAR(2) NOT NULL, ← ④
C6_2 CHAR(2) NOT NULL, ← ④
C7R1 CHAR(2) NOT NULL,
C7R2 NUMBER(4) NOT NULL
)
CREATE VIEW V1 (← ②
C1_CHAR,
C2_NCHAR,
C3_UNSIGN_DECIMAL,
C4_INTEGER,
C5_CHAR,
C6_1_CHAR,
C6_2_CHAR,
C7R1_CHAR,
C7R2_NUREMIC
) AS
SELECT C1,C2,C3,C4,C5,C6_1,C6_2,C7R1,C7R2
FROM T1
CREATE UNIQUE INDEX T1_IX1
ON T1 (C1) ← ⑥
① “テーブルのみで作成する場合”、テーブル名 T1 が COBOL初期化ファイルに指定す
る TableName(FILE1=TableName=T1)になります。
② “テーブルとビューで作成する場合”、ビュー名 V1 が COBOL初期化ファイルに指定
する TableName(FILE1=TableName=V1)になります。
③ 列名は、FD句のデータ項目名を使用しています。
④ OCCURS句で定義している繰返し項目 C6 の列名は、"_"+添字番号にしています。
⑤ 全ての列にNOT NULL制約を定義しています。
⑥ レコードキーは、インデックスで作成しています。
33
第3章 PowerRDBconnector の使用手引き
4. 作成されたテーブルは以下のレコード構造になります。
テーブル又はビューのレコード構造
GRP C7GRP X(6) C1 C2 C3
C4 C5 C6_1 C6_2
C7R1 C7R2
X(10) N(10) 9(4)
PACK
S9(5)
COMP X(3) X(2) X(2) X(2) S9(4)
CHAR(10) CHAR(20) NUMBER(4,0) NUMBER(5,0) CHAR(3) CHAR(2) CHAR(2) CHAR(2) NUMBER(4,0)
5. データを設定します。
任意のユーティリティなどを使用して設定してください。
34
3.1 環境設定
3.1.4 PowerRDBconnector 動作環境ファイル
PowerRDBconnector の動作環境ファイルは、COBOLアプリケーション起動時のカレントディレク
トリ内にファイル名 "DBIO_ENV" で作成し、以下の記述を行います。
PowerRDBconnector 動作環境ファイル
; PowerRDBconnectorの動作環境
ServerName=<データベースのサーバ名>
ProviderName=<プロバイダー名>
UserName=<ユーザー名>
Password=<パスワード>
TableLock=<テーブルロック>又はRecordLock=<レコードロック> ・ ASCIIコードで改行コードはLFのテキストファイルで記述します。
・ プロパティ名は行の先頭から始まっていなければいけません。
・ プロパティ名と値は = でつなぎます。 = の前後に空白、タブなどは記述できません。
・ 大文字・小文字を区別します。
・ 行先頭に ; 文字がある行はコメント行とします。行途中の ; 文字はコメントとなりま
せん。
・ 環境変数 DBIO_ENV に格納パスを設定することができます。
その場合は、環境変数 DBIO_ENV の格納パスに設定されている PowerRDBconnector の
動作環境ファイルが適用されます。
設定例:
DBIO_ENV=/apl/DBIO_ENV; export DBIO_ENV # Bシェルの場合
setenv DBIO_ENV /apl/DBIO_ENV # Cシェルの場合
・ COBOLアプリケーションを実行するユーザーからの読取り権が必要です。
35
第3章 PowerRDBconnector の使用手引き
各プロパティの指定方法を以下に示します。
表2.4 PowerRDBconnector 動作環境ファイル
プロパティ名 指定
有無 値と意味
ServerName 必須
データベースのサーバ名を指定します。半角英数字15文字以内で指定し
ます。
Oracle のTNSエントリー名を指定します。
TNSエントリー名は、以下の名前になります。
― Oracleのインストール時のリスナー環境構成時に指定した
リスナー名になります。
― なお、TNSエントリー名がわからな場合は、Oracleをインス
トールしたデータベース管理者に確認するか、tnsnames.ora
に記述した名前を確認してください。
詳しくは、Oracleのマニュアルを参照してください。
ProviderName 必須
データベースアクセスに使用するプロバイダー名又はインターフェース
名を指定します。
“OCI” Oracleにアクセスするためのインターフェース名です。
36
3.1 環境設定
UserName
Password
選択
データベース認証に使用するユーザー名及びパスワードを指定します。
データベース認証で行いたい場合に指定します。省略した場合はOS認証
で行います。
Oracle データベース認証で使用できるユーザー名及びパスワ
ードを使用する。OS認証する場合は、省略します。
なお、OS認証時は、環境変数 ORACLE_SID で指定された
インスタンスに接続されます。そのため、ServerNameプ
ロパティに指定したTNSエントリー名は無効になりま
す。
ユーザー名及びパスワードで使用できる文字はOracleに依存します。ま
た、暗号文字列を使用する場合は、以下のように指定します。
● 暗号文字列
ユーザー名及びパスワードを暗号化したい場合は、暗号文字を使用
します。
1. {}(中カッコ)で囲んで指定します。
2. dbiocryptコマンドで暗号文字列を生成します。
コマンド仕様は、dbiocrypt --help を実行すると参照できま
す。
標準入力で暗号化したい入力文字列を指定します。
入力文字列は、ASCII文字( 大30文字)
-kオプションで暗号キーをASCII文字( 大4文字)で
指定します。
-nオプションは必ず指定してください。
-nオプションで入力文字の改行コードを無視します。
暗号結果は、暗号化する毎に変化します。
3. 復号キーは、環境変数 DBIO_KEY に指定します。
暗号文字列の生成と指定例
手順.1 ユーザー名 ABC とパスワード CBA を
暗号/復号キー XYZ で暗号化します。
echo ABC| dbiocrypt -k XYZ -n
w0SX4ZJk
echo CBA| dbiocrypt -k XYZ -n
kUSGRdXk
手順.2 以下のように PowerRDBcoonector の動作環境ファイル
に指定します。
UserName={w0SX4ZJk}
Password={kUSGRdXk}
手順.3 暗号/復号キーを環境変数 DBIO_KEY に指定します。
DBIO_KEY=XYZ; export DBIO_KEY # Bシェルの場合
setenv DBIO_KEY XYZ # Cシェルの場合
37
第3章 PowerRDBconnector の使用手引き
TableLock
RecordLock
選択
(注意が
必要)
TableLockプロパティ又はRecordLockプロパティを指定します。
テーブルロックをする場合は、TableLockプロパティにONを指定します。
なお、なお、COBOL初期化ファイルのTableLockプロパティにもONを指定
します
レコードロックをする場合は、RecordLockプロパティに待機時間(既定値
30秒)を秒数で指定します。なお、0を指定した場合は待機せずに即時エ
ラーとなります。
省略した場合は、RecordLockプロパティに待機時間30秒が指定されたも
のとみなし、レコードロックで動作します。
詳しくは、「4.2 排他制御に関する注意事項」を参照してください。
CheckLock
選択
(注意が
必要)
Oracleの排他制御を使用する場合に指定します。CheckLockプロパティを
使用する場合は、「4.2.3 アプリケーションが排他制御を考慮する場合」
を参照して十分注意事項を理解した上のアプリケーションを作成した場
合のみ使用してください。
OFF Oracleの排他制御を使用する場合に指定します。
38
3.1 環境設定
PowerRDBconnector 動作環境ファイル(DBIO_ENV)の記述例
TNSエントリー名が dragon で Oracleユーザー名 tiger 、パスワード scott に接続するための記述
です。
ServerName=dragon
ProviderName=OCI
UserName=tiger
Password=scott
RecordLock=10
Oracle との接続確認を SQL*Plusユーティリティで行います。
sqlplus "/ AS SYSDBA" # OS認証の場合
sqlplus "tiger/scott@dragon" # DB認証の場合
39
第3章 PowerRDBconnector の使用手引き
3.1.5 COBOL初期化ファイル
COBOL 初期化ファイルには、ASSIGN 句のファイル識別名とデータベースのテーブル、ビューと
の関連付けを行います。詳しくは、「NetCOBOL 使用手引書」を参照してください。
COBOLの初期化ファイル
ファイル識別名=TableName=<テーブル名又はビュー名>&SchemaName=<スキーマ名>&AccessMode=<ア
クセスモード>&TableLock=<テーブルロック>,ファイル識別名定数
・ ASCIIコードのテキストファイルで記述します。
・ プロパティ名と値は = でつなぎます。 = の前後に空白、タブなどは記述できません。 ・ プロパティ名=値 は & でつなぎます。 & の前後に空白、タブなどは記述できません。
・ 大文字・小文字を区別します。
・ ファイル識別名定数の前は、 , (カンマ)で区切ります。
各変数の指定方法を以下に示します。
表2.5 COBOL初期化ファイル
プロパティ名 指定
有無 値と意味
ファイル識別名 必須 SELECT句(ファイル記述項)のASSIGN句のファイル参照子に指定
したファイル識別名を指定します。
COBOLのファイル名をデータベースのテーブル又はビューに割
り付けます。
TableName 必須 ファイル識別名に対するテーブル名又はビュー名を指定しま
す。
半角英数字で30文字以内の値を指定します。全角で15文字以内
の値を指定します。
SchemaName 必須 ファイル識別名に対するテーブルの所有者名を指定します。
半角英数字で30文字以内の値を指定します。
AccessMode 必須 ファイル識別名に対するアクセスモードを指定します。
SEQUENTIAL:順呼出し
RANDOM :乱呼出し
DYNAMIC :動呼出し
本モードは入出力文COBOLアプリケーションのACCESS MODE句に
指定する値と同意です。入出力文COBOLアプリケーションの
ACCESS MODE句の指定と異なる場合は、動作の保証ができません。
40
3.1 環境設定
Truncate 選択
(注意が
必要)
OPEN OUTPUT文でテーブルすべての行データをTRUNCATE文で消去
するテーブル名を指定します。なお、ファイル識別名にビュー
を指定している場合は、導出元テーブル名を指定します。
TRUNCATE文を使用すると高速にすべての行データを削除できま
すが、データベースの仕様で注意が必要です。
詳しくは、「4.1.2.2 OUTPUTモードのOPEN文でのTruncateプロパ
ティ」を参照してください。
指定例:
EMPLOYEE=TableName=employee&SchemaName=tiger
&AccessMode=RANDOM&Truncate=employee,RDM
TableLock
選択
(注意が
必要)
テーブルロックを使用する場合にONを指定します。
詳しくは、「4.2 排他制御に関する注意事項」のテーブルロック
の指定方法を参照してください。
ファイル識別名定
数 必須 識別値 RDM を指定します。
エントリー情報 選択 トランザクションサブルーチンを使用する場合は、エントリー
情報の記述が必要です。詳しくは、「NetCOBOL 使用手引書」を
参照してください。
例)エントリー情報ファイルに指定する場合
COBOL初期化ファイル(COBOL.CBR)
@CBR_ENTRYFILE = ENTRY.ENT
エントリー情報ファイル(ENTRY.ENT)
[ENTRY]
;トランザクションサブルーチン
XMROTSTR=libXITRN.so
XMROTEND=libXITRN.so
XMROTCNL=libXITRN.so
COBOL初期化ファイル(COBOL.CBR)の記述例
COBOLの索引ファイルのファイル識別名 EMPLOYEE をテーブル名 employee で所有者(スキーマ
名) tiger に対応付けるための記述です。
EMPLOYEE=TableName=employee&SchemaName=tiger&AccessMode=RANDOM,RDM
41
第3章 PowerRDBconnector の使用手引き
3.2 トランザクションの使用方法
入出力文COBOLアプリケーションのトランザクション(開始、終了、取消し)は、CALL文のサブ
ルーチン呼出しで実現しています。
重要:本製品は、排他制御を実現するために強制的にトランザクションを操作してテーブル又は
レコードに対してロックを行います。詳しくは、「4.2 排他制御に関する注意事項」を参照して
ください。
入出力文COBOLアプリケーション
図2.3 トランザクションの使用方法
トランザクションサブルーチンを以下に示します。
表2.6 トランザクションの使用方法
トランザクション サブルーチン名
開始 XMROTSTR
終了 XMROTEND
取消し XMROTCNL
OPEN CALL "XMROTSTR" READ WRITE CALL "XMROTEND" 又は CALL "XMROTCNL" CLOSE
42
3.2 トランザクションの使用方法
*1 : トランザクションを使用する場合は、トランザクションの開始、トランザクションの
終了又はトランザクションの取消しを必ず発行する必要があります。
COBOLアプリケーションでトランザクションの終了/取消しを行わなかった場合は、デ
ータベースの暗黙動作に依存します。たとえば、STOP RUN文でCOBOLアプリケーショ
ンを終了するとコミットされます。killコマンドでCOBOLアプリケーションを強制終
了するとロールバックされます。
*2 : トランザクションの開始は、初回のOPEN文の後にCALL文で呼び出す必要があります。
トランザクションの終了/取消しは、 終のCLOSE文の前にCALL文で呼び出す必要があ
ります。
*3 : トランザクションを開始していない場合は、データベースのオートコミット機能で動
作します。
*4 : トランザクションの終了/取消し後に、トランザクションを開始する場合は、トラン
ザクション開始をCALL文で呼び出す必要があります。
*5 : トランザクションサブルーチンは、PowerRDBconnector が提供するシステムライブラ
リです。入出力文COBOLアプリケーションに静的リンクしないでください。詳しくは、
「NetCOBOL 使用手引書」を参照してください。
例: Oracleのライブラリ(OCIライブラリ)とトランザクションサブルーチンの動的リ
ンク指定が必要です。
ld -dy –o P1 P1.o –lclntsh –lXITRN
ldはNetCOBOLのリンクコマンドです。-dyは動的リンクの指定です。”-o P1”は出
力ファイルの指定です。”P1.o”は入力ファイルの指定です。-lclntshはOracle
が提供しているライブラリ(OCIライブラリ)とのリンク指定です。–lXITRNはトラン
ザクションサブルーチンのリンク指定です。
*6 : トランザクションサブルーチンを使用する場合は、エントリー情報の記述が必要で
す。詳しくは、「NetCOBOL 使用手引書」を参照してください。
例)エントリー情報ファイルに指定する場合
COBOL初期化ファイル(COBOL.CBR) @CBR_ENTRYFILE = ENTRY.ENT
エントリー情報ファイル(ENTRY.ENT)
[ENTRY]
;トランザクションサブルーチン
XMROTSTR=libXITRN.so
XMROTEND=libXITRN.so
XMROTCNL=libXITRN.so
*7 : トランザクション分離レベルは、ReadCommited を使用します。
この節では、トランザクションサブルーチンインターフェースについて説明します。
43
第3章 PowerRDBconnector の使用手引き
3.2.1 トランザクション
以下のインターフェースで、トランザクションサブルーチンを使用します。
トランザクション開始
機能 : トランザクションの開始を宣言します。トランザクション機能を使用するにあた
って必ず発行する必要があります。
呼出し形式 : CALL "XMROTSTR"
トランザクション終了
機能 : 現在のトランザクションを終了し、トランザクション中で更新された内容をすべ
て確定します。 呼出し形式 : CALL "XMROTEND"
トランザクション取消し
機能 : 現在のトランザクションを終了し、トランザクション中で更新された内容をすべ
て取消します。
呼出し形式 : CALL "XMROTCNL"
注意事項 トランザクションサブルーチンでエラーが発生した場合は、オペレーション・システムのログへ
エラー情報を出力後、COBOLプログラムを終了します。エラー情報は、「表2.8 トランザクション
終了コード」を参照してください。
44
3.2 トランザクションの使用方法
45
第3章 PowerRDBconnector の使用手引き
3.3 エラー時の対処
入出力文COBOLアプリケーションのデータベース・アクセスでエラー発生時の対処について説明
します。エラー発生時は、エラー情報が出力されます。
なお、FILE STATUSの入出力状態値がエラーでもPowerRDBconnectorのエラー情報が出力されてい
ない場合は、NetCOBOL側でのエラーの可能性があります。その場合は、「NetCOBOL 使用手引書」
を参照してください。
以下の手順を参考に対処してください。
入出力文
COBOLアプリケーションの
データベース・アクセスで
エラー発生
アプリケーションの状態を確認します。
FILE STATUSの入出力状態値を確認します。
使用しているデータベース、テーブル、ビューを特定しま
す。
↓
データベースの確認
データベースの使用状態を確認します。
データベースが使用可能状態か確認します。
使用しているファイル(テーブル、ビュー及びインデック
ス)が使用可能状態か確認します。
↓
PowerRDBconnector
の確認
エラー情報を確認します。
エラー情報(メッセージ、関数、エラーコード)から原因
を特定します。「表2.7 ファイルアクセスエラーコード一
覧」を参考に対処してください。
46
3.3 エラー時の対処
3.3.1 ファイルアクセス時のエラー情報
ファイルアクセス時のエラーは、以下のエラー情報が出力されます。
出力先 : システムログに出力されます。
システムログは、既定の環境で /var/adm/messages に配置されています。
システムログの設定方法については、Solaris X System Administrator Collectionの
"Solarisのシステム管理"を参照してください。
出力名 : メッセージの先頭文字列 FSP_RDBCONNECTOR_FJSVDBIO として出力されます。
使用するファシリティ、レベルは、“user.error”です。
出力形式 : <text message>
PID = <process id> TID=<thread id>
function = <function name>
iserrno = <error code>
isstat1 = <error code1> isstat2 = <error code2>
isstat3 = <error code3> isstat4 = <error code4>
<database message>
TableName = <table name>
ROWID = <rowid>
<text message> :メッセージ本文。
<process id> :プロセスID。
<thread id> :スレッドID。
<function name> :エラーが発生した関数名。
<error code> :エラーコード。
<error code1> :エラー詳細コード1。
<error code2> :エラー詳細コード2。
<error code3> :エラー詳細コード3。
<error code4> :エラー詳細コード4。
<database message> :データベースから通知されたメッセージ。データベースから通
知された場合に出力されます。Oracleのマニュアルを参照して
調査してください。
<table name> :テーブル名またはビュー名が通知されます。
<rowid> :レコードのROWIDが通知されます。
エラーコードは、「表2.7 ファイルアクセスエラーコード一覧」を参照してください。
出力例 : File Access Error
PID = 712 TID = 1544
function = iswrite iserrno = 22
isstat1 = '9' isstat2 = 0x35 isstat3 = '9' isstat4 = 0x35
TableName = TPFILE
47
第3章 PowerRDBconnector の使用手引き
ファイルアクセス時のエラーコードを以下に示します。
表2.7 ファイルアクセスエラーコード一覧
Function Error Code
Isstat iserrno
10進数 1 2 3 4
意味 FILE STATUS
thr_isopen2
thr_isbuild
isclose
isstart
isread
Iswrite
isrewrite
isrewcurr
isdelete
isdelcurr
対処
EENDFILE
110 '1' 0x30 '1' 0x30
EOFが検出されました。 10 - - - - ○ - - - - -
対処は特にありません。
※エラー情報は出力されません。
EDUPL
100 '2' 0x32 '2' 0x32
重複キーが見つかりました。
● WRITE文又はREWRITE文の実行
時に、同じキー値がテーブルに
存在していました。 22 - - - - - ○ ○ - - -
テーブルのキー(プライマリキー又は
インデックス)設定を見直し、適切な
キー値を設定してください。
※エラー情報は出力されません。
ENOREC
111 '2' 0x33 '2' 0x33
目的のレコードがありません。
● 指定されたキー値がテーブル
に存在していません。 23 - - - ○ ○ - ○ - ○ -
入出力文COBOLアプリケーションの
START文又はREAD KEY文に指定してい
るキー値がテーブルにあるか確認し
てください。
※エラー情報は出力されません。
ENOENT
2 '0' 0x00 '0' 0x00
該当テーブルが存在しません。
● COBOL 初 期 化 フ ァ イ ル の
SchemaName、TableNameプロパ
ティに存在しないスキーマ名、
テーブル名が指定されていま
す。
35 ○ ○ - - - - - - - -
COBOL初期化ファイルに指定したスキ
ーマ名、テーブル名を確認し、適切な
スキーマ名、テーブル名に修正してく
ださい。
90 ○ ○ - - - - - ○ - ○EIO
5 '0' 0x00 '0' 0x00
48
3.3 エラー時の対処
入出力エラーが発生しました。
● ランダムアクセスモードでキ
ー指定がありません。
● ダイナミックアクセスモード
でキー指定がありません。
● その他の内部エラーが発生し
ました。
COBOL初期化ファイルと、COBOLソース
中のACCESSモードの指定が同じであ
るか確認してください。
同じである場合は、当社技術員に連絡
してください。
EIO
5 '9' 0x02 '9' 0x02
入出力エラーが発生しました。 90 - - ○ - - - - - - -
当社技術員に連絡してください。
EIO
5 '9' 0x03 '9' 0x03
入出力エラーが発生しました。 90 - - - ○ ○ ○ ○ - ○ -
当社技術員に連絡してください。
ENXIO
6 '0' 0x00 '0' 0x00
データベースの環境が整っていない。
● データベースのサービスが起
動されていません。
● データベースへの権限があり
ません。
● ユーザー名、パスワードが誤っ
ています。
● 環境変数 DBIO_KEY の内容が
誤っています。 90 ○ ○ - - - - - - - -
データベースの環境を見直してくだ
さい。
● データベースのサービスが起
動されているか確認してくだ
さい。
● データベースへの権限がある
か確認してください。
● ユーザー名、パスワードの設定
内容を確認してください。
● 環境変数 DBIO_KEY の内容を
確認してください。
EBADF
9 '0' 0x00 '0' 0x00
可変長レコード形式が指定されまし
た。 90 ○ ○ - - - - - - - -
固定長レコード形式になっているか
確認してください。
49
第3章 PowerRDBconnector の使用手引き
ENOMEM
12 '0' 0x00 '0' 0x00
メモリが不足しています。 90 - - - ○ ○ ○ ○ ○ ○ ○
OS、データベースのメモリ設定環境を
見直し、適切に対処してください。
EACCES
13 '0' 0x00 '0' 0x00
データベースに対するアクセス権限
がありません。 90 ○ ○ - - - ○ ○ ○ ○ ○
データベースの権限設定を見直し、適
切に対処してください。
EFAULT
14 '9' 0x00 '9' 0x00
ファイルディスクリプタが正しくあ
りません。
90 ○ ○ - - - - - - - -
当社技術員に連絡してください。
EINVAL
22 '0' 0x00 '0' 0x00
その他のエラーが発生しました。
● データベースでエラーが発生
しました。
● データベースの 大カーソル
オープン数の上限に達してい
ます。
● 製品のライセンスがありませ
ん。
● 環境変数 LANG及びNLS_LANGの
設定値に誤りがあります。 90 ○ ○ - ○ ○ ○ ○ ○ ○ ○
以下の確認をして、適切な対処を行っ
てください。
● エラー情報のデータベースか
ら通知されるメッセージから
Oracleのマニュアルを参照し
て調査してください。
● 環境設定が正しいか確認して
ください。
● 本製品が正しくインストール
されているか確認してくださ
い。
EINVAL
22 '9' 0x34 '9' 0x3490 ○ ○ - - - - - - - -
データ例外が発生しました。
● COBOLのデータ型とテーブルの
データ型で一致していないも
のがあります。
● テーブルの列名に誤りがあり
ます。
● サポートされていないデータ
型が存在します。
50
3.3 エラー時の対処
テーブル定義及びテーブルに格納さ
れているデータを確認し、適切なテー
ブル定義に修正してください。
EINVAL
22 '9' 0x35 '9' 0x35
データ例外が発生しました。
● 符号付きでない列に符号付き
のデータを書き込もうとしま
した。
● 文字コード変換に失敗しまし
た。
● サポートしていないデータ型
を検出しました。
● 使用できないキー値が入力さ
れました。
90 - - - ○ ○ ○ ○ ○ ○ -
以下の確認をし、適切な対処を行って
ください。
● テーブル定義、テーブル及びキ
ー値に格納されているデータ
の確認をしてください。
EINVAL
22 '9' 0x36 '9' 0x36
ロック指定に誤りがあります。
TableLock プ ロ パ テ ィ と
RecordLockプロパティが混在で
指定されています。
ロック指定がありません。
90 ○ ○ - - - - - - - -
テーブルロック及びレコードロック
の指定が正しくありません。ロックの
指定を見直してください。
ENOTOPEN
101 '9' 0x00 '9' 0x00
ファイルディスクリプタが正しくあ
りません。
90 - - - ○ ○ ○ ○ ○ ○ ○
当社技術員に連絡してください。
ENOTOPEN
101 '9' 0x00 '9' 0x32
ファイルディスクリプタが正しくあ
りません。
90 - - ○ - - - - - - -
当社技術員に連絡してください。
90 ○ ○ - ○ ○ - - - - -EBADARG
102 '9' 0x00 '9' 0x00
51
第3章 PowerRDBconnector の使用手引き
以下の指定が正しくありません。
● 動作環境ファイル名が誤って
います。
● 動作環境ファイル又はCOBOL初
期化ファイルの読込みに失敗
しました。
● 動作環境ファイル又はCOBOL初
期化ファイルの設定値の文字
列長が規定の長さを超えてい
ます。
● 動作環境ファイル又はCOBOL初
期化ファイルのキーワードが
間違っています。
● 動作環境ファイル又はCOBOL初
期化ファイルで指定された値
が間違っています。
● COBOL 初 期 化 フ ァ イ ル に
AccessModeの指定がされてい
ません。
● 環境変数 DBIO_ENV が指定さ
れていません。
指定内容を見直して、適切に対処して
ください。
EBADKEY
103 '9' 0x00 '9' 0x00
キーとインデックス構成(長さ、デー
タ型)が一致しません。
● COBOLで指定されたキーの構成
列数が、Oracleでサポートれて
いるインデックスの構成列数
の上限値(32)を超えています。
90 ○ ○ - ○ ○ - ○ - ○ -
テーブルのインデックス構成を見直
し、適切なキーを設定してください。
ETOOMANY
104 '9' 0x02 '9' 0x02
1プロセス(シングルスレッド)で可能
な 大オープン数 600 を超えまし
た。 90 ○ ○ - - - - - - - -
大オープン数 600 を超えました。
COBOLアプリケーションプログラムの
内容を確認してください。
EBADMEM
116 '9' 0x00 '9' 0x00
メモリが不足しています。 90 ○ ○ ○ - - - - - - -
OS、データベースのメモリ設定環境を
見直し、適切に対処してください。
92 ○ ○ - - - - - - - -EAGAIN
11 '9' 0x02 '9' 0x02
52
3.3 エラー時の対処
既にOPENされているファイルをOPEN
しました。
● OUTPUTモードでOPENしたファ
イルを、OPENしました。
● OPENしたファイルを、OUTPUTモ
ードでOPENしました。
COBOLアプリケーションプログラムの
内容を確認してください。
EAGAIN
11 '9' 0x03 '9' 0x03
テーブルロックが失敗しました。
● 他のプロセスがテーブルを排
他獲得しています。
● COBOLアプリケーションが中断
されました。 92 ○ ○ - - - - - - - -
COBOLアプリケーションプログラムの
内容を確認してください。
● 他のプロセスがテーブルを排
他獲得していないか確認して
ください。
ELOCKED
107 '9' 0x03 '9' 0x03
レコードロックが失敗しました。
● 他のプロセスがレコードを排
他獲得しています。
● 削除が行われたレコードに対
して、レコードロックが行なわ
れました。
● COBOLアプリケーションが中断
されました。 92 - - - - ○ - - - - -
COBOLアプリケーションプログラムの
内容を確認してください。
● 他のプロセスがレコードを排
他獲得していないか確認して
ください。
● レコードロックでREADしよう
としたレコードが削除されて
いないか確認してください。
ELOCKED
107 '0' 0x00 '0' 0x00
デッドロックが発生しました。 92 - - - - ○ ○ ○ ○ ○ ○
COBOLアプリケーションプログラムの
内容を確認してください。
53
第3章 PowerRDBconnector の使用手引き
3.3.2 トランザクションアクセス時のエラー情報
以下のエラー情報が出力されます。
トランザクションアクセス時のエラーは、以下の形式です。
出力先 : 標準出力、システムログに出力されます。
システムログは、既定の環境で /var/adm/messages に配置されています。
システムログの設定方法については、Solaris X System Administrator
Collectionの"Solarisのシステム管理"を参照してください。
出力名 : メッセージの先頭文字列 FSP_RDBCONNECTOR_FJSVDBIO として出力されます。
使用するファシリティ、レベルは、“user.error”です。
出力形式 : <text message>
PID = <process id> TID = <thread id>
command name = <command name>
error code = <error code>
error code1 = <error code1>
<database message>
<text message> :メッセージ本文。
<process id> :プロセスID。
<thread id> :スレッドID。
<command name> :エラーが発生したトランザクションサブルーチン名。
<error code> :終了情報。 <error code1> :詳細情報。
<database message> :データベースから通知されたメッセージ。データベー
スから通知された場合に出力されます。
エラー情報は、「表2.8 トランザクション終了コード」を参照してください。
出力例 : Transaction Access Error
PID = 1284 TID = 1532
command name = XMROTSTR
error code = 92
error code1 = 17430
54
3.3 エラー時の対処
トランザクション時のエラーコードを以下に示します。
表2.8 トランザクション終了コード
Command Error Code
XMROTSTR
XMROTEND
XMROTCNL
終了
情報
10進数
詳細
情報
10進数
意味 対処
○ ○ ○ 0 0 正常終了 なし。
○ ― ― 92 17430
シーケンスエ
ラー
-トランザクシ
ョン開始要求
済
トランザクションサブルー
チンの呼出し順序が正しい
か見直してください。
― ○ ○ 93 17430
シーケンスエ
ラー
-トランザクシ
ョン未開始
トランザクションサブルー
チンの呼出し順序が正しい
か見直してください。
○ ○ ○ 94 12
メモリ不足 OS、データベースのメモリ設
定、トランザクション設定が
正しいか見直してください。
○ ○ ○ 94 6
データベース
からのエラー
通知
エラー情報のデータベース
から通知されるメッセージ
からOracleのマニュアルを
参照して調査してください。
○ ○ ○ 95 5
OPEN文前にト
ランザクショ
ンサブルーチ
ンを呼出して
います。
トランザクションサブルー
チンをOPEN文後に呼出して
ください。
○ ○ ○ 99 19222
シーケンスエ
ラー
-トランザク
ション操作位
置不正
レコードロックの強制トラ
ンザクション中にアプリケ
ーションがトランザクショ
ン操作しました。トランザク
ション操作位置を見直して
ください。
55
第3章 PowerRDBconnector の使用手引き
56
3.3 エラー時の対処
第4章 使用上の注意
ここでは、本製品を使用する際の注意を説明します。
57
第4章 使用上の注意
4.1 性能に関する注意事項
ここでは、性能に関する注意事項を説明します。
本製品は、データベース製品が提供するSQLアクセスインターフェースを使用して、入出力文
COBOLアプリケーションの入出力文を処理します。
そのため実現できる性能は、入出力文の処理論理を変更せずに、SQLアクセスインターフェース
でアクセスした場合と同等です。
入出力文を直接サポートしているファイルシステム系製品の入出力文COBOLアプリケーションと
同等の性能は得られません。
移行の際は、注意事項を考慮した上で、検証してください。
4.1.1 データベースの準備
データベースを使用する際は、 低でも以下の準備が必ず必要です。
● データベースに対する統計情報の収集
● 検索性能を向上させるためのインデックス定義
● 履歴ファイルのディスク配置
● NOLOGGINGモードの使用選択
58
4.1 性能に関する注意事項
4.1.1.1 データベースに対する統計情報の収集
データベースが 適に動作するようにチューニングを行う必要があります。
データがセットアップされた状態で、オプティマイザ統計の収集を利用者が行い、 適化する
必要があります。必ずオプティマイザ統計の収集を行ってください。また、オプティマイザ統
計の収集は以下のような場合に必要です。
● 新規にファイル追加した。
● データの大幅な増減があった。
実施時期や運用方法などのデータベースに関することは、Oracleのマニュアルを参照してくだ
さい。
オプティマイザ統計の収集を怠ると、以下のような異常現象が発生することがあります。
● 必要の無いソート処理が発生し、処理に長時間かかります。
● 適切なインデックスが適用されなくなり、処理に長時間かかります。
なお、Oracleではオプティマイザ統計の収集に、ANALYZE文よりもDBMS_STATSパッケージの使
用を強く推奨しています。
SQL*Plusを使用して、DBMS_STATSパッケージの実行例を以下に示します。
使用例:表(所有者 scott、表 TPFILE)のオプティマイザ統計の収集
1) SQL*Plusでログイン
対象表を所有するユーザーでログインしてください。
sqlplus scott/tiger
2) DBMS_STATSパッケージの実行
execute dbms_stats.gather_table_stats(ownname=>'scott',
tabname=>'TPFILE',estimate_percent=>10,cascade=>FALSE)
* 上記の例は、テーブル TPFILEのデータ 10%を元に統計を収集しています。
3) 表のオプティマイザ統計の収集の日付を確認
select table_name, to_char(last_analyzed, 'RR-MON-DD HH24:MI:SS')
last_analyzed from user_tables where table_name = 'TPFILE';
* LAST_ANALYZED列には収集した 新日付が入ります。値がNULLの場合は収集されて
いません。
59
第4章 使用上の注意
4.1.1.2 データ検索性能を向上させるためのインデックス定義
必ず、レコードキーに対応するインデックスを定義してください。
レコードキーに対応するインデックスが定義され、索引処理でそのインデックスがデータベース
側で適用されないと 適な性能にはなりません。また、インデックスが定義されていなくてもエ
ラーとはなりません。
なお、データベースに対して統計情報の収集を行わないと、インデックスが定義されていても
適に動作しません。データベースの統計情報の収集については、「4.1.1.1 データベースに対す
る統計情報の収集」を参照してください。
4.1.1.3 履歴ファイルのディスク配置
履歴ファイルは、データ・ファイルと別の物理ディスクに配置してください。
データベースでは、データ更新を行うと更新されたデータは、データ・ファイルに加えて、履歴
ファイル(OracleはREDOログ、UNDO領域、アーカイブREDOログ)へも書込み処理が行われます。
データ・ファイルと別の物理ディスクに配置しないと書込みが1つの物理ディスクに集中するた
め、ディスクに対してボトルネックが発生します。
また、別の物理ディスクに配置しないと、データ・ファイルの物理ディスクにハード障害が発生
した場合、履歴ファイルも破壊され、バックアップした時点のデータでしか復旧できなくなりな
ります。
4.1.1.4 NOLOGGINGモードの使用選択
Oracleでは、NOLOGGINGモードでREDO ログ・ファイルへの記録モードを変更できます。
NOLOGGINGモードの使用選択は、利用者がOracleを理解して、適切な使用選択をしてください。
60
4.1 性能に関する注意事項
4.1.2 アプリケーションによる性能向上
アプリケーションで性能向上できる対処方法を説明します。
● データ更新を性能向上させるためのトランザクション適用
● OUTPUTモードのOPEN文を性能向上させるためのTruncateプロパティ
● 大量データの追加
● データベース・ユーティリティの活用
4.1.2.1 データ更新でのトランザクション適用
データ更新性能を向上させるには、トランザクションを適用して更新データをまとめてコミット
する考慮が必要です。
データベースでは、データ更新を行うと更新されたデータは、データ・ファイルに加えて、履歴
ファイル(OracleはREDOログ、UNDO領域、アーカイブREDOログ)へも書込み処理が行われます。
そのため、ディスクへの書込み回数が多くなり、他のファイルシステム系製品のデータ更新と同
等の性能にはなりません。
データ更新性能を向上させるには、書込み回数を抑える必要があります。トランザクションを適
用すると、トランザクション中のデータ更新の書込み回数が 小限に抑えられ、更新されたデー
タはコミットすることで、まとめて書き込まれます。
たとえば、トランザクション開始後、WRITE文を1万回実行する毎にコミットさせます。
なお、トランザクション操作を行う際の注意事項については、「4.2 排他制御に関する注意事項」
を参照してください。
4.1.2.2 OUTPUTモードのOPEN文でのTruncateプロパティ
Truncateプロパティを適用すると、OUTPUTモードのOPEN文で高速にすべての行データを削除でき
ます。ただし、データベース及びPowerRDBconnectorの仕様で以下の注意が必要です。
● トランザクションが終了される。
OUTPUTモードのOPEN文でトランザクションが終了します。
● テーブルに対して、実行権が必要です。
Oracleでは、DROP ANY TABLE システム権限が必要になります。
● 誤ったテーブル名を指定すると、その全行を削除してしまいます。
間違えずに指定してください。
● 強制トランザクション中は、Truncateプロパティの指定は無効となります。
詳しくは、「4.2 排他制御に関する注意事項」を参照してください。
そのため、Truncateプロパティを使用せずに運用で入出力文COBOLアプリケーションを実行する
前に、Truncate Table文でデータを削除しておくことを推奨します。
4.1.2.3 大量データの追加
大量データの追加、データコピーは、データベース・ユーティリティを使用してください。
61
第4章 使用上の注意
4.1.2.4 データベース・ユーティリティの活用
データコピーを行う場合は、PowerRDBconnectorを使用せずにデータベース製品で提供されてい
るユーティリティを活用してください。
そのデータベース製品のデータコピーを前提に設計されたユーティリティでは、そのデータベー
ス製品で も高速にデータコピーされるように設計されています。
Oracle データベース内部のブロック単位でデータコピーを高速に実行する以
下のユーティリティがあります。
● SQL*Loader ユーティリティ
外部データ・ファイルとデータベースの表で大量転送するときに
活用します。
● exp ユーティリティ
データベース・オブジェクト(データスペース、表など)単位で
エクスポートするときに活用します。
● imp ユーティリティ
エクスポートしたデータベース・オブジェクトをインポートする
ときに活用します。
4.1.2.5 I-OオープンでのREAD性能
I-OオープンのREAD文でレコードロック処理が動作するため、READ性能がテーブルロックと比較
して数倍から二十倍程度(READ文一回当たり数ミリ秒)の時間を要します。I-OオープンでREAD文
を大量に実行するアプリケーションでは、テーブルロックをするかINPUTオープンするか見直し
てください。詳しくは、「4.2.2 READ文での排他制御について」を参照してください。
62
4.2 排他制御に関する注意事項
4.2 排他制御に関する注意事項
ここでは、排他制御に関する注意事項を説明します。
排他制御は、データベースの仕様に依存するため、動作が異なります。移行の際は、データベー
スの排他制御の仕様を理解してください。
Oracleでは、排他を維持する区間がトランザクション単位のみとなるため、トランザクションの
適用が必須となります。
本製品は、排他制御を実現するために強制的にトランザクションを操作してテーブル又はレコー
ドに対してロックを行います。(以後、この強制的に行っているトランザクションを強制トラン
ザクションと呼びます。)強制トランザクション中にアプリケーションの強制終了が行われた場
合は、強制トランザクションがロールバックされ、データが更新前の状態に戻ります。
テーブルに対するロックは、TableLockプロパティを指定することにより、OPEN文での排他制御
が行われます。これは、テーブルを占有排他したいバッチ系のアプリケーションで利用されるこ
とが考えられます。詳しくは、「4.2.1 OPEN文での排他制御について(TableLock)」を参照してく
ださい。
レコードに対するロックは、RecordLockプロパティにより、I-OオープンのREAD文で排他制御が
行われます。これは、I-OオープンでREADしたレコードを排他したいオンライン系のアプリケー
ションで利用されることが考えられます。詳しくは、「4.2.2 READ文での排他制御について
(RecordLock)」を参照してください。
ロックの指定方法は、以下のように行います。
1. テーブルロックを行う場合
PowerRDBcoonector動作環境ファイルのTableLockプロパティにONを指定してください。な
お、COBOL初期化ファイルのTableLockプロパティにもONを指定して下さい
例:テーブルロックのファイル EMPLOYEE に対する指定例
; PowerRDBconnector動作環境ファイル
ServerName=dragon
ProviderName=OCI
UserName=tiger
Password=scott
TableLock=ON
; COBOL初期化ファイル
EMPLOYEE=TableName=employee&SchemaName=tiger
&AccessMode=RANDOM&TableLock=ON,RDM
63
第4章 使用上の注意
2. レコードロックを行う場合
PowerRDBcoonector動作環境ファイルのRecordLockプロパティに待機時間を秒数で指定して
ください。I-OオープンのREAD文を実行するすべてのファイルに適用されます。
待機時間 レコードが既にロックしている場合の待機時間を秒数で0か
ら2147483647の範囲で指定します。なお、0を指定した場合は
待機せずに即時エラーとなります。
待機時間を変更する際は、アプリケーションで問題が無いこ
とを確認してください。
例:レコードロックの待機時間10秒の指定例
; PowerRDBconnector動作環境ファイル
ServerName=dragon
ProviderName=OCI
UserName=tiger
Password=scott
RecordLock=10
注意事項
PowerRDBcoonector動作環境ファイルにロック指定が無い場合は、RecordLockプロパティに
待機時間30秒が指定されたものとみなします。
TableLockプロパティをPowerRDBcoonector動作環境ファイルにのみ指定している場合は、
ロックされないため、エラーとなります。
PowerRDBcoonector動作環境ファイルにロック指定が無く、COBOL初期化ファイルに
TableLockプロパティを指定した場合、レコードロックとして動作します。
RecordLockプロパティとTableLockプロパティの指定は混在できません。混在で指定してい
てもエラーなりませんので、混在指定しないように注意してください。
1. PowerRDBcoonector動作環境ファイルにRecordLockプロパティとTableLockプロパティの
指定が混在している場合、RecordLockプロパティは無効となり、TableLockプロパティが有
効となります。
64
4.2 排他制御に関する注意事項
同一のテーブル及びレコードが競合した場合のTableLockプロパティ及びRecordLockプロパティ
の排他関係を以下に示します。(表中の入出力文は実行直後の状態を示します。)
表4.1 排他関係
後行アプリケーション
TableLock RecordLock
INPUT
I-O
EXTEND
OUTPUT
INPUT
I-O
OPEN READ 乱REWRITE 乱DELETE
INPUT ○ × × × ○ ○ △ △
I-O × × × × ○ △ △ △
EXTEND × × × × ○ △ △ △
TableLock
OUTPUT
OPEN
× × × × ○ △ △ △
INPUT ○ ○ ○ ○ ○ ○ ○ ○
先行アプリケーション
RecordLock
I-O
READ
○ × × × ○ × △ △
○ 後行のTableLockではオープンは成功します。
後行のRecordLockではオープンは成功し、入出力文も成功します。
× 後行のTableLockではオープンで失敗します。(待機せずに FILE-STATUS 92を通知しま
す。)
後行のRecordLockではオープンは成功し、入出力文で待機します。(待機時間を超えた場
合は、FILE-STATUS 92を通知します。)
△ Oracleの仕様で先行のロックが解除されるまで待機します。
● 先行がTableLockでロックしている場合、後行の入出力文は解除されるまで待機しま
す。
● 先行がRecordLockでロックしている場合、後行の入出力文はレコードロックが解除さ
れるまで待機します。
65
第4章 使用上の注意
4.2.1 OPEN文での排他制御について(TableLock)
TableLockプロパティを指定することにより、OPEN文での排他制御が行われます。
この機能は、TableLockが指定されたテーブルのOPEN文で強制的にトランザクションを開始して
CLOSE文でトランザクションを終了することで排他制御を実現します。INPUTオープンでは、
Share( 共有モード)でテーブルロックされ、INPUTオープン以外は、Exclusive(占有モード)でテ
ーブルロックされます。
重要:TableLockプロパティの注意事項
1. TableLockプロパティを使用する場合は、PowerRDBconnector動作環境ファイルのTableLock
プロパティにONを指定し、COBOL初期化ファイルのTableLockプロパティにもONを指定しま
す。
2. PowerRDBconnector動作環境ファイルにTableLockプロパティとRecordLockプロパティの指
定が混在している場合、RecordLockプロパティは無効となり、TableLockプロパティが有効
となります。
3. 強制トランザクション中は、COBOL初期化ファイルのTableLockプロパティで対象となるテ
ーブルが全てCLOSEされるとトランザクションを終了します。(参考例2を参照)
4. 強制トランザクション中は、Truncateプロパティの指定は無効となります。
これはTruncateを実行すると、Oracleが強制的にトランザクションを終了(コミット)する
ため、それまでのロックが解除されることを防止するためです。
そのためOUTPUTでオープンする場合は、Truncateプロパティを使用せずに、運用で入出力
文COBOLアプリケーションを実行する前に、Truncate Table文でデータを削除しておくこと
を推奨します。
5. 強制トランザクション中の更新データは、他のアプリケーションから扱えません。
6. 強制トランザクション中のトランザクション操作(開始、終了、取消し)は無効となりま
す。
トランザクションサブルーチンのCALL文は正常に復帰します。TableLockプロパティで対象
となるテーブルが全てCLOSEされた時点でトランザクションが終了します。
7. デッドロック状態が検出される場合があります。
たとえば、以下の処理順序でデッドロックが発生します。
1) 先行アプリケーションがAテーブルをテーブルロックし、
Bテーブルをテーブルロックしない。
2) 後行アプリケーションがAテーブルをテーブルロックしないで、
Bテーブルをテーブルロックする。
3) 先行アプリケーションがBテーブルに対して、以下のいずれかの操作を行う。
・WRITE/REWRITE/DELETE/OUTPUT OPEN
4) 後行アプリケーションがAテーブルに対して、以下のいずれかの操作を行う。
・WRITE/REWRITE/DELETE/OUTPUT OPEN
8. Oracleの仕様で排他モードが変化しない場合があります。
たとえば、1つのアプリケーションで、ファイルAをオープン中に、ファイルBをI-Oオー
プン(Exclusive)した後、INPUTオープン(Share)しても、先に排他モードが強い
Exclusive(占有モード)でロックされているため、ファイルBは、Exclusive(占有モード)
のままとなります。(参考例3を参照)
66
4.2 排他制御に関する注意事項
参考として、1つのアプリケーションが1つ又は2つのファイルを使用した入出力文操作順序の
組合せによるトランザクション区間の遷移を示します。
トランザクション区間は以下の表記です。
(TSTR):強制トランザクション開始。(TEND):強制トランザクション終了。
1)1ファイルの単純な入出力操作の場合
ファイルA
─┬─ (TSTR)OPEN I-O
│
トランザクション区間
│
─┴─ CLOSE(TEND)
2)トランザクション区間がファイルAの入出力操作に依存する場合
ファイルAのOPEN中にファイルBのOPENが実行されるため、TableLockはTableLock
対象の全てのファイルがクローズするまで区間が延長される。
ファイルA ファイルB
─┬─ (TSTR)OPEN I-O
│
│ OPEN I-O
トランザクション区間
│ CLOSE
│
─┴─ CLOSE(TEND)
3)Oracleの仕様で排他モードが変化しない場合
1つのアプリケーションで、ファイルAをオープン中に、ファイルBをI-Oオープン
(Exclusive)した後、INPUTオープン(Share)しても、先に排他モードが強い
Exclusive(占有モード)でロックされているため、ファイルBは、Exclusive(占有
モード)のままとなります。
ファイルA ファイルB
─┬─ (TSTR)OPEN I-O
│ OPEN INPUT ─┬─
│ CLOSE │
│ (Share)
│ │
│ OPEN I-O ─┼─
│ CLOSE │
トランザクション区間 (Exclusive)
│ OPEN INPUT │
│ CLOSE │
─┴─ CLOSE(TEND) ─┴─
67
第4章 使用上の注意
4.2.2 READ文での排他制御について(RecordLock)
RecordLockプロパティにより、I-OオープンのREAD文で排他制御が行われます。
この機能は、READ文で強制的にトランザクションを開始して読込んだ行をロックし、以下の入出
力文でトランザクションを終了させることで排他制御を実現します。
START文、順REWRITE文、READ文、順DELETE文、RANDOMモードの乱REWRITE文、RANDOMモード
の乱DELETE文、CLOSE文
重要:RecordLockプロパティの注意事項
1. RecordLockプロパティで対象となるファイルが複数ある場合、I-OオープンでREADしたファ
イルが1つでもあると、他のファイルに対し入出力を行ってもトランザクションは終了し
ません。トランザクション終了は、そのREADした状態が終了した時点で行われます。ただ
し、トランザクションサブルーチンでトランザクションを開始している場合は、トランザ
クションサブルーチンでトランザクションを終了した時に終了します。(参考例3,4,5
を参照)
2. 複数ファイルでI-OオープンのREADがあると、トランザクション区間が延長することがある
ので、トランザクション区間内にREADしていた複数のレコードがレコードロックされ、「ASP
Symfoware6000」、「NetCOBOLのファイルシステム」と排他制御が異なります。(参考例3,
4,5を参照)
3. 強制トランザクション中は、Truncateプロパティの指定は無効となります。
これはTruncateを実行すると、Oracleが強制的にトランザクションを終了(コミット)する
ため、それまでのロックが解除されることを防止するためです。
そのためOUTPUTでオープンする場合は、運用で入出力文COBOLアプリケーションを実行する
前に、Truncate Table文でデータを削除して、書込み処理にトランザクションを適用させ
ることを推奨します。
4. 強制トランザクション中のレコードは、ロックがかかっているため他のアプリケーション
から扱えません。
5. 強制トランザクション中のトランザクション操作(開始、終了、取消し)はエラーとなり
ます。
6. デッドロック状態が検出される場合があります。
READする順序の関係でロックが他のアプリケーションとたすき掛けとなることがありま
す。トランザクションが継続している間は、I-OオープンでREADした行はロックされたまま
となります。
7. I-OオープンでREADだけする場合は、テーブルロック又はINPUTオープンするように検討し
てください。
I-OオープンでREAD文でレコードロック処理が動作するため、性能が劣化します。
8. Oracleの仕様で先行のロックが解除されるまで待機します。
先行アプリケーションがI-OオープンでREADした状態で、後行アプリケーションが同一レコ
ードに対してキーを直接指定して更新すると、先行アプリケーションがレコードロックを
解除するまで待機します。
68
4.2 排他制御に関する注意事項
参考として、1つのアプリケーションが1つ又は2つのファイルを使用した入出力文操作順序の
組合せによるトランザクション区間の遷移を示します。
トランザクション区間は以下の表記です。
(TSTR):強制トランザクション開始。(TEND):強制トランザクション終了。
1)1ファイルの単純な入出力操作の場合
ファイルA
OPEN I-O
─┬─ (TSTR)READ
トランザクション区間
─┼─ (TEND)(TSTR)READ
トランザクション区間
─┼─ (TEND)(TSTR)READ
トランザクション区間
─┴─ REWRITE(TEND)
─┬─ (TSTR)READ
トランザクション区間
─┴─ REWRITE(TEND)
─┬─ (TSTR)READ
トランザクション区間
─┴─ REWRITE(TEND)
CLOSE
2)トランザクション区間がファイルAとファイルBの入出力操作で別々に分かれる場合
ファイルA ファイルB
OPEN I-O
OPEN I-O
─┬─ (TSTR)READ
トランザクション区間
─┴─ REWRITE(TEND)
─┬─ (TSTR)READ
トランザクション区間
─┴─ REWRITE(TEND)
CLOSE
CLOSE
69
第4章 使用上の注意
3)トランザクション区間がファイルBの入出力操作に依存する場合
ファイルAのREAD中にファイルBのREADが実行されるため、トランザクション区間
が延長する。
ファイルA ファイルB
OPEN I-O
OPEN I-O
─┬─ (TSTR)READ
│ READ
トランザクション区間
│ CLOSE
│
─┼─ (TEND)(TSTR)READ
トランザクション区間
│ CLOSE
─┴─ CLOSE(TEND)
4)トランザクション区間がファイルAの入出力操作に依存する場合
ファイルAをREAD中のため、ファイルBのREWRITE後もトランザクション区間は延長
され、ファイルAのREWRITEでトランザクションは終了する。
ファイルA ファイルB
OPEN I-O
OPEN I-O
─┬─ (TSTR)READ
トランザクション区間 READ
│ REWRITE
─┴─ REWITE(TEND)
CLOSE
CLOSE
70
4.2 排他制御に関する注意事項
5)トランザクション区間が 大まで延長される場合
トランザクションを終了できる区間が無いため、CLOSEまで延長される。
ファイルA ファイルB
OPEN I-O
OPEN I-O
─┬─ (TSTR)READ
│ READ
│ REWITE
│ READ
│ REWRITE
トランザクション区間 READ
│ READ
│ READ
│ CLOSE
│
─┴─ CLOSE(TEND)
71
第4章 使用上の注意
4.2.3 アプリケーションが排他制御を考慮する場合
PowerRDBconnectorは、テーブルロック又はレコードロックを行いますが、ロックを行わない手
段があります。
重要:極力使用しないことを強く推奨します。
ロックを行わない手段を使用した場合、I-OオープンでREADしても読み込み中のレコードはロッ
クされません。そのため、Oracleの排他制御を良く理解して、アプリケーションが排他制御を考
慮する対応が必要です。他のアプリケーションとの同時動作に問題が無い事を、運用及びプログ
ラム上で十分に確認した上で、実施してください。
テーブルロックもレコードロックも行わない指定は、PowerRDBconnector 動作環境ファイルの
RecordLockプロパティにOFFを指定します。さらに、PowerRDBconnector 動作環境ファイルに
CheckLockプロパティを加えて、このCheckLockプロパティにOFFを指定することでエラーになら
ずに実行されます。
例:テーブルロックもレコードロックも行わない指定
; PowerRDBconnector動作環境ファイル
ServerName=dragon
ProviderName=OCI
UserName=tiger
Password=scott
RecordLock=OFF
CheckLock=OFF
72
4.3 COBOLアプリケーションに関する注意事項
4.3 COBOLアプリケーションに関する注意事項
ここでは、COBOLアプリケーションに関する注意事項を説明します。
4.3.1 ファイル識別名について
ASSIGN句のファイル参照子はファイル識別名で行い、COBOL初期化ファイルに指定することを推
奨します。なお、PowerRDBconnectorではファイル識別名を一意の名前で指定してください。(一
意であるSELECT句のファイル名をファイル識別名に使用すれば、必然的に一意となります。)
また、以下のような入出力文COBOLアプリケーションでは、重複した同名のファイル識別名を使
用することが多いため、一意のファイル識別名を使用してください。
同一ファイルに対して複数のSELECT句で定義し、かつ
異なった ACCESS MODE で定義している。
4.3.2 LOW-VALUE、HIGH-VALUEについて
表意定数のLOW-VALUE、HIGH-VALUEを使用したすべての入出力文操作はできません。
LOW-VALUE、HIGH-VALUEの値を使用したWRITE文及びREWRITE文など。
LOW-VALUE、HIGH-VALUEの値をキー値としたSTART文及びREAD文など。
論理的にレコードを位置付けるには、以下の代替方法があります。
LOW-VALUE:START FIRST
HIGH-VALUE:START FIRST WITH REVERSED ORDER
73
第4章 使用上の注意
4.3.3 COBOLで扱えないデータ値との整合性について
COBOLで扱えないデータ値がデータベースに格納されないようにしてください。詳しくは、「表2.3
COBOLデータ定義とDBデータ定義の対応」を参照してください。
符号無し数字項目に対する負数
符号無し整数項目に対する負数
NULL値
4.3.4 データベースで扱えないデータ値との整合性について
データベースでは、データ型で定義したデータ値で扱います。
数字型では、数値のみです。
文字型では、文字のみです。
たとえば、以下のような場合は、COBOLの数字項目に空白文字が設定されます。
FD TPFILE.
01 REC.
02 TIME.
03 TIME-HH PIC 9(2).
03 TIME-MM PIC 9(2).
03 TIME-SS PIC 9(4).
MOVE BLANK TO TIME. <-- 項目 TIME は、英数字項目と評価され、空白が設定される。
WRITE REC. <-- 数字項目に文字があるため、WRITE文はエラーとなる。
4.3.5 キーに重複した値がある索引ファイルについて
索引ファイルのキーに重複した値がある場合は、以下の注意が必要です。
キーに重複した値があるレコードの並び順は格納順になりません。
Oracleの並び順となるため、並び順は格納順にならないためです。
キー更新は行わないでください。
キー更新を行うとOracleで 初に検索されたレコードを更新しますが、Oracleの並び順で
扱うため、利用者から特定できないレコードが更新されるためです。
キーに重複した値があるレコードを操作中に読取り方向を変更しないでください。
キーに重複した値があるレコードを操作中に読取り方向を変更すると再度検索しますが、
Oracleの並び順で扱うため、同じレコードが読込まれることがあるためです。
74
4.4 その他の注意事項
4.4 その他の注意事項
4.4.1 レコード長不一致について
レコード長が一致しない場合、NetCOBOL側で以下のCOBOL実行時エラーが発生します。
メッセージ番号 “JMP0310I-I”
$3 “INV-LRECL”
COBOLのレコード記述項のレコード長とPowerRDBconnectorがCOBOLに通知する行長でOPEN文で
COBOLがチェックします。必ず、レコード記述項に合わせて列を定義してください。
4.4.2 キー値及びレコードの並び順について
データベースの仕様及び設定でキー値及びレコードの並び順が異なります。適切な照合順序設定
を行ってください。
キー値の並び順(数字と文字の並び順、英大文字と英小文字の並び順など)
重複キー値のレコードの並び順は、格納順となりません。
4.4.3 英数字項目と日本語項目のサイズ制限について
データベースの仕様でサイズ制限があります。詳しくは、「表2.3 COBOLデータ定義とDBデータ定
義の対応」を参照してください。
4.4.4 ビューの使用について
ビューの構成は、「ファイルからテーブル又はビューの作成例」で記載されている範囲の1つのテー
ブルで構成された単一ビューで使用してください。なお、ビューに関数、表結合、副問合せなど
が定義されている場合は動作できません。
4.4.5 読取り一貫性とデータ整合性について
Oracleの読取り一貫性の制限で、読取り方向の行に対してキー更新(追加、更新、削除)されて
いるとデータ更新前のデータがREAD文で読込まれる場合があります。キーを位置付けし直すこと
により、 新のデータが読み込まれます。
4.4.6 行(レコード)の格納位置について
WRITE文でレコードを追加する場合、レコードはテーブルの 後に格納されるとは限りません。
データベース仕様に依存します。順編成ファイルの書込み順とおりに読み込まれない場合があり
ます。
75
第4章 使用上の注意
76
4.4.7 Oracleのバージョンを変更した際の対処について
Oracleのバージョンを変更した際は、そのOracleバージョンのライブラリ(OCIライブラリ)とリ
ンクするためCOBOLアプリケーションの再リンクが必要です。
4.4.8 トランザクションの終了状態について
Oracleの仕様で以下のようになります。
● トランザクションの終了及び取消しをせずにアプリケーションが終了した場合
Oracleでトランザクションがコミットされます。
● ファイルをクローズせずにアプリケーションが終了した場合
Oracleでトランザクションがコミットされます。
● アプリケーションが強制終了した場合
Oracleでトランザクションがロールバックされます。
上記の動作になりますが、アプリケーションはトランザクションの終了及び取消し及びファイル
のクローズを行ってください。
4.4.9 多重動作時の設定について
OS、Oracleに以下のような設定が必要になります。
● リスナー・パラメーター(listener.ora)のQUEUESIZEパラメーター値の変更
● Oracle初期化パラメーターのPROCESSESパラメーター値の変更
● カーネル・パラメーター(/etc/system)の共用メモリ関係、セマフォ関係のパラメータ
ー値の変更
4.4.10 インターネットでの使用について
本製品はインターネットへのサービスを提供する用途を想定して設計・製造されておりません。
インターネットに接続しない環境(ローカルネットワーク又はイントラネット内)で使用するか、
インターネットに接続して使用する場合は、運用環境によりセキュリティ侵害対策を構築した上
でご使用ください。
付録A 他製品のファイル資源
ここでは、他製品(ファイルシステム、データベース系)のファイル資源及び代替方法について
説明します。
A.1 論理ファイル
論理ファイルとは、物理ファイルを射影する仮想的なファイルで、以下の製品に存在します。 物理ファイルとは、物理データが格納されたデータファイルです。詳しくは、該当する製品のマ
ニュアルを参照してください。 ● 「CSP/FX FX-RDB」 または 「ASP RDB/6000、Symfoware6000」 ● 「UXP/DS RDB/7000」 または 「UXP/DS SymfoWARE7000」
論理ファイルで定義された単純論理ファイルをビューで定義することで同等の機能を実現するこ
とが可能です。
付録A 他製品のファイル資源
78
単純論理ファイル 単一ビューで作成することで、同等の機能が実現できます。
射影
射影
よび
べ替
SQL定義文の例
CREATE VIEW(得意先コード_DAS SELECT 得FROM CSMAS CREATE UNIQ
論理ファイル CSVIEW
得意先コード 商品名 数量 00033 エアコン 8 00901 ラジオ 261 01215 ステレオ 60 03477 ビデオ 18 06024 CDプレーヤ 5
得意先名 西村商会 高木電気 (株)山岸 中村無線 西田電気
物理ファイル CSMASTER
5 CDプレーヤ 06024 18 ビデオ 03477
60 ステレオ 01215
261 ラジオ 00901
8 エアコン 00033
数量
_INTEGER
商品名
_CHAR
得意先コード
_DECIMAL
インデックス
キー項目:得意先コード :得意先コード、商品名お
数量を得意先コード順に並
えてREAD/WRITEする。
CSVIEW ECIMAL, 商品名_CHAR, 数量_INTEGER) 意先コード, 商品名, 数量 TER
UE INDEX CSVIEWIX ON CSMASTER (得意先コード)
索引
A
AccessMode.......................................................... 40 ANALYZE文 ........................................................ 59
C
COBOL.CBR.................................................. 41, 43 COBOL初期化ファイル ....................................... 23
D
DBIO_ENV.................................................... 35, 39 DBIO_KEY .......................................................... 37 DBプロバイダ ...................................................... 23
L
LANG............................................................. 24, 50
N
NLS_LANG ................................................... 24, 50 NOLOGGINGモード ..................................... 58, 60
O
OS認証 ..................................................... 24, 37, 39
P
Password ................................35, 37, 39, 63, 64, 72 PowerRDBconnector ........................................... 23 PowerRDBconnector 動作環境ファイル ............. 23 ProviderName ..................................................... 36
R
RecordLock .............................35, 38, 63, 65, 68, 72
S
SchemaName....................................................... 40 ServerName......................................................... 36
T
TableLock .............35, 38, 40, 41, 63, 65, 66, 68, 72 TableName .......................................................... 40 Truncate .......................................41, 61, 63, 66, 68
U
UserName ..............................35, 37, 39, 63, 64, 72
い
インデックス ........................................................ 23
お
オプティマイザ統計 ............................................. 59
き
強制トランザクション...................55, 61, 63, 66, 68
せ
性能 .......................................2, 6, 58, 60, 61, 62, 68
て
データベース ........................................................ 23 データベース認証................................................. 37 テーブル ............................................................... 23 テーブルロック .................14, 35, 40, 51, 53, 62, 72
と
トランザクション(方式-1) ............................... 44
に
入出力文COBOLアプリケーション ..................... 23
は
排他3, 6, 10, 11, 12, 14, 38, 42, 53, 62, 63, 65, 66, 68, 72
ひ
ビュー................................................................... 23
ふ
ファイル識別名 .................................................... 40 ファイル識別名定数 ............................................. 41
り
履歴ファイル .........................................2, 58, 60, 61
れ
レコードロック ...........14, 35, 51, 53, 55, 62, 68, 72
79