コメント |
@DIV
エクスポートで出力したダンプファイルより作成します。
基本的には、http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_import.html(Data Pump Import) ユーティリティ で行う表定義を取得と同じです
スキーマ表現を変更したい場合のオプションは、後でエディタで変更できるので
特に必要ありませんが、インポート処理をそのユーザで行いたい場合は、
select * from USER_ROLE_PRIVS で権限を確認して( たいてい無いので )
SYSTEM でログインして権限を付与する必要があります
( http://lightbox.matrix.jp/ginpro/patio.cgi?mode=view2&f=249&no=14&w=910&type=ref&opt=text-align:left;margin-left:5px;&xml=y(コマンドプロンプトから impdp を実行する場合)は、SYSTEM でログインするのが通常です )
@END
※ ロールの一覧は select * from DBA_ROLES
@DIV
PROCEDURE DATAPUMP_SQL_FILE
@C:green(/**********************************************************/
/* 変数の定義 */
/**********************************************************/)
AS
J_HANDLE NUMBER;
J_STS VARCHAR2(20);
@C:green(/**********************************************************/
/* 処理開始 */
/**********************************************************/)
BEGIN
DBMS_OUTPUT.PUT_LINE('デバッグ:開始');
@C:green(/***************************/
/* OPEN */
/***************************/)
J_HANDLE := DBMS_DATAPUMP.OPEN(
@C:red('SQL_FILE')
,'TABLE'
,NULL
,NULL
,'COMPATIBLE'
,DBMS_DATAPUMP.KU$_COMPRESS_METADATA
);
@C:green(/***************************/
/* 入力ファイル */
/***************************/)
DBMS_DATAPUMP.ADD_FILE(
J_HANDLE
,'TABLE_BACKUP_TEST.ORA'
,'MYDIR'
,NULL
,DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE
);
@C:green(/***************************/
/* 出力ファイル */
/***************************/)
DBMS_DATAPUMP.ADD_FILE(
J_HANDLE
,'TABLE_BACKUP_TEST.SQL'
,'MYDIR'
,NULL
,DBMS_DATAPUMP.KU$_FILE_TYPE_SQL_FILE
);
@C:green(/***************************/
/* 出力オプション */
/***************************/)
DBMS_DATAPUMP.METADATA_TRANSFORM(
J_HANDLE
,'SEGMENT_ATTRIBUTES'
,0
,NULL
);
@C:green(/***************************/
/* スキーマ表現を変更したい場合 */
/* 但し以下の権限が必要 */
/* IMP_FULL_DATABASE ロール */
/***************************/)
DBMS_DATAPUMP.METADATA_REMAP (
J_HANDLE
,'REMAP_SCHEMA'
,'ORA_01'
,'JET'
,NULL
);
@C:green(/***************************/
/* SQL 式で スキーマを指定 */
/***************************/)
DBMS_DATAPUMP.METADATA_FILTER(
J_HANDLE
,'SCHEMA_EXPR'
,'IN (''ORA_01'')'
);
@C:green(/***************************/
/* SQL 式で 表を指定 */
/***************************/)
DBMS_DATAPUMP.METADATA_FILTER(
J_HANDLE
,'NAME_EXPR'
,'IN (''社員マスタ'',''商品マスタ'')'
);
@C:green(/***************************/
/* 開始 */
/***************************/)
DBMS_DATAPUMP.START_JOB(
J_HANDLE
,0
);
@C:green(/***************************/
/* JOB 終了まで待機 */
/***************************/)
DBMS_DATAPUMP.WAIT_FOR_JOB(
J_HANDLE
,J_STS
);
@C:green(/***************************/
/* 終了ステータスの表示 */
/***************************/)
DBMS_OUTPUT.PUT_LINE('処理終了:'||J_STS);
@C:green(/**********************************************************/
/* 一番外側のブロックの例外処理 */
/**********************************************************/)
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('例外発生:'||SQLCODE||':'||SQLERRM);
END;
@END
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-02/d_datpmp.htm(Oracle ドキュメント : DBMS_DATAPUMP) |