expdpとimpdpのサンプルコマンドです。
expdpはDBからバックアップ用のダンプファイルを作成します。
impdpはダンプファイルからオブジェクトを復元します。
スキーマを指定してexpdpとimpdp
expdpコマンドサンプル
expdp TEST/TEST@localhost:1521/orclpdb SCHEMAS=TEST DIRECTORY=DUMPDIR COMPRESSION=ALL DUMPFILE=expdp_TEST_20200617.dmp LOGFILE=expdp_TEST_20200617.log
| 項目 | 説明 |
|---|---|
| 接続情報 | スキーマ名/パスワード@ホスト名:ポート番号/pdb名 |
| SCHEMAS | スキーマ名を指定する |
| DIRECTORY | ディレクトリオブジェクトを指定する |
| DUMPFILE | 出力されるダンプファイル名を指定する |
| COMPRESSION | 「ALL」の全体圧縮を指定する(ALL以外にもDATA_ONLY、METADASTA_ONLY、NONEがあります) |
| LOGFILE | コマンド実行時のコンソールログのファイル名を指定する |
impdpコマンドサンプル
impdp TEST/TEST@localhost:1521/orclpdb SCHEMAS=TEST TABLE_EXISTS_ACTION=REPLACE DIRECTORY=DUMPDIR DUMPFILE=expdp_TEST_20200617.dmp logfile=impdp_TEST_20200617.log
| 項目 | 説明 |
|---|---|
| 接続情報 | スキーマ名/パスワード@ホスト名:ポート番号/pdb名 |
| SCHEMAS | スキーマ名を指定する |
| TABLE_EXISTS_ACTION | 「REPLACE」のテーブルをドロップしてから再作成するを指定する(REPLACE以外にもSKIP、TRUNCATE、APPEND) |
| DIRECTORY | expdpを行った際に使ったオブジェクトディレクトリでいいかと |
| DUMPFILE | expdpで作成したダンプファイル名を指定する |
| LOGFILE | コマンド実行時のコンソールログのファイル名を指定する |
impdpの注意点
スキーマ単位でごっそりインポートしたい場合、プロシージャ-等のオブジェクトが残っていると、オブジェクトが既に存在するというエラーが発生して、インポートがスキップされるので、事前にオブジェクトを全て削除しておく必要があります。
スキーマ-を削除し、再作成してからimpdpを行う方法が楽ですが、スキーマに付与されていた権限なども再度作成する必要があるため、スキーマや権限を作成するコマンドを持っていないのであれば、事前にオブジェクトを削除する方法を推奨します。
オブジェクトを全部ドロップするSQL作成クエリ
主要オブジェクトをドロップするSQLを作成するクエリです。spoolされるsqlを実行すればオブジェクトを削除できます。危険なクエリなので十分に注意して使って下さい。
SET LINES 10000
SET PAGES 0
SET TERMOUT OFF
SET HEADING OFF
SET TRIMSPOOL ON
SET FEEDBACK OFF
SET ECHO OFF
SPOOL DROP.sql
SELECT
CASE OBJECT_TYPE
WHEN 'DATABASE LINK' THEN 'DROP DATABASE LINK ' || OBJECT_NAME || ';'
WHEN 'TRIGGER' THEN 'DROP TRIGGER ' || OBJECT_NAME || ';'
WHEN 'SYNONYM' THEN 'DROP SYNONYM ' || OBJECT_NAME || ';'
WHEN 'VIEW' THEN 'DROP VIEW ' || OBJECT_NAME || ' CASCADE CONSTRAINTS;'
WHEN 'SEQUENCE' THEN 'DROP SEQUENCE ' || OBJECT_NAME || ';'
WHEN 'PACKAGE BODY' THEN 'DROP PACKAGE BODY ' || OBJECT_NAME || ';'
WHEN 'PACKAGE' THEN 'DROP PACKAGE ' || OBJECT_NAME || ';'
WHEN 'FUNCTION' THEN 'DROP FUNCTION ' || OBJECT_NAME || ';'
WHEN 'PROCEDURE' THEN 'DROP PROCEDURE ' || OBJECT_NAME || ';'
WHEN 'TABLE' THEN 'DROP TABLE ' || OBJECT_NAME || ' CASCADE CONSTRAINTS;'
END QUERY
FROM
DBA_OBJECTS
WHERE
OWNER = 'TEST'
AND OBJECT_TYPE IN (
'DATABASE LINK'
,'TRIGGER'
,'SYNONYM'
,'VIEW'
,'SEQUENCE'
,'PACKAGE BODY'
,'PACKAGE'
,'FUNCTION'
,'PROCEDURE'
,'TABLE'
)
ORDER BY
CASE OBJECT_TYPE
WHEN 'DATABASE LINK' THEN 1
WHEN 'TRIGGER' THEN 2
WHEN 'SYNONYM' THEN 3
WHEN 'VIEW' THEN 4
WHEN 'SEQUENCE' THEN 5
WHEN 'PACKAGE BODY' THEN 6
WHEN 'PACKAGE' THEN 7
WHEN 'FUNCTION' THEN 8
WHEN 'PROCEDURE' THEN 9
WHEN 'TABLE' THEN 10
END
;
SPOOL OFF