200年12
マジックソフトウェア・ジャパン 株式会社

 

Oracle8/Oracle8i データベースゲートウェイ

Ver9.3-9.3a 追加情報

Magic eBusiness Platform Ver9.30

 

 

 

 

 

本文書には、Magic eBusiness Platform(以下 Magic と表記)Oracle8/Oracle8i データベースゲートウェイ Ver9.3-9.3a として提供されたプログラム(MGORA8.DLL)に関して、マニュアルの記載事項以外の追加情報が記述されています。
なお、文書中に記述されている"本プログラム"とは、"MGORA8.DLL"を示します。

 

 

使用条件

動作環境及び注意事項

制限事項及び留意事項

Oracleのロック機構のみを使用するときの注意事項

データベース情報での有効なパラメータ一覧

Oracle9iについて

Ver9.01-9.1の変更点

Ver9.01-9.2の変更点

Ver9.2-9.1の変更点

Ver9.3-9.3の変更点

Ver9.3-9.3aの変更点

 

 

 

 

 

使用条件 (Top)

 

  • 本プログラムを購入本数以上複製すること、または逆コンパイル・逆アセンブルすること、もしくは再使用許諾・賃貸・貸与及び譲渡することはできません。

  • 本プログラムは、特定物として現存するままの状態で提供され、マジックソフトウェア・ジャパン株式会社及び Magic Software Enterprises Ltd. は、本プログラムの瑕疵及びその使用結果について一切保証もせず、損害賠償も負いません。

  • 本プログラムの著作権は、Magic Software Enterprises Ltd. にあります。

 

 

 

 

 

 

動作環境及び注意事項 (Top)

  • Magic Ver9.30JSP3a以上の動作する機種および環境が必要です。

  • Magic Ver9.30JSP3a で動作確認しています。

  • Oracle 製品は、日本語版を使用してください。

    以下の環境で動作確認を行っています。
    その他の環境については、下記のものと互換性のある場合のみ使用可能です。

 
サーバOS Microsoft Windows NT Server Ver4.0 SP6a
Microsoft Windows 2000 Server SP1
クライアントOS Microsoft Windows 2000 Professional SP1
DBMS Oracle8 WorkGroupServer for Windows NT 8.1.6.1.2
Oracle8 WorkGroupServer for Windows NT 8.0.5.0.0
Oracle 9i Database(9.0.1)for Windows NT/2000 Enterprise

 

 

 

 

 

 

制限事項及び留意事項 (Top)

  • Oracleは、Btrieve 等の ISAM 系のファイルマネージャと、排他制御、トランザクション等に関する仕様が異なるため、Btrieve 等の ISAM 系のファイルマネージャを使用する場合と Oracle 等の SQL RDBMSを使用する場合では、プログラムの作成方法が異なる部分があります。

  • Oracle8の以下に挙げる機能は、動作保証されておりません。
    ・LOBデータ型
    ・National Character Setのデータ型

  • 以下のデータベース特性のパラメータは、機能しておりません。
    ・ヒント
    ・XAトランザクション

  • MAGIC SQL パラメータの式では、以下の関数をサポートしておりません。(1000225)
    DVAL,  TVAL, ADDTIME

  • ストアドプロシジャーのINパラメータにスペースを渡す場合は、1バイトの文字型変数項目をセットして下さい。

  • 以下のタスクでは、レコード削除時にエラーが発生します。
    (1) トランザクションモードを「遅延」または、「ネスト遅延」に設定。
    (2) DBテーブルの「更新レコードの識別」パラメータを、「位置と更新項目」または「位置と選択項目」に設定。
    (3) レコードメインのセレクト項目として、メインテーブルのカラムを100個以上設定。

  • Ver8以前のバージョンのOLDDATEパラメータ、OLDRAWパラメータは無効になりました。

  • OSがWindows98の場合、画像表示用のイメージドライバーをすべてセットアップした環境で実行すると、Oracleサーバへのアクセス時に「OCI.DLL ダイナミックライブラリ初期化ルーチンのエラーです。」で接続できなくなることがあります。この場合、MagicのカレントフォルダーにあるLFxxx62N.DLL(xxx:イメージファイルの拡張子) で、使用しないイメージファイルのDLLを削除してください。(1000521)

 

 

 

 

 

 

Oracleのロック機構のみを使用するときの注意事項 (Top)

物理トランザクションモードのプログラムにおいて、Magicのロックファイル(mglock.dat)を非共用にし Oracleの並行処理制御機能のみを使用する場合、テーブルのアクセス規制はOracleの排他制御に依存します。

注意すべき点は、共有モードがR(=読込)の時に、MagicはOracleのSHAREモードのロックをかけますが、このモードでは、MagicのRモードと異なり、他の端末から処理(W=書出)モードでのアクセス(ファイルのオープン)を許可することです。

その際、後の端末がレコードへの書き出しを行い、レコードロックをかけようとする時に、先に共有Rモード、すなわちSHAREモードでロックをかけた端末が終了しない限り、後の端末は待ちの状態が発生します。また下表の特定の場合によっては、先のSHAREモードの端末側でデッドロックが発生することがあります。

以下にアクセス規制を挙げます。
なお、下表は、処理A から先にアクセスされたテーブルに対して、処理Bが後からアクセスした場合のアクセス規制を示しています。
R/W はアクセスモード R (読込)、共有モード W (書出)を表しています。

トランザクション(タスクレベル)

 

処理A

処理B アクセスモード 読込(R)  書出(W)
  共有 読込(R) 書出(W) なし(N) 読込(R) 書出(W) なし(N)
読込(R) 読込(R)     T- 注2 注2 T-
書出(W)            
なし(N) T-   T- 注2 注2 T-
書出(W) 読込(R) 注3   T- 注2,3,4 注2,4 T-
書出(W) 注3     注3 注1 注1
なし(N) T-   T- T- 注2 T-

注1: T+R- ですが、レコードロックが解除されるタイミングは処理AのPGを終了する時です。
注2: 処理A側でレコードに書込みを行うと、テーブルロックがかかります。
注3: レコードに書込みを行うと、処理Aがテーブルを閉じるまで黙り状態になることがあります。
注4: 処理Aでレコードの書込みを行う前に処理Bが実行された場合、いずれかでレコードの書込みのタイミングで「ORA-00060:デッドロック」のエラーが発生するか、フリーズすることがあります。

トランザクション(レコード前処理)

 

処理A

処理B アクセスモード 読込(R)  書出(W)
  共有 読込(R) 書出(W) なし(N) 読込(R) 書出(W) なし(N)
読込(R) 読込(R)     T-     T-
書出(W)            
なし(N) T-   T- T-   T-
書出(W) 読込(R) 注1   T- 注1   T-
書出(W) 注1   R- 注1   R-
なし(N) T-   T- T-   T-

T-: テーブルアクセスに制限があります(テーブルがオープンできません)。
R-: レコードアクセスに制限があります(レコードロックがかかります)。

注1:処理Aで行移動したときに書き込みが行われます。

 物理トランザクションモードで推奨する環境設定

  • 他のアプリケーションとのデータベースの共有を行う場合

[データベース]テーブルの[データベース特性] /[MAGICロック] 「テーブル」
プログラムの[ロック方式] オンラインタスクは「入力時」
バッチタスクは「即時」
ロックパス 環境ごとに違うロケーション
  • Magicでのみデータベースを操作し、従来のアクセス規制をなるだけ引き継ぎたい場合

データベース]テーブルの[データベース特性] /[MAGICロック] 「両方」
プログラムの[ロック方式] オンラインタスクは「入力時」
バッチタスクは「即時」
ロックパス 全てのMagicで同じロケーション
  • 物理トランザクションモードでのDBテーブル/共有パラメータと Oracleに発行されるSQL文の関係

共有モードW (ロックコマンドは発行されません)
共有モードR lock table ... in share mode
共有モードN lock table ... in exclusive mode
入力時(即時)ロック select ... for update

※共有モードW/Rを有効にするには、トランザクション開始をタスク前の前に設定する必要があります。

 

 

 

 

 

データベース情報での有効なパラメータ一覧 (Top)

[設定]/[DBMS]

  • ALPHA_DATE=Y,N
    Oracle の DATE 型のカラムを定義取得する場合、ALPHA_DATE=Y を設定することで、長さ 19 文字で YYYY-MM-DD HH:MM:SS フォーマットの Magic 文字型(ZString)
    に自動的にコンバートします


[設定]/[データベース]/[データベース特性]

 テーブル特性

  • CLUSTER="cluster-name"
    表がクラスタの一部となるように指定します。なお、クラスタ名の後に(列名)を入れないと「新規登録できません」のエラーになります。
    例.CLUSTER="TMP_USR(TMP_ID)"

  • INITRANS=n
    表に割り当てられた各データ・ブロック内で割り当てられるトランザクション・エントリの初期値を指定します。仕様はOracleのマニュアルを参照してください。

  • MAXTRANS=n
    表に割り当てられたデータ・ブロックを同時に更新することができるトランザクションの最大値を指定します。仕様はOracleのマニュアルを参照してください。

  • PCTFREE=n
    表の行に対する次回の更新に備えて、予約(確保)されている各表のデータ・ブロック中の領域の占有率を指定します。仕様はOracleのマニュアルを参照してください。

  • PCTUSED=n
    表の各データ・ブロックに対してOracleがメンテナンスしている使用中の領域の最小限の占有率を指定します。仕様はOracleのマニュアルを参照してください。

  • STORAGE="strage-clause"
    表に対する記憶特性を指定します。仕様はOracleのマニュアルを参照してください。

  • TABLESPACE="tablespace-name"
    Oracleがテーブルを作る表領域を示します。


 インデックス特性

  • TABLESPACE="tablespace-name"
    Oracleがインデックスを作る表領域を示します。

  • INITRANS=n
    インデックスに割り当てられた各データ・ブロック内で割り当てられるトランザクション・エントリの初期値を指定します。仕様はOracleのマニュアルを参照してください。

  • MAXTRANS=n
    インデックスに割り当てられたデータ・ブロックを同時に更新することができるトランザクションの最大値を指定します。仕様はOracleのマニュアルを参照してください。

  • PCTFREE=n
    インデックスの行に対する次回の更新に備えて、予約(確保)されている各表のデータ・ブロック中の領域の占有率を指定します。仕様はOracleのマニュアルを参照してください。

  • PCTUSED=n
    インデックスの各データ・ブロックに対してOracleがメンテナンスしている使用中の領域の最小限の占有率を指定します。仕様はOracleのマニュアルを参照してください。

  • STORAGE="strage-clause"
    インデックスに対する記憶特性を指定します。仕様はOracleのマニュアルを参照してください。

 

 

 

 

 

Oracle9iについて (Top)

  • Oracle8の互換機能にて評価しました。Oracle9iからの新機能は、未確認です。

  • 表領域を作成する場合、テーブル特性/SQLデータベース情報欄に設定可能であるEXTENTパラメータ等が無効になることがあります。
    この場合、表領域に対して、EXTENT MANAGEMENT DICTIONARY パラメータを付加して作成することにより可能になります。このパラメータの仕様については、Oracle9iのマニュアルを御覧下さい。

 

 

 

 

 

 

Ver9.01-9.1の変更点 (Top)

  • MAGIC SQL パラメータの式では、以下の関数がサポートされました。
    MOD, LOG, CHR, ASC, TIME, HOUR, MINUTE, SECOND, DSTR, TSTR, ADDDATE

 

 

 

 

 

 

Ver9.01-9.2の変更点 (Top)

  • 遅延トランザクションモードの子タスクで、更新テーブルのカラムが項目モデルで関連付けられており、かつカラム特性の「DBカラム名」がモデルから継承されている場合、Magicがフリーズする件に対応しました。

 

 

 

 

 

 

Ver9.2-9.1の変更点 (Top)

  • 256項目以上のカラムが定義されたテーブルに対して、テーブルリポジトリのAPGで新規にテーブルをオープンすると、不定期にMagicが異常終了する件に対応しました。(0745883)

  • MagicSQLの式に「ソ、表、噂」など、2バイト目が0x5Cの文字をセットして実行すると、正しく処理されない問題に対応しました。(1000436)

 

 

 

 

 

 

Ver9.30-9.3の変更点 (Top)

  • リンク結合が使用されているタスクで、Magic SQL Where句を使用すると、「ORA-00918:列の定義が未確定です。」とエラーが表示される件に対応しました。(0753787) 

 

 

 

 

 

 

Ver9.30-9.3aの変更点 (Top)

  • Oracleを使用したアプリケーションで、親タスクで定義されたコンポーネントテーブルのカラムを、子タスクのWhere句に指定した場合、実行時に異常終了する件に対応しました。(423832) 

 

 

 

以上