- - PR -
リカバリの高速化
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-21 11:22
Oracle9iを使っています。
今、tableを以下の方法でバックアップを取りました。 create table A_BAK as select * from A; それで、一度テーブルAを空にして、A_BAKのデータを戻そうとしました。 truncate table A; insert into A select * from A_BAK; しかし、このinsertがなかなか終わりません。(丸一日ほど) テーブルAには100万件以上のデータが入っています。 それでだろうと思うのですが、もっと高速にデータを復旧出来る方法はないでしょうか。 アドバイスが御座いましたら宜しくお願い致します。 |
|
投稿日時: 2007-11-21 11:40
100万件が200万件でも、丸一日かかるってのはちょっと異常かも。
インデックスとか、トリガーとか、制約とか、見直すべき点はあると思います。 で、本題ですが、バックアップをexpでとって、impでレストアすれば、 insertにかかる多くのコストを削減できます。 あるいは ALTER TABLE A_BAK RENAME TO A とか。 [追記] RENAMEだとテーブル以外のオブジェクトを復元する必要があります。 [/追記] [ メッセージ編集済み 編集者: こあら 編集日時 2007-11-21 11:44 ] |
|
投稿日時: 2007-11-21 12:45
こあら様ご返答ありがとうございます。
名前の違うテーブルに対してexport,importは出来るのでしょうか? |
|
投稿日時: 2007-11-21 15:26
すみません自己解決しました。
エラーが出ないので確証は持てませんが、どうもロールバックセグメントが足らなかったようで、1000件ずつcommitするプロシージャを組んで実行したら順調にinsert出来ました。 ありがとうございました。 |
1