2020年3月25日水曜日

ORA-22992対策:TMPテーブルによるBLOBのINSERT/SELECT

Remote TableへINSERT新規登録
  1. テーブル定義
    --臨時テーブル
  2. CREATE GLOBAL TEMPORARY TABLE TMP_T1 (
      ID INT,
      X CLOB
    )ON COMMIT PRESERVE ROWS;    --リモート対象テーブル
    CREATE GLOBAL TABLE T1 ( 
      ID INT,
      X CLOB
    )

  3. クリア臨時テーブル
  4. TRUNCATE TABLE TMP_T1;


  5. 臨時テーブルへデータ新規登録
  6. INSERT INTO TMP_T1 VALUES ( 1, EMPTY_CLOB());

  7. リモートテーブルへデータ登録by INSERT SELECT
  8. INSERT INTO T1@DBLINK1 SELECT * FROM TMP_T1;

  9. コミット
    COMMIT;
Remote TableよりデータSELECT

  1. クリア臨時テーブル
  2. TRUNCATE TABLE TMP_T1;

  3. リモートテーブルより検索し、臨時テーブルへ新規登録
    INSERT INTO TMP_T1  SELECT * FROM T1@WEBORCL;


  4. 臨時テーブルよりデータ検索
  5. SELECT * FROM TMP_T1;

  6. コミット
    COMMIT;

1 件のコメント:

  1. 設計書にBLOBと記載されていたが、DBに実定義がLONG RAWであり、
    TMP TABLE + DBLINK経由で登録必要がなく、直接INSERT TABLE@DBLINK(IMG_RAW)VALUES(BYTE_ARRAY)が可能になリます。

    ただ、LONG、LONG RAWには制限があり、ORACLEから非推薦となっていた、LOBの利用推薦しています。

    返信削除

ITIL4 Foundation Study Guide 2 : 4 Dimensions and 6 Factors

4  Dimensions:  Dimension1: Organizations & People Dimension2: Information & Technology Dimension3: Partners & Suppliers D...