DataDumpを使ってエクスポート用のデータを作成する。【Oracle】【AWS】

Oracleアイキャッチ

DataDumpを使って、EC2上に構築しているOracleからダンプファイルを作成し、最終的にRDSにインポートしてみようと思います。

この記事では「EC2上に構築しているOracleからダンプファイルを作成」する手順の紹介を行います。

・DatuDumpを使ってダンプファイルを作ってみたい人

前提

・OSはRHEL7でOracle12cを導入
・EC2にOracleは既に導入ずみ
・EC2上にSQLPlusも既に導入し、環境変数も設定済み

表領域を作成

EC2上にのっているOracleで作業を行います。

まず表領域の作成を行います。

今回はexpdbの練習さえできれば良いのですが、まず初めにOMF(Oracle Managed File)を有効にし、データファイル管理を自動化します。

ALTER SYSTEM SET db_create_file_dest = '/u01/app/oracle/oradata';

OMFを使って表領域(test)を作成します。

CREATE TABLESPACE test;

ユーザーを作成

表領域を作ったので、ユーザーを作成します。
作成したユーザーのデフォルトテーブルスペースは先ほどの表領域を指定します。

CREATE USER test
IDENTIFIED BY test
DEFAULT TABLESPACE test
TEMPORARY TABLESPACE temp;

作成したユーザーに権限を付与

ログインできるようにconnect権限も付与しておきます。

GRANT CONNECT, RESOURCE TO test;

表領域とユーザー名一緒のためわかりづらいですが、testユーザーにtest表領域を利用できるようにクオータを割り当てます。(test表領域を無制限に使用できるようにする)

GRANT UNLIMITED TABLESPACE TO test;

テーブルデータ作成

作成したユーザーでログイン

sqlplus test/test

テーブルを作成します。

CREATE TABLE TEST1
(
  id number(8),
  txt varchar2(250)
);

テストデータの作成

空テーブルのデータ移行も悲しいので、ダミーデータを突っ込んでおきます。

BEGIN FOR i IN 1..1000 LOOP INSERT INTO TEST1 (id, txt) VALUES (i, 'Sample text ' || i); END LOOPCOMMIT;END/

データの確認

SELECT COUNT(*) AS total_records FROM TEST1;

データエクスポートの準備

データの準備ができたので、いよいよデータエクスポートを行なっていきます。
まず、下記コマンドでディレクトリオブジェクト(ダンプファイルが吐き出されるディレクトリを確認します。)

dbaでログイン

sqlplus / as sysdba

下記コマンドで、ディレクトリを確認します。

set pages 100 line 200
col owner for a10
col directory_name for a20
col directory_path for a30
select * from dba_directories;
DATA_PUMP_DIRのディレクトリ確認

DATA_PUMP_DIRのディレクトリは/u01/app.oracle/admin/orcl/dpdump/を指しているのが分かりました。

次に、test(ユーザー)にDATA_PUMP_DIRの書き込み/読み込み権限を付与します。

GRANT READ ON DIRECTORY DATA_PUMP_DIR TO test;
GRANT WRITE ON DIRECTORY DATA_PUMP_DIR TO test;

sqlplusを抜けて「DATA_PUMP_DIR」があるかどうか確認します。

ls -la /u01/app/oracle/admin/orcl/dpdump/

これでディレクトリオブジェクトの確認・権限付与の準備ができました。

エクスポート実行

ようやく準備が揃いましたので、エクスポートを実行します。
OSコマンドなので、SQLPlusではなくサーバー上で実行してください

expdp test/test DIRECTORY=DATA_PUMP_DIR SCHEMAS=test DUMPFILE=test_full.dmp LOGFILE=test_dump.log

下記コマンドよりダンプファイルができている事を確認します。

ls -la <先ほどexpdpで指定したDATA_PUMP_DIRのディレクトリ>

ようやくexpdp使ってダンプファイルの出力ができました!!!
以上です。誰かの参考になれば幸いです。