Rainbow Planet (GT×IT×SP×SA)

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

01_IT技術 (Technology)

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

投稿日:

(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審査用広告コード


-01_IT技術 (Technology)

執筆者:


comment

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

関連記事

Linux:定期的に再起動するスクリプト

Linuxサーバーを定期的に再起動するスクリプトを紹介します。定期的に再起動するという処理はシステム構築においては、運用の中で定義される「死活監視」に関連してくる話になります。 ●シェルとは?シェルス …

Linuxサーバ(CentOS6)にEclipse(OXYGEN)をインストールする

0.目次 (1) JDKの概要  (1-1) JDKの種類  (1-2) JDKのバージョン(2018年2月時点) (2) JDKのインストール  (2-1) wget コマンドでJDK の rpm …

Linux基礎コマンド(第1回) TeraTermログイン・pwd・cd

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第1弾です。 (0)目次&概説 >(1) Linuxのディレクトリ構 …

CentOS7でfirewalldを用いてポートの開放を行う方法について

(0)目次&概説 (1) パケットフィルタリングの概要  (1-1) CentOS7のパケットフィルタリング概要  (1-2) CentOS6(iptables)との主な違い  (1-3) 「ゾーン」 …

PythonにOpenCVを導入して画像を読込み&表示&拡大縮小してみる

(0)目次&概説 (1) OpenCVとは (2) OpenCVのインストール  (2-1) インストール資源の入手  (2-2) インストール時の注意事項  (2-3) インストールの実行 (3) …

Top