0

CLOBフィールドを含むファイルにデータをOracleデータベースに挿入する方法。

ファイルから読み取ります。Oracleデータベースに挿入します

CLOBデータが存在する場合、いくつかの問題が発生する可能性があります。

ありがとう、Naveen

4

3 に答える 3

3

ファイルがデータベースサーバーに配置されているか(または配置できるか)、またはクライアントマシンからファイルをロードすることが意図されているかどうかに応じて、通常はSQL * Loaderまたは外部テーブルをお勧めします。

SQL*Loader 制御ファイルの詳細は、ファイルの形式によって異なりますが、ドキュメントには、データ ファイルに格納された CLOB データをロードする例が記載されています。

于 2011-02-10T19:00:33.817 に答える
1

ボトルネックを最小限に抑えます。

  • ファイルを移動して、適切な太いパイプで DB サーバーに直接アクセスできるようにします。
  • データベースのデータファイルには (RAID 5 ではなく) RAID 10 が必要です。
  • REDO ログ ファイルがデータ ファイルとは別のスピンドルにあることを確認してください。ディスクをめぐって争いたくありません。このために、REDO ログ ファイルの多重化を無効にすることができます。(おそらく) それを本番 DB の永続的なフィクスチャーとして使用することは望ましくありませんが、これが 1 回限りの作業である場合は実行する価値があります。
  • レプリケーションを無効にする場合と同様に、アーカイブ ログ モードをオフにすることは価値がある場合があります。繰り返しますが、これが 1 回限りの場合にのみ関連する可能性があります。

ハードウェアが重い書き込み負荷に対応できるようになったら、SQL*Loader / 外部テーブルを使用します。

CPUではなくディスクに書き込む機能によって速度が制限されると予想されるため、複数のスレッド/プロセスが役立つかどうかは疑問です。複数のスピンドル上のファイルを含む表領域に LOB を分散できる場合は、それが役立つ可能性があります。

于 2011-02-10T22:26:53.630 に答える
1

私の最後の会社でこれを行ったとき、ストアド プロシージャと複数のスレッドを使用して C# プログラムを作成しました。スレッドを上下に調整すると、データベースの負荷が軽減されました。一部の構成設定のため、ローダーを使用できませんでした。連想配列も役に立ちました。

私たちの場合、テーブルがライブであったため、いくつかの最適化を行うことができませんでしたが、インデックスをオフにして読み込み後に再構築すると、パフォーマンスが向上する可能性があります。私たちの RAC 環境では、各 rac サーバーがインデックス ファイルをめぐって競合し、パーティション分割とインデックスの調整によってパフォーマンスが向上するという問題が見られましたが、私は実際には Oracle の第一人者ではないので、詳しい人に尋ねてください。

CLOB データで非常に低いパフォーマンスが見られたことは知っています。たとえば、フィールドの 1 つを複数の varchar(4000) にまたがる圧縮文字列に変更し、使用時にプログラムでそれらをつなぎ合わせるようにしました。

于 2011-02-10T20:22:48.910 に答える