1
Amazon EC2でOracle 11gデータベースを実行し、Amazon RDSに移行しようとしています。ソースとターゲットの両方がOracle DBです。データベースの移行後にソースとターゲットの両方でテーブルとデータを検証する最適な方法は何でしょうか。データ損失なしですべてが正常に移行されることを確認する方法。移行後にデータベースを検証する方法
ありがとうございます。
Amazon EC2でOracle 11gデータベースを実行し、Amazon RDSに移行しようとしています。ソースとターゲットの両方がOracle DBです。データベースの移行後にソースとターゲットの両方でテーブルとデータを検証する最適な方法は何でしょうか。データ損失なしですべてが正常に移行されることを確認する方法。移行後にデータベースを検証する方法
ありがとうございます。
古いデータベースへのデータベース・リンクold_db
を作成し、比較データ
select * from tab1 minus select * from [email protected]_db union all
select * from [email protected]_db minus select * from [email protected]_db
この選択の結果が空でなければなりません
select table_name from user_tables
が希望するテーブル名を選択し、構築します前述のステートメントを選択して動的にテーブル単位で実行します。
declare
l_found number;
l_sql varchar2(500);
begin
for l_rec in (select table_name from user_tables) loop
begin
-- assume a database link OLD_DB exists
l_sql := 'select 1 from dual where exists (select * from ' ||
l_rec.table_name || ' minus select * from ' ||
l_rec.table_name || '@OLD_DB union all ' ||
'select * from ' || l_rec.table_name ||
'@OLD_DB minus select * from ' || l_rec.table_name || ')';
dbms_output.put_line(l_sql);
execute immediate l_sql
into l_found;
dbms_output.put_line('difference found :' || l_rec.table_name);
exception
when no_data_found then
dbms_output.put_line('okay :' || l_rec.table_name);
-- okay
null;
when others then
-- error (check if table exists, ...)
dbms_output.put_line('error :' || l_rec.table_name);
end;
end loop;
end;