• ベストアンサー

IMPORT処理速度 

EXPORTされたダンプファイルをそのままIMPORTすると 数時間もかかってしまいます。(ORACLE9i)(エラーは出ません) 原因はあるテーブルの件数がかなりの件数に達しているためのようなのですが、IMPORT処理を速くする方法というのは何かあるのでしょうか? もしくはIMPORTする際にデータの範囲指定のようなことはできるのでしょうか?

  • Oracle
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.1

csvに落として、sqlldrのダイレクトモードで投入する、 というやり方で良いのなら、その方が早いです。 impは全件正直にinsertするので、データが多いと、 数時間というオーダーは普通ですよね・・・。 結局はinsertなので、通常運用時のパフォーマンスが充分な状況なら、 劇的な変化を求めるのは厳しいんじゃないでしょうか。 各種バッファを一時的に大きくしてみる、くらいでしょうか・・・ データの範囲指定は、 imp時ではなく、exp時に、QUERYオプションで条件指定します。

fuliefulie
質問者

お礼

返事が遅くなってしまいましたが、 ご回答ありがとうございました。 やっぱり時間が掛かってしまうのはしょうがないのですね。

関連するQ&A

  • バイナリデータが入ったDMPファイルのインポート

    今DMPファイルのインポートを行った際、 ”ダンプ・ファイルをエクスポートしたダイレクト・パスには無効な列長が入っています” というエラーメッセージが表示されてしまい、インポートすることができません。 1つのテーブルのデータとしてバイナリデータが含まれているのでそれが原因だと思い、テーブル名指定でインポートを行いましたがエラーは回避されませんでした。 データごとむりであったとしても、せめてテーブル構造だけでも復元したいのですが・・・。 何か方法があったら教えてください。 ※パラメータのROWS=Yにしてテーブル名指定でインポートも無理でした・・・

  • データのインポートの速度について

    mysqlの1個のテーブル(約1万行)をphpMyAdminでエクスポートしました。エクスポートは一瞬で終わりました。 それを再びphpMyAdminからインポートしようとしたのですが、データが重いらしくタイムアウトのエラーが出てしまいました。 sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。 きっとphpMyAdminの方で、エクスポートする時、「これくらいのかたまりずつ区切っておかないと、スムーズにインポートできなくてエラーになっちゃうよ」と気を利かせて区切ってくれているのだろうと思います。 仕方ないので、sqlファイルを「約200行ずつのinsert文」に分割して、phpMyAdminからインポートしました。 全部で1万行ほどのデータなので、50回ほどその作業を繰り返しました。 エクスポートはスムーズだったので、インポートがこんなに手間がかかるとは思っていませんでした。 最初にその1万行のデータをテーブルに読み込ませたのは、別のcsvファイルを load data infile したり、項目の並び順を入れ替えて insert したりするphpファイルを書いたのですが、さほど重くもなくスムーズに処理できました。 phpMyAdminを使わない方法の方が圧倒的に早い気がするのですが、大きいデータをインポートする際のスムーズな方法がありましたら、アドバイスいただけますでしょうか?

  • データのエクスポート/インポート

    あるシノニムのデータをエクスポートして、その後、エクスポートしたファイルを一部編集して、インポートしたいと思っています。DBはOracle 9iです。 テーブルのエクスポート/インポートだと、CSEなどのツールで実施できるのですが、シノニムだと同様の操作では実施できませんでした。 初心者でも簡単にできる方法を教えてください

  • oracleのテーブルimportについて

    oracle10gを使用しております。 oracleのimportについて質問いたします。 テーブルAをExportしてdumpファイルを作成し、テーブルAより任意のレコードを削除、 commitを行います。 後に、テーブルレコードを削除前に戻したいと思った場合、 dumpファイルを用いて、削除したレコードだけを元に戻すことは可能でしょうか? 現状ではテーブルAを削除し、dumpファイルをimportしてテーブル、レコードを復元しておりますが、 これ以外に方法はありますでしょうか。 回答、宜しくお願いします。

  • エクスポート&インポートのバージョンの違いについて

    Oracle9iでエクスポートしたデータを Oracle8iにインポートできますか? 試したのですが上記が原因か判断がつきませんでした。 アドバイスお願いします。

  • インポートエラー(IMP-00010)

    Solaris上のOracle9.2.0 でエクスポートしたファイルを Windows上のOracle9.0.1 にインポートしようとしたら 以下のエラーがでました ----------------------------------- IMP-00010:有効なエクスポート・ファイルではありません。ヘッダーは検証に失敗しました IMP-00000:エラーが発生したためインポートを終了します。 ----------------------------------- 原因は、Oracleのバージョン違い(9.2.0から9.0.1へのバージョンダウン)による物でしょうか?。 それとも、SolarisからWindowsにインポートした事による、例えば文字コード等による物でしょうか? また、原因に対する解決策はありますでしょうか?

  • インポートできない。

    あるテーブルのデータをダンプしてエクスポート(export_utf8.sql)しました。 それを他のMysqlへインポートしようと以下のコマンドを実行したところ、 mysql -p --default-character-set=utf8 db < export_utf8.sql 以下のエラーが出力されました。 Unknown MySQL server host 'border="1"' (1) おそらく、エスケープ関連でコケているものかと思いますが、 どうすればインポートできるのかわかりません。 ご存知の方、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Oracleのインポートについて

    Oracle8iでエクスポートしたデータを、Oracle9iでインポートした場合、何か不具合が発生する可能性がありますでしょうか? データ型などで問題はあると認識していますが、そもそも、この行為自体は、推奨されているのでしょうか? 調べてみたのですが、しっかり記述されている文面に行き当たらず、困っています。 どなたかご教授願います。

  • 特定ユーザーのデータインポート時にフリーズ

    はじめまして。 このたび、サーバー機のリプレイスに伴いexp/impを使ってユーザーデータの移行を行っていますが、 その際にトラブルが発生いたしました。 ■移行元サーバー (NEC製) Windows 2000 Server Oracle 8i ■移行先サーバー (IBM製) Windows Server 2003 R2 SP2 Oracle 9i (9.2.0.2) A,B,C(実際の名前ではありません)という3ユーザーのデータをユーザーモードでエクスポートし、 エクスポートは正常終了しました。 しかし、移行先のサーバーでインポートをしたところ、A,Bは正常にインポートできましたが、Cの インポートの際に、特定のテーブルでインポートが停止し、そのままOSがフリーズしてしまいます。 フリーズしたOSは何もできない状態で、Windowsの通常起動もできずセーフモードで立ち上げるしか できません。セーフモードで、OracleServiceDB(※ここでSIDをDBと仮定させていただきます)を サービス設定から、自動起動しない設定にすれば、OSは通常起動でき操作も問題ありません。 Cのユーザーデータをインポートすると、OracleServiceDB がおかしくなり、これが開始状態だと OSがフリーズしてしまいます。何もできず、タスクマネージャも起動しません。キーボードも反応しません。 ※電源を直接切る以外シャットダウン不可能です 当初は、エクスポートしたCユーザーのダンプファイルの問題かと思いましたが、問題のダンプファイルを、 HP製のWindows Server 2003 R2 SP2 ・ Oracle 9i (9.2.0.2) にインポートすると正常にインポートが 可能でした。そのため、ダンプファイルの問題とも考えにくく、ハードウェアの相違が影響しているのでは ないかと考えられなくもない状態ですが、どうも原因が分かりません。 同様のトラブルを経験された方や、何かしらの対処法をご存知の方がいらっしゃいましたら、アドバイスいた だければ助かります。

  • 処理高速の為にすること(oracle8.1i)

    oracle8.1iを使っています。 データ量が増えてきたために、処理が遅くなってきました。 下記のことを行うと思っていますが (1)データをEXPORTしたのち、DBを削除し、再度DBを作成し、EXPORTしたデータをIMPORTする (2)INDEXをはりなおす。 (1)と(2)は同じ効果がありますか? どちらの方が効果がありますか?