4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OCIチュートリアルをやってみた。~Data Pump編~

Last updated at Posted at 2023-01-17

はじめに

Data Pumpに関する以下のOCIチュートリアルを行いました。
自分なりのポイントをまとめてみました。

移行イメージ

image.png

手順①データをダンプファイルにエクスポート

【ポイント】ダンプファイルとは?

ダンプファイルとは、コンピュータのメインメモリ(RAM)やレジスタなどのある瞬間の内容を、ストレージ(外部記憶装置)上のファイルに丸ごと写し取ったもの。

HRスキーマをData Pumpを利用してDBCSインスタンスのOS上のファイルシステムにエクスポートします。

パラレルオプションを利用する場合、ソースDBがEnterprise Editionである必要があります。
圧縮オプションを利用する場合、ソースDBが11g以上でありAdvanced Compression Optionが必要になります。

DBCSインスタンス上のPDBに接続し、ダンプファイルの出力先を指定します

Tera Termを利用してDBCSインスタンスにopcユーザーで接続します。

#opcユーザーからoracleユーザーにスイッチ
sudo su - oracle

【ポイント】opcユーザー・oracleユーザーについて

#作業ディレクトリ作成 & ディレクトリ変更
mkdir -p ~/mig2adb/dumpdir
cd ~/mig2adb
sqlplus / as sysdba

alter session set container = pdb1 ;
#ディレクトリ・オブジェクトを作成し、ダンプファイルの出力先をデータベースに登録

create or replace directory TEST_DIR as '/home/oracle/mig2adb/dumpdir' ;
#ディレクトリ・オブジェクトに対する操作権限をHRスキーマに付与

grant read, write on directory TEST_DIR to HR ;

exit
#エクスポートを実行するスクリプトを作成
vi expdp_hr.sh

 #!/bin/sh

 expdp \"hr/WelCome123#123#@pdb1 \" \
 exclude=cluster,db_link \  #処理対象をメタデータのオブジェクトのタイプ名 [: オブジェクト名 ] で除外フィルターする
 pararell=4 \                #並列度を決定
 schemas=hr \         #「スキーマモード」として指定のスキーマ名に対して処理を行う
 compression=all \       #圧縮対象の範囲
 filesize=1GB \              #1ダンプファイルの最大値
 directory=test_dir \     #記録媒体がある「ディレクトリ・オブジェクト名」。 ダンプファイル、ログファイル、パラメータファイルのデフォルトディレクトリとなる
 dumpfile=export_hr_%u.dmp   #記録媒体ファイル名

【ポイント】expdp構文
expdp <ユーザ>/<パスワード>@<接続文字列> <オプション>

#catコマンドでファイルの中身を見ます(きちんと編集できているのか確認)
 cat expdp_hr.sh

・データサイズが大きい場合は、データ転送、ロード性能の向上のため、parallelオプションを利用しましょう。指定する値は少なくとも移行先のADBのOCPU数と同じか、それよりも大きい値(2倍から3倍)がおススメです。
・dumpfile句に指定するファイル名にはワイルドカード(%u)を付けてください。複数のファイルを同時に出力することで高速化が可能です。
・filesize句は5GBよりも小さい値を指定してください。ブラウザ経由でオブジェクトストレージに転送できるデータは1ファイル辺り最大5GBの制限があるためです。
・excludeオプションを利用することで、不要なオブジェクトを除いてエクスポートすることが可能です。例えばADWを利用するような分析系のアプリの場合において、性能観点で付与した索引はExadataを利用すると不要になることが多いため、IndexをExcludeの引数に指定します。

#実行権限の付与
chmod +x expdp_hr.sh

【ポイント】chmodについて

#エクスポートの実施
./expdp_hr.sh

DBCSインスタンス上の「/home/oracle/mig2adb/dumpdir」ディレクトリにダンプファイルが複数出力されているのでWinSCPといった任意のファイル転送ツールを利用し、DBCSインスタンス上から手元のPCにコピーする。

手順②オブジェクトストレージへのアクセストークンを取得

手順③ダンプファイルをオブジェクト・ストレージの任意のバケットにアップロード

ダンプファイル(export_hr_xx.dmp)をオブジェクト・ストレージの任意のバケットにアップロードし、アクセスURLを取得する

通常Data Pumpを利用する場合、ディレクトリ・オブジェクトを作成しそこからインポートしますが、ADBは仕様上OS領域にアクセスできないため、オブジェクトストレージ経由でロードする必要があります。

手順④オブジェクトストレージ上のダンプファイルをADBインスタンスにインポート

TeraTermを起動し、仮想マシンにopcユーザーでログイン

sudo su - oracle

#ADBに接続するための環境変数の設定
export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib
export TNS_ADMIN=/home/oracle/labs/wallets

#移行先のADBインスタンスにログイン
sqlplus admin/Welcome12345#@atp01_low
#クレデンシャルの登録を行います

 BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'WORKSHOP_CREDENTIAL',
     username => 'adb@handson.com', 
     password => 'xxxxxx'
   );
 END;
 /

exit

ウォレットを利用したADBインスタンスへの接続には、対象インスタンスへの接続情報が格納された クレデンシャル・ウォレット を利用する必要があります。 (より高いセキュリティを担保するために、ADBインスタンスはcredential.ssoファイルを利用した接続のみを受け入れます。

インポートスクリプトを用意

mkdir -p ~/labs/datapump
cd ~/labs/datapump

vi impdp_hr.sh


 #!/bin/sh

 impdp userid=admin/Welcome12345#@atp01_high \
 credential=WORKSHOP_CREDENTIAL \
 parallel=4 \
 schemas=HR \
 directory=DATA_PUMP_DIR \
 dumpfile=https://objectstorage.<region>.oraclecloud.com/n/<tenancy>/b/<bucket_name>/o/export_hr_%u.dmp \
 logfile=DATA_PUMP_DIR:import_hr.log


 cat impdp_hr.sh

chmod +x impdp_hr.sh

./impdp_hr.sh

DataPumpによるデータ移行の完了です

最後にADBにログインしてきちんとできているのかの確認を行います。

export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib
export TNS_ADMIN=/home/oracle/labs/wallets

sqlplus admin/Welcome12345#@atp01_low


select count(1) from hr.COUNTRIES ;

#25件であればOKです

終わりに

工程が長いので一度にすべてを理解することは大変ですが、少しずつ紐解いていくことで理解を進めることができました。
オブジェクトストレージを介する点が特徴的だと感じました。
他のデータ移行方法についても順次学習を進めたいと思います。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?