- PR -

データの入れ替えについて

1
投稿者投稿内容
ueq
会議室デビュー日: 2006/07/18
投稿数: 19
投稿日時: 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/03/22
投稿数: 19
投稿日時: 2006-11-29 20:48
索引にROWID(格納アドレス)が含まれているので流用はできないでしょうね
ueq
会議室デビュー日: 2006/07/18
投稿数: 19
投稿日時: 2006-12-04 09:50
Tetra様
 返信有難う御座います。

 一度作成した索引をそのまま使用し、データの入れ替え
 を行う方式はやめることにします。

データ入れ替え方式について、
以下の2案を検討しています。
データの入れ替えについては、
追加・更新・削除を考えています。
(対象テーブル数:約160個
 データ容量:約20GB)
1)追加・更新
 <案@>
 PLSQLを用いて、キー項目を条件にし
 INSERT/UPDATEを繰り返す。
 <案A>
 oracleのmerge文を使用する。キー項目を条件。
2)削除
minus関数を利用し、移行先から移行元の
差分レコードを削除する。

追加・更新部分について教えて頂きたいことですが、
merge文を使用する場合、追加件数/更新件数の
区別は付くのでしょうか?
もし付くのであればその方法を教えて頂けないでしょうか。
またPLSQLにて実装する場合、汎用的に使用することは、
可能でしょうか?

どのなたかご存知の方いらっしゃいましたら
宜しくお願い致します。

1

スキルアップ/キャリアアップ(JOB@IT)