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

 

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

Ver9.01-9.3 追加情報

Magic eBusiness Platform Ver9.01

 

 

 

 

 

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

 

 

 

使用条件

動作環境及び注意事項

制限事項及び留意事項

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

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

Ver9.01-9.1の変更点

Ver9.01-9.2の変更点

 

 

 

 

 

 

 

使用条件 (Top)

 

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

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

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

 

 

 

 

 

 

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

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

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

  • 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

 

 

 

 

 

 

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

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

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

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

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

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

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

 

 

 

 

 

 

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)
    に自動的にコンバートします

  • OLDDATE=Y,N
    日付型記憶型式「String Date」(サイズ 8)のカラムの扱いについて、dbMAGIC Ver7でOLDDATE=Y のパラメータで作成したデータとの互換性を保つ時にだけ(すなわちRAW型)、 OLDDATE=Y を設定してください。

  • OLDRAW=Y,N
    RAW 型のカラムの扱いについて、 dbMAGIC Ver7で OLDRAW=Y のパラメータで作成したデータとの互換性を保つ時にだけ、OLDRAW=Y を設定してください。


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

  • OLDDATE=Y,N
    DBMSの場合と同じです。

  • OLDRAW=Y,N
    DBMSの場合と同じです。

 テーブル特性

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

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

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

  • OLDDATE=Y,N
    DBMSのOLDDATE=Yの場合と同じです。

  • OLDRAW=Y,N
    DBMSのOLDRAW=Yの場合と同じです。

  • 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のマニュアルを参照してください。

 

 

 

 

 

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がフリーズする件に対応しました。

 

 

 

以上