- TRUNCATE文は実行できない。
TRUNCATE TABLE TEST_TABLE@DBLINK
Error
[row:1,col:26] ORA-02021: リモート・データベースに対するDDL操作が無効です。
上記エラーが出る。
移行作業で、ターゲーット側にTRUNCATE&INSERTする対象テーブルを管理するテーブルを作成して、ソース側からJP1からPL/SQLを実行するようなジョブを作りたかった。
TRUNCATEがソース側から実施できないため、管理テーブルのMVIEWをターゲーット側に作成して、TRUNCATEするようにして対処した。
- ソースデータベースにパーティション指定した、INSERT INTO ~ SELECT ができない
パーティション指定すると以下のエラーになる。
※SRC_TABLEとTGT_TABLEは同じカラム構成
INSERT INTO TGT_TABLE@DBLINK SELECT * FROM SRC_TABLE PARTITION (P_1505_15);
Error
[row:1,col:1] ORA-02070: データベースDBLINKはこのコンテキストではextended partition nameをサポートしません。
TGT_TABLEは1億件近いテーブルだが、日別のレンジパーティション構成なのでUSER_TAB_PARTITONを見て、INSERT&COMMITするループのPL/SQLを作成したが、これができなかったので、パーティション名の命名規約から処理日(パーティションキー)をTO_CHAR&TO_DATEで動的に作成してWHERE句指定することとした。
DBLINK越しのリモートデータベースへの操作はドキュメントで見当たらないのですが、まとまっている場所をご存知の方教えて下さい。
バージョンは11gR2 EEです。