SQL*LoaderとOracle DatePump
どうもクローバーフィールドの伊関です。
SQL*LoaderとOracle DatePumpという言葉を今の仕事でよく耳にするようになったのでちょっとまとめてみようかなんて思います。
用途:データベース外のファイルをSQL内で外部表として閲覧したり、Oracleデータベース間のデータ移動(現行サーバから次期へのマイグレーション等)や現在データの保管(論理バックアップ)に活用できます。
結局のところ外部表としてのくくり以外でこの二つのツールは全くの別物ですが、現在相も変わらず手こずっている試験にはこの辺がとてもいやらしい感じで問題として登場するので違いもまとめておきます。
SQL*Loader
OSファイルシステム上のデータをOracleデータベースの表にロードするツールで、外部のCSV形式のフラットファイルなどを、データベース内の表をSELECTするようにアクセスすることができます。
Oracle DatePump
データベース内のデータをダンプファイルとしてエクスポートすることが出来、またそのダンプファイルを以て他のデータベースにインポートすることが出来ます。すなわちデータのロードとアンロードが可能なわけです。
というより、「ロード/アンロード」というくくりで出題される形式が多いようですが、上述でもありましたがやってることがそもそも違います。
外部表としてのアクセスドライバ
さて、解説した二つのツールの拡張版として二つのアクセスドライバORACLE_LOADERとORACLE_DATAPUMPがあります。機能してはOracleデータベース内ではどちらも外部表を通す位置づけでは共通したものです。何を言ってるかわからないと思いますにでそれにはまず外部表とは何かというところから説明していきます。
外部表とは
外部表とは、「OSファイルシステム上のファイル(外部ファイル)を、あたかもOracleデータベースにあるように扱うことができる」仕組みです。データの実体は外部ファイル内にあり、Oracleデータベースには存在しません。このため、外部表は「外部ファイルを実表としたビュー(データを持たない仮想的な表)」のようなものと考えることができます。
外部表のデータは読取り専用で変更処理はできません。あくまで外部データのOracleデータベース内での参照や、インポート、エクスポートが主な用途になります。
外部表を介してのアクセスドライバの使い方に関してはコードも交えながら次回に持ち越したいと思いますのでどうぞよろしくお願いします。
では。