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