oracleのテーブルExportについて

このQ&Aのポイント
  • oracle10gを使用しており、テーブルに億桁のレコードが登録されている場合、Exportに時間がかかる問題や出力ファイルのサイズが大きくなる問題があります。
  • テーブルレコードを数万単位に分割してExportすることは可能であり、分割したファイルをImportする際も一つのテーブルでレコードを管理することが可能です。
  • 上記の問題に対処するため、expコマンドを使用してExportを実行します。コマンドにはスキーマ名、パスワード、制約、グラント、インデックス、テーブル名、ファイル名、ログの指定が必要です。
回答を見る
  • ベストアンサー

oracleのテーブルExportについて

oracle10gを使用しております。 テーブルに億桁のレコードが登録してある場合、 テーブルExportを行うと時間がかかってしまう&出力dumpファイルが 大きくなってしまうといった弊害があると思うのですが、 テーブルレコードを数万単位に分割してExportすることは可能でしょうか? また、その分割したファイルをImportする際は、Export前と同じく 一つのテーブルでレコードを管理することが可能でしょうか。 大雑把な質問で申し訳ありませんが、宜しくお願いします。 また、今回Export時に使用するコマンドは以下になります。 exp スキーマ名/パスワード constraints=y grants=y indexes=y tables=テーブルA file= テーブルA.dmp log=テーブルA.log

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

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

queryオプションというのはあります。 ただ、速度を向上させたいならdirectモードを使用したほうがいいと思います。 索引も外しておき、インポートしてから作成することをおすすめします。

Kuroichi01
質問者

お礼

回答ありがとうございます。 速度向上も必要なので、いいアイデアをいただきました。

関連するQ&A

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

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

  • オラクルのエクスポートについて

    こんにちわ。 あるdmpファイルをインポートした際、その中のデータには主キーの重複したレコードが存在しているらしく一意制約エラーでおちてしまいます。 もちろん、テーブル構造もエクスポートしている為、エクスポートした時点で、テーブル内がそのような状況になるということは有り得ないはずなのですが、バイナリエディタで覗くと実際、キーの重複したデータが存在しています。 というわけで、dmpファイルをバイナリエディタなどで編集するというようなことはナシで(あくまでオラクルユーティリティ内の範疇で)、そのようなdmpファイルを強引に作ることが出来るのでしょうか? よろしくお願いします。

  • oracleのExportシェル作成

    oracle10gを使用しています。 テーブル単位のExportを行うシェルを作成しようと思っております。 テーブルをfilesizeを指定し分割したいのですが、 "エクスポート・ファイル: EXPDAT.DMP >"を検知、新たにファイル名を指定、Enter の書き方がわかりません。お力添え宜しくお願いします。 ファイル名は最初にexp_dump01.dmpを指定し、以降はexp_dump02.dmpと 番号をインクリメントさせたいと思っております。 現在、以下のようなシェルを作成しました。 #!/bin/sh #変数指定 CON='エクスポート・ファイル: expdat.dmp >' RET='エクスポートは警告なしで正常終了しました。' ICOUNT=1 #コマンド実行 expコマンド #結果取得 VAR=`command` #取得結果が次のファイル名を要求している場合 while [VAR=CON] do ファイル名をインクリメントしたものを指定 done #取得結果が正常終了を示した場合 if [VAR = RET] echo 'Exportが終了しました。' fi #次のコマンド実行

  • ORACLEでのexportのbatファイルの記述

    Windows2000ServerでOracle8.1.7を使用しています。 定期的にバックアップを取りたいため、exportを行う Batファイルを以下のように記述しましたが、うまくいきません。 ■batファイル----------------------- exp user/password parfile=EXP.TXT ----------------------------------- ■EXP.TXT owner=owner file=d:\back\exp.dmp log=d:\back\backup.log grants=y indexes=y ----------------------------------- このbatファイルを実行すると、文章ではうまく表現できないのですが 「exp user/password parfile=EXP.TXT」 の部分がDOS窓上で永遠に何行もスクロールしていっこうに コマンドが実行されません。 ただ「exp user/password parfile=EXP.TXT」と dos窓をあけて手入力するときちんと実行されます。 oracle7.3.4でも「exp73」で行えばこのbatファイルで きちんとexportが始まります。 ORACLEというよりはdosの知識かと思われますが どなたか、きちんと実行できる方法を教えてください。

  • oracleのimpdpでORA-39166

    ORALCEのexpdpおよびimpdpの勉強のために自宅環境で操作していたところ、 impdpにてORA-39166(オブジェクトが見つからない)が発生してしまいした。 いろいろ調べてみたのですが、解決に至ってないためお力添えをお願いいたします。 【環境】 OS : linux ※CentOS(64bit) ORALCE11gXE 【やりたいこと】 studyスキーマのTEST1テーブルをexpdpでエクスポート(content=data_only)し、 同じスキーマ内のTEST2テーブルにimpdpにてデータを入れる。 【発生までの操作】 1.expdp system/パスワード@XE directory=test_dir tables=study.TEST1 log=test_exp.log content=data_only 2.impdp system/パスワード@XE directory=test_dir dumpfile=expdat.dmp log=test_imp.log tables=study.TEST2 content=data_only 2の操作をしたタイミングで以下のメッセージ。 ORA-39002: invalid operation ORA-39166: Object STUDY.TEST2 was not found. 【備考】 ・TEST1およびTEST2はまったく同じテーブル構造です。studyユーザで作成してます。 ・STUDY.TEST2は存在します。 (「sqlplus study/パスワード@XE」でログインしdesc TEST2で確認できるため) ・exdpは正常に終了しており、dumpファイルは「expdat.dmp」で作成されています。 以上です。 ご教授のほどよろしくお願いいたします。

  • テーブルのエクスポート・インポート

    SQL Server2005 を使用しています。 テーブルのインポート・エクスポートに関して質問があります。 今まで、Oracleを主に使用していて、「EXP」「IMP」コマンドを使用して DMPファイルを介して別PCのデータベース間でテーブルのやり取りをしていました。(DB上のテーブルすべてや特定のテーブルのみなど) 同様のことをSQL Serverで実現したく下記を試したのですが上手くいきません。 1.Management Studio で「タスク」→「データのインポート(エクスポート)」   フラットファイル、Excel、MDBファイルなど試したのですが、   これらの中間ファイルを介した際にデータ型が変わってしまい   元の型のまま戻せない。   Oracleの「DMP」ファイルのようなものには落とせないのでしょうか? 2.「bcp」コマンド   これに関しては、複雑でよくわかりませんでした。   もし、このコマンドで実現可能であれば、やり方を教えて下さると   助かります。 以上、ながなが書きましたが宜しくお願い致します。

  • エクスポートしたファイルを別テーブルへインポートする方法

    エクスポートしたファイルを別テーブルへインポートする方法を教えてください。 perlでテーブル名称だけを置換する方法を考えたのですが、ダンプファイルのレコード数が多いため、時間がかかりすぎてしまいます。 うまくデータ部分以外のヘッダ部分のテーブル名を変えるか、それ以外の方法ってないのでしょうか?

  • oracle ダンプファイルのサイズとインポート先の表領域の使用サイズ

    oracle ダンプファイルのサイズとインポート先の表領域の使用サイズの関係 あるダンプファイル(2.5GB)をオラクルDBへimportしたら、 そのDBの表領域が10GBほど使用されました。 2.5GBのものをimportしたのに、なぜここまで表領域を消費するのでしょうか? (これまでこのようなことはありませんでした。) 表領域の使用サイズをもっと少なくするにはどうすればよいのでしょうか? エクスポート時のコマンド exp aaaa/aaaa file=bbbb.dmp log=exp_cccc.log consistent=y インポート時のコマンド imp aaaa/aaaa file=bbbb.dmp log=imp_cccc.log エクスポート時に「compress=n」をつけたり、 インポート時に「ignore=y」をつけたりしたのですが、 とくに変化はありませんでした。

  • OracleのIMPについて

    Oracle8iからOracle11gへのIMPについて教えてください。 現在、Oracleデータを8iから11gに移す作業を行っているのですが、特定のテーブルのみIMPの時間がかかっています。 4000万件のデータのIMPは1時間くらいで終わりますが特定のテーブルはデータ量が400万件にもかかわらず4時間くらいかかります。 原因等ありますでしょうか? ちなみに、IMPは、 imp XXXX/XXXX@XXXX file=TEST.DMP tables = TESTTABLE log = d:\test.log commit = Y ignore = Y の形式で行っています。

  • oracleでexpdpを使いデータをexport

    こんにちは 現在oracleでexpdpを使い、目的のテーブルをexportしたいと思っていますが、エラーが出て出来ません。 oracleのバージョンは10.2です 行った作業は下記です 1sqlplusにログイン >sqlplus ユーザ名/パスワード@データベース別名 2.ディレクトリオブジェクトの作成 >create directory ディレクトリオブジェクト名 as 'ディレクトリのフルパス'; 3.使用ユーザにディレクトリに対する読み込み書き込み権限を付ける >grant read,write on directory ディレクトリオブジェクト名 to ユーザ名; 4.sqlplusからログオフし、ディレクトリを作成。rootで入り、chmodで777にディレクトリの権限を変更 expdpを実行 この時のユーザーはgrant権限で読み込み書き込みを与えたユーザー >expdp ユーザ名/パスワード@データベース別名 DIRECTORY=ディレクトリオブジェクト名 DUMPFILE=ダンプファイル名 LOGFILE=ログファイル名 ==ここからエラーが出ます== ORA-39001: 引数値が無効です ORA-39000: ダンプ・ファイル指定が無効です ORA-31641: ダンプ・ファイル"/xxxx/xxxx.dmp"を作成できません ORA-27040: ファイルの作成エラー、ファイルを作成できません SVR4 Error: 13: Permission denied ご存知の方いらっしゃいましたらエラー退避方法教えていただけないでしょうか? どうぞよろしくお願いいたします