概要
移行元のデータベースからテーブルのエクスポートと、移行先のデータベースへのインポートでSPM計画ベースラインは移行するのですが、移行に利用するテーブルの作成も、テーブルへのパック、アンパック全て専用のプロシージャを利用します。処理概要は以下の通りです。
移行手順
移行元での作業(systemスキーマにて)
移行用テーブルの作成
exec dbms_spm.create_stgtab_baseline ( table_name =>'SPM_WORK' ,table_owner =>'SOONI' );
上記作成した移行用テーブルへベースラインをパックする
declare ret number; begin ret :=DBMS_SPM.PACK_STGTAB_BASELINE ( table_name =>'SPM_WORK' ,table_owner =>'SOONI' ,accepted =>'YES' ); dbms_output.put_line( 'PACK_STGTAB_BASELINE : ' || ret ); end ;
移行用テーブルへパックされた事を確認する
select * from SOONI.spm_work ;
テーブルダンプ用フォルダの確認
select DIRECTORY_NAME, DIRECTORY_PATH from dba_directories ;
-- 移行用テーブルの作成
exec dbms_spm.create_stgtab_baseline (
table_name =>'SPM_WORK'
,table_owner =>'SOONI'
);
-- 上記作成した移行用テーブルへベースラインをパックする
declare
ret number;
begin
ret :=DBMS_SPM.PACK_STGTAB_BASELINE (
table_name =>'SPM_WORK'
,table_owner =>'SOONI'
,accepted =>'YES'
);
dbms_output.put_line( 'PACK_STGTAB_BASELINE : ' || ret );
end
;
PACK_STGTAB_BASELINE : 50
PL/SQLが実行されました(266 msec.)
---------------------------------------
--移行用テーブルへパックされた事を確認する
select * from SOONI.spm_work
;
--テーブルダンプ用フォルダの確認
select DIRECTORY_NAME, DIRECTORY_PATH from dba_directories
;
今回は以下利用する
DATA_PUMP_DIR /usr/oracle/app/admin/orau8/dpdump/
-- テーブルのエクスポート
export CONN=system/XXXXXX@vm013:1521/orau8
export TGTTBL=SOONI.SPM_WORK
expdp ${CONN} directory=DATA_PUMP_DIR dumpfile=SOONI_SPM_WORK.dmp logfile=SOONI_SPM_WORK.log reuse_dumpfiles=y LOGTIME=ALL TABLES=${TGTTBL}
(補足)
reuse_dumpfiles --上書きするかどうか
--事前に登録しておく
CREATE or REPLACE DIRECTORY DPDIR AS '/sooni/batch/dbdump/test'
;
--ダンプしたファイルの確認
----移行用テーブルのdrop
drop table SOONI.SPM_WORK purge;
-- 上記ダンプファイル(SOONI_SPM_WORK.dmp)を適用先DBへコピーする
※各環境にあわせてどうぞ
cp /zfs_com/backup/tnesdb/dbdump/SOONI_SPM_WORK.dmp /sooni/batch/dbdump/test/.
--適用先にて上記ダンプファイルのインポート
export CONN=system/passwd@vm014:1521/orcl
export DPDIR=/sooni/batch/dbdump/test
export TGTDMP=SOONI_SPM_WORK.dmp
export TGTTBL=SOONI.SPM_WORK
--事前に登録しておく
CREATE or REPLACE DIRECTORY DPDIR AS '/sooni/batch/dbdump/test'
;
impdp ${CONN} directory=DPDIR dumpfile=${TGTDMP} logfile=IMP_SOONI_SPM_WORK.log TABLES=${TGTTBL}
declare
ret number;
begin
ret := dbms_spm.unpack_stgtab_baseline
(
table_name =>'SPM_WORK'
,table_owner =>'SOONI'
,accepted =>'YES'
);
dbms_output.put_line( 'Unpacked : ' || ret );
end;
--SPMベースラインが移行できたことを確認する
select * FROM dba_sql_plan_baselines b
;
--インポートしたテーブルのdrop
drop table SOONI.SPM_WORK purge;