Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

OracleDB

Oracleデータベースのバックアップをexpdpで取得する方法

投稿日:2020年3月28日 更新日:

(0)目次&概説

(1) expdp/impdpについて
 (1-1) expdp/impdpの概要
 (1-2) expdp/impdpの配置場所や転送方法
(2) エクスポート手順(expdp)
 (2-1) (事前作業)ロールの付与
  (2-1-1) ロールの付与状況チェック
  (2-1-2) ロールの権限付与
 (2-2) (事前作業)ディレクトリオブジェクトの作成
  (2-2-1) ディレクトリオブジェクトの作成
  (2-2-2) ディレクトリオブジェクトの作成確認
  (2-2-3) ディレクトリオブジェクトの権限付与
 (2-3) expdpの実行
  (2-3-1) expdpの基本構文
  (2-3-2) expdpのオプション指定例

(1) expdp/impdpについて

(1-1) expdp/impdpの概要

expdp/impdpはOracle Data Pumpのコンポーネントで、Oracle10gから利用可能な新しいエクスポートユーティリティです。前のバージョンの「exp」と比較して速度が向上した事と、暗号化などのオプション機能も加わっています。また11gからは古い「exp」の方は非推奨となっています。

またexpdp/impdpはサーバーベースであるため、例えクライアント端末から実行した場合でもダンプやログはサーバ側に生成されます(ディレクトリパスはディレクトリオブジェクトでの指定が必須)。

目次にもどる

(1-2) expdp/impdpの配置場所や転送方法

Data Pumpを使って出力したファイルはバイナリ形式(2進数形式)のため、同じくData Pumpを使ってインポートする必要があります。またインポートの経路に関して、通常はダンプファイル(.dmp)をエクスポートして、それをターゲットDBにインポートしますが、Data Pumpをネットワークモードで使用するとエクスポート元⇒インポート先へ直接データを転送する事ができます。

配備パスについては、通常であればexpdp/impdpともに下記のディレクトリに配備されています。

$ORACLE_HOME/bin/

私の場合は以下に格納されていました。

/u01/app/oracle/product/11.2.0/dbhome_1/bin/

目次にもどる

 

(2) エクスポート手順(expdp)

(2-1) (事前作業)ロールの付与

【※注意】「(2-1) (事前作業)ロールの付与」は「DB全体のエクスポート」or「自分以外のスキーマをエクスポート」する場合のみ実施が必要です。自スキーマのみであれば(2-2)に進みます。

もしもDB全体のエクスポートや自分以外のスキーマやそのオブジェクトをエクスポートする場合には「EXP_FULL_DATABASE」ロールが必要となりますので、それらの操作を行いたい場合は下記の(2-1-1)~(2-1-2)を実施します。

 
(2-1-1) ロールの付与状況チェック

「DBA_SYS_PRIVS」テーブルを照会して「EXP_FULL_DATABASE」ロールが現在どのユーザーに付与されているかをチェックします。

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE LIKE '%EXP%';

(図211)DBA_ROLE_PRIVS
下記の例では「SYS」ユーザーと「DBA」ユーザーと「DATAPUMP_EXP_FULL_DATABASE」ロールに「EXP_FULL_DATABASE」ロールが付与されています。

 ちなみにROLEを確認するテーブルは主に3種類あり、その中でも「EXP_FULL_DATABASE」は全てのGRANTEEとROLEの組み合わせが見れるテーブルです。

USER_ROLE_PRIVS ユーザー×ロール DBに接続しているユーザ自身に付与されたロールをチェックできます。
SESSION_ROLES ユーザー×ロール 現在のセッションで有効なロールをチェックできます(ロールはセッションごとに有効化・無効化できるため)
DBA_ROLE_PRIVS ユーザー×ロール ユーザーに付与されたロール情報を全て保持しています(照会にはSELECT ANY TABLE権限が必要)。

また権限を確認するテーブルは主に2種類あり、システム権限とテーブル権限に関する表があります。

DBA_SYS_PRIVS [ユーザー/ロール]×権限 ユーザー/ロールに付与されたシステム権限の情報をチェックできます。GRANTEE列にはユーザー・ロールの両方が含まれます。
DBA_TAB_PRIVS [ユーザー/ロール]×権限 ユーザー/ロールに付与されたテーブルの権限の情報をチェックできます。GRANTEE列にはユーザー・ロールの両方が含まれます。

(図211)②DBA_TAB_PRIVS

目次にもどる

(2-1-2) ロールの権限付与

上記チェックの結果、権限が付与されていなかった場合は次のGRANT文で付与します。

GRANT EXP_FULL_DATABASE TO [role_name/user_name];

目次にもどる

(2-2) (事前作業)ディレクトリオブジェクトの作成

ディレクトリオブジェクトはOracleDBサーバのファイルシステム上のディレクトリを表すオブジェクトで、Data Pumpにおいてはディレクトリパスは「ディレクトリオブジェクト」を指定する必要があります。

(2-2-1) ディレクトリオブジェクトの作成

ディレクトリオブジェクトは以下のコマンドで作成します。

CREATE DIRECTORY [Directory Object Name] AS '[Directory Path]';

私の例では下記のように作成しています。

CREATE DIRECTORY DATA_PUMP_DIR AS '/u01/app/oracle/admin/orcl/dpdump/';

 

目次にもどる

(2-2-2) ディレクトリオブジェクトの作成確認

作成したディレクトリオブジェクトの確認は以下のテーブルでチェックします。

SELECT * FROM ALL_DIRECTORIES;

 

(図222)

目次にもどる

(2-2-3) ディレクトリオブジェクトの権限付与

ディレクトリオブジェクトの権限はOSのファイルシステムのディレクトリ権限とは異なり、Oracle側で別途管理しています。ですのでエクスポートを実行するユーザーには予め、上記で作成したディレクトリオブジェクトの権限を付与しておく必要があります。権限の付与は次のコマンドで行います。

GRANT READ ON DIRECTORY DATA_PUMP_DIR TO [user name];
GRANT WRITE ON DIRECTORY DATA_PUMP_DIR TO [user name];

 

(図223)

 >目次にもどる

(2-3) expdpの実行

上記の事前準備が完了したら、いよいよexpdpコマンドでDBダンプ(≒バックアップ)を取得します。

(2-3-1) expdpの基本構文

expdpの基本構文は下記の通りです。実際は[option]の部分にて様々な条件(出力先、対象スキーマなど)を指定して実行することが多いです。

expdp [user]/[password]@[net service name] [option]

expdpの代表的なオプションには以下のような要素があります。

(表) expdpの主なオプション

directory=[dump output path] エクスポートするダンプファイルのディレクトリをディレクトリオブジェクトを使って指定します。
dumpfile=[dump name].dmp エクスポートするダンプファイルの名前を指定します。
schemas=[your schema] スキーマ単位にインポートする際に指定します。
(2-3-2) expdpのオプション指定例

下記の例では「ダンプ出力先」(directory)と「ダンプファイル名」(dumpfile)と「対象スキーマ」(schemas)を指定した例です。「DATA_PUMP_DIR」が事前準備にて作成したディレクトリオブジェクトです。

$ cd $ORACLE_HOME/bin/
$ ./expdp directory=DATA_PUMP_DIR dumpfile=REBWEGUSR_20200322.dmp schemas=TENNISDBUSR;

 

(図232)expdpの実行


(中略)

Export: Release 11.2.0.1.0 - Production on Sun MON DD HH:MM:SS 2020

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Username: RBWEGUSR
Password:

Connected to: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
Starting "RBWEGUSR"."SYS_EXPORT_SCHEMA_01":  RBWEGUSR/[password] directory=DATA_PUMP_DIR dumpfile=REBWEGUSR_20200322.dmp schemas=RBWEGUSR
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 58.75 MB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "RBWEGUSR"."EMP"                            6.718 MB  138667 rows
(中略)
. . exported "RBWEGUSR"."EMP_TEST2"                      6.718 MB  138667 rows
Master table "RBWEGUSR"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for RBWEGUSR.SYS_EXPORT_SCHEMA_01 is:
  /u01/app/oracle/admin/orcl/dpdump/REBWEGUSR_20200322.dmp
Job "RBWEGUSR"."SYS_EXPORT_SCHEMA_01" successfully completed at HH:MM:SS

 

(図232)expdpの出力結果
指定したディレクトリに「.dmp」形式で出力されます。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-OracleDB

執筆者:


  1. […] ・Oracleデータベースのバックアップをexpdpで取得する方法 […]

Oracleデータベース expdp/impdp – TJソリューション へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Oracleデータベースのインデックスの有無による速度の差異を検証する

(0)目次&概説 (1) 検証概要 (2) 検証環境 (3) 検証準備  (3-1) サンプルデータ作成(インデックス無)  (3-2) サンプルデータ作成(インデックス有)  (3-3) 実行計画の …

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その1)

掲題の通り、LinuxにOracleDB(11g)をインストールする方法について書きます。 ■目次 (0)前提条件 (1)インストール要件の確認 (2)ユーザ/グループ作成 (3)Oracle DBソ …

ORA-03113 end-of-file on communication channelエラーの対処

”ORA-03113 end-of-file on communication channel”の対処法について記述します。 (0) 目次 (1) 解析 (2) 原因 (3) 対策 (4) 解説  ( …

SQLでCASE文の結果をWHERE句に指定する方法およびコスト面の考察

本記事では、 ・SQLでCASE文の結果をWHERE句に指定する方法について記述します。 ・CASE文を使う場合のコストについて考察します。 (0)目次&概説 (1) NG例 (2) OK例&解説 ( …

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その4)

掲題の通り、LinuxにOracleDB(11g)をインストールする方法について書きます。 「(その3)」の続編記事です。 https://rainbow-engine.com/2017/05/05/ …

  • English (United States)
  • 日本語
Top