【Oracle】データのバックアップ・リストア

■ バックアップ手順

[1] SqlPlusを使って、SYSTEM権限でログインし、Oracelディレクトリオブジェクトを作成する。(初回のみ)
[2] (SqlPlusではなく)コマンドプロンプトにより、Oracelエクスポートユーティリティーを実行する

以下、手順詳細。

[1] Oracelディレクトリオブジェクトを作成する

構文
CREATE DIRECTORY 【ディレクトリ名】 AS '【ディレクトリのパス】';
補足
『SELECT directory_name,directory_path from dba_directories;』で、設定を確認できる

CREATE DIRECTORY backUpFalder AS 'c:\DatabaseBackup';

[2] Oracelエクスポートユーティリティーを実行する

構文
expdp 【ユーザ名】/【パスワード】@【接続先】 DIRECTORY=【ディレクトリ名】 DUMPFILE=【ダンプファイル名】
補足
最後に『;』を付けると、ダンプファイル名に『;』が付与されてしまうので、注意。(付けないほうがいい)

EXPDP testUser/passward@localhost:1521/xe DIRECTORY=backUpFalder DUMPFILE=backup.dmp

■ リストア

[1] SYSTEM権限でログインする
[2] インポート先データベースのスキーマ削除
[3] ユーザを作成する
[4] 作成したユーザに権限を付与する
[5] バックアップファイルのインポートする 

[1] SYSTEM権限でログインする

「;」を入れないこと
パスワードが「passward」で、OracleのExpressの場合
sqlplus system/passward@localhost:1521/xe

[2] インポート先データベースのスキーマ削除

 * ユーザとそのユーザの所有データベースオブジェクトを削除
構文
DROP USER 【ユーザ名】 CASCADE;

[補足]
CASCADEを指定すると、そのユーザのスキーマ内にあるすべてのオブジェクトを削除できる

DROP USER testUser CASCADE;

[3] ユーザを作成する

構文
CREATE USER 【ユーザ名】
    IDENTIFIED BY "【パスワード】"
    DEFAULT TABLESPACE 【表領域名】
    TEMPORARY TABLESPACE 【一時テーブル領域名】
    ACCOUNT UNLOCK;
補足
『SELECT * FROM all_users;』により、すべてのユーザーを確認することができるため、
コマンドを実行し、実際に作成されているかどうか確認するといい

CREATE USER testUser
    IDENTIFIED BY "passward"
    DEFAULT TABLESPACE testTable
    TEMPORARY TABLESPACE tempTable
    ACCOUNT UNLOCK;
参考資料
http://luna.gonna.jp/oracle/ora_user.html

[4] 作成したユーザに権限を付与する

構文
GRANT 【ロール】 TO 【ユーザ名】;

GRANT CONNECT TO testUser;
GRANT DBA TO testUser;
補足
 * CONNECTロールにより、表を作成(CREATE TABLE)したりする等の権限が与えられる
 * DBAロールにより、データベースに新しいユーザを追加する等の権限が与えられる

[5] バックアップファイルのインポートする

 * (SqlPlusではなく)コマンドプロンプトにより、以下をコマンドする
   (「;」を入れないこと)
構文
IMPDP 【ユーザ】/【パスワード】@【接続先】dumpfile=【ダンプファイル名】DIRECTORY=【ディレクトリ名】 LOGFILE=【ログファイル名】 TABLE_EXISTS_ACTION=replace remap_schema=【元スキーマ】:【接続先スキーマ】REMAP_TABLESPACE 【元スキーマ】:【接続先スキーマ】;

impdp testUser/passward@localhost:1521/orcl dumpfile=testUser_dump.DMP DIRECTORY=dba_directories LOGFILE=export.log TABLE_EXISTS_ACTION=replace remap_schema=testUser:testUser