- - PR -
データの入れ替えについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2006-11-29 20:06
データの入れ替えについて
■移行元 ・Oracleバージョン:Oracle8i 8.1.7.4 ・使用OS :HP-UX 11.00 ■移行先 ・Oracleバージョン:Oracle10g 10.1.0 IPF版 ・使用OS :HP-UX 11iv.2 データ検証の為に、事前に移行先にはデータをロードし (索引作成も実施しています)移行元と移行先の同期合わせの為に 以下の方式を検討しています。 @移行元よりデータ抽出(FastUnload) A移行先の一時テーブルにデータロード(SQL*Loader) B移行先の本番テーブルをドロップ C一時テーブルを本番テーブルにリネーム ここで問題なのですが同期を合わす時間が、あまりなく (データロードの時間が約1時間ぐらいあるぐらいです。) Bのドロップにより紐付く索引も削除されてしまいます。 もちろんデータロード後に再度索引作成を実施できれば 良いのですが最長で索引作成時間に約3時間かかるものも あります。 ちなみに、抽出データについては、最大約20GBです。 一度作成した索引をそのまま使用し、データの入れ替えが 可能な方法をご存知でしたら教えていただけないでしょうか。 宜しくお願い致します。 |
|
投稿日時: 2006-11-29 20:48
索引にROWID(格納アドレス)が含まれているので流用はできないでしょうね
|
|
投稿日時: 2006-12-04 09:50
Tetra様
返信有難う御座います。 一度作成した索引をそのまま使用し、データの入れ替え を行う方式はやめることにします。 データ入れ替え方式について、 以下の2案を検討しています。 データの入れ替えについては、 追加・更新・削除を考えています。 (対象テーブル数:約160個 データ容量:約20GB) 1)追加・更新 <案@> PLSQLを用いて、キー項目を条件にし INSERT/UPDATEを繰り返す。 <案A> oracleのmerge文を使用する。キー項目を条件。 2)削除 minus関数を利用し、移行先から移行元の 差分レコードを削除する。 追加・更新部分について教えて頂きたいことですが、 merge文を使用する場合、追加件数/更新件数の 区別は付くのでしょうか? もし付くのであればその方法を教えて頂けないでしょうか。 またPLSQLにて実装する場合、汎用的に使用することは、 可能でしょうか? どのなたかご存知の方いらっしゃいましたら 宜しくお願い致します。 |
1
