• 締切済み

EXPコマンドでDIRECT=Yの弊害は?

Oracle10gを使用。 EXPコマンドを高速するためにDIRECT=Y RECORDLENGTH=65535 を指定していますが このオプションをつけることで何か弊害は発生しますか? 弊害がない場合は、なぜデフォルトで上記オプションが指定されていないのか教えてください。

  • Oracle
  • 回答数2
  • ありがとう数4

みんなの回答

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

以下の問題がありますね。 ダイレクト・パス・エクスポートのパフォーマンスの問題 ダイレクト・パス・エクスポートの起動時に、RECORDLENGTH パラメータの値を大きくす ると、パフォーマンスが向上する場合があります。実際のパフォーマンス向上の度合いは、 次の要因によって異なります。  DB_BLOCK_SIZE  表の列の型  I/O レイアウト(エクスポート・ファイルの転送先ドライブは、データベース・ファイ ルが常駐するディスク・ドライブとは別にする。) RECORDLENGTH の値は、次のように設定することをお薦めします。  ファイル・システムのI/O ブロック・サイズの倍数であること。  DB_BLOCK_SIZE の倍数であること。 RECORDLENGTH=65535 は > ファイル・システムのI/O ブロック・サイズの倍数であること。 > DB_BLOCK_SIZE の倍数であること。 を満たしてませんね。

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.1

マニュアルの以下を読んでください。 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/exp_imp.html#27801 >ダイレクト・パスで表をエクスポートする場合は、他のトランザクションが同じ表を更新しておらず、ロールバック・セグメントが十分なサイズがあることを確認してください。 >他のトランザクションが同じ表を更新していたり、ロールバック・セグメントのサイズが不十分な場合は、次のエラーが返される場合があります。 >ORA-01555: スナップショットが古すぎます: ロールバック・セグメントstring、名前stringが小さすぎます。 >エクスポートは正常に実行されず、終了します。

関連するQ&A

  • oracle8.1.6 expのdirectコマンドについて

    Oracle8.1.6でのdmpファイルのエクスポートについて御伺いしたい事があります。 現在、dmpファイルのエクスポート時間の高速化を検討しております。 手法の1つとしてdirectコマンドを用いる方法を考えており、 試した結果は処理時間がおよそ1/3程度まで短縮できました。 directコマンドにてエクスポートしたdmpファイルを再度インポートし、問題無かった所まで確認したのですが1つ疑問点があります。 directコマンドの使用有無によってエクスポートしたdmpファイルのサイズが異なっているのは何が違いなのでしょうか? エクスポートの手法が異なるだけであり、吐き出し情報は相違無いと思っていたので。。 よろしくお願い致します。 EXP ****/****@**** FILE=C:\EXP.DMP FULL=N dmpファイルサイズ=4,345,638(KB) EXP ****/****@**** FILE=C:\EXP.DMP FULL=N DIRECT=Y dmpファイルサイズ=4,318,878(KB)

  • exp / imp について質問

    Oracle 8.1.7.0 にあるデータを【exp】にてダンプし そのデータを、 Oracle 8.1.7.4 に【imp】しました。 imp自体はエラーも出ず、正常に終了し、通常に使用できますが、そのデータを、【exp】しようとコマンドを実行しましたら、 EXP-00008: Oracleエラー 904が発生しました。 ORA-00904: 列名が無効です。 EXP-00000: エラーが発生したためエクスポートを終了します。 と、エラーが出て、 expが行えません。 8.1.7.0で expすれば良いとは思いますが、 8.1.7.4で expする方法がありましたら教えて頂きたいです。

  • expでの質問

    Oracle初心者です。 Solaris8 + Oracle8i という環境下でexpを使用して、 データのバックアップ環境を構築しようと考えています。 単純にファイルに吐き出すということなので、データ量 が膨大な数であった場合、1ファイルに収まりきらない (2Gを超える)可能性があると予想しております。 そういう場合はどのように回避するのが一般的なのでしょうか? よろしくお願いします。

  • EXP時のSELECT句

    Oracle8iからエクスポートの新機能として、QUERYキーワードが加わりましたが、それを使おうとすると以下のエラーが返ってきます。 exp scott/tiger tables=clients query="where client_no<120000"; LRM-00112: パラメータ queryに複数の値を指定できません。 EXP-00019: パラメータ処理に失敗しました(EXP HELP=Yを入力するとヘルプ表示)。 EXP-00000: エラーが発生したためエクスポートを終了します。 いろいろ試してみたのですが、よく分かりません。 どなたか、正しいQUERYの使い方を知っていましたら教えていただけないでしょうか? ちなみに、OSは HP-UXです。

  • Exp.exeに指定するparfileパラメータについて

    検索させていただきましたが見つからなかったので質問させていただきます。 表題の件、以下の様にコマンドライン実行したとします。 exp parfile=C:\PARFILE.par --ParFile.par内-- userid=XXX/YYY@DB full=y file=C:\EXPFILE.DMP ----------------- 上記の場合、正しく実行されると思います。 質問は次のパターンの場合、正しく機能するのかという所です。 exp parfile=C:\PARFILE.par full=y file=C:\EXPFILE.DMP --ParFile.par内-- userid=XXX/YYY@DB ----------------- このように、parfileを指定しているにも関わらず別のパラメータをコマンドライン上で一緒に指定する事は可能なのでしょうか? 自分で試す事が出来れば一番良いのですが、手元に環境がなくて困っています。 ご回答よろしくお願いいたします。

  • 順序のEXP/IMPについて

    Oracle9i 9.2.0 テーブルのデータも権限もなく、順序のみをEXPしてIMPしたいのですが、どのようにしたらよいでしょうか? //EXP C:\oracle\ora92\bin\EXP.EXE ユーザ/パス@サービス file='C:\DB移行作業 \SEQUENCE_EXP.DMP' ROWS=N INDEXES=N TRIGGERS=N //IMP C:\oracle\ora92\bin\imp.exe toshi/toshi@grjctc2 file='DB移行作業\SEQUENCE_EXP.DMP' FEEDBACK=100000 IGNORE=Y ROWS=N INDEXES=N CONSTRAINTS=N ANALYZE=N TABLES=(住所テーブル) 上記で一応うまく登録されたようですが、 よくわかりません。 どなたかアドバイスお願いします。

  • Oracle8iでテーブルをエクスポートする方法

    Oracle10gを使用しています。Oracle8iから特定のテーブルを抽出してOracle10gに入れようとしましたが、Oracle10gのexpコマンドは互換性の問題で8iに対して使えませんでした。そこでOracle8iのexpコマンドを使用しようかと考えましたが、テーブルごとのエクスポートができないとのことで不可(データベースが大きすぎるため、そもそも8iのExpコマンドを実行できる権限を持っていないのでできませんが)。 仕方がないのでExpコマンドはあきらめて、テーブル定義抽出→データをCSVまたはSQLで抽出という手順でデータを移そうかと考えています。データの抽出はできたのですが、テーブル定義の取得は10gで使えるdbms_metadata.get_ddlが使用できないので取得できずにこまっています。8iでテーブル定義を取得するにはどうしたらいいのでしょうか? なお当方8iのデータベースのSystem/Sys権限を所有していないません。また8iがインストールされているサーバへログインすることもできません。それを考慮した上で実現可能な方法をご提示願います。

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

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

  • 上位バージョンへのインポートに関して

    上位バージョンへのインポートに関して Oracle8 R8.0.5 から Oracle10g r 10.20.0.1.0 へ exp/imp したいと考えています。 そもそもOracle は、上バージョンへのインポートは可能かと思われますが、これだけバージョン が異なるものへのインポートは可能なのでしょうか??? コマンドは単純に、  Oracle 8 側は、   exp user/pass full=y file=c:\パス  Oracle 10g 側は、 imp user/pass@orcl full=y file=c:\パス としました。 実際にやってみたところ、うまくいかず。。。。 何か方法があれば教えて下さい。 よろしくお願いします。

  • Oracle インスタンスの exp について

    Oracle9iR2(9.2.0.8) EE を使用しています。(OS は HP-UX 64bit) テストの為、開発環境でインスタンスの定義の exp を行ったところ数分で終了しました。 ところが、いざ本番環境で同様の作業を行ったところ、3時間以上たっても終了しませんでした。 この2環境の差 ・初期化パラメータの差はアーカイブログモードか否か。(本番がアーカイブログモード) ・データ量が本番(150GB程度) >> 開発(30GB程度) 本番環境での exp 中 40MB 程度の dmp を出力するのに 60GB 程度のアーカイブログを出力しており、 event を確認すると log file sync が頻繁に発生していました。 (サイズは中断したので最終的にはもっと増える可能性が有りました。) 作業中 DB アクセスは本 exp のみで他の作業は行っていませんでした。 また、本作業中サーバの vmstat を確認していたのですが、ほぼ常時 idle 80% を占めていました。 disk 上の空容量も十分にある状態でした。 実行した exp のコマンドは下記のとおりです。(開発、本番両環境共) exp system/password@sid file=instance_def.dmp log=instance_def.log full=y compress=n rows=n direct=y 上記 exp コマンドのパフォーマンス劣化を解消する方法についてご教示願います。 インスタンスの設定を no archive log モードに変更する必要が有ったのでしょうか? または、他に何か懸念される設定や、データ量の差等の影響が有りますでしょうか。 よろしくお願いいたします。