Oracle數據遷移--如何確認是否遷移成功?需要查詢這些內容

目前常見的oracle數據遷移操作中,遷移結束後的數據比對是非常重要的一步,能夠確認是否遷移成功,在這裡為大家提供一些比對數據的小方案:

--1. 創建用於統計的表結構

create table SYSDBA.DATA_CHECK

(

Tab_Name char(60),

Tab_No number

);

--2. 將收集到的信息插入到表DATA_CHECK中

--(1)顯示遊標寫法:

declare

name varchar;

num number;

vsql varchar;

vsql_num varchar;

cur

cursor;

begin

open cur for select table_name from user_tables order by 1;

loop

fetch cur into name;

EXIT

when cur%NOTFOUND;

vsql_num='select count(*) from "'||name||'" ';

execute immediate vsql_num into num ;

vsql='insert into "SYSDBA"."DATA_CHECK" values ('''||name||''','''||num||''');';

--print(vsql);

execute immediate vsql;

end loop;

close cur;

commit;

end;

--(2)隱式遊標寫法

declare

v_table varchar;

v_cnt number;

vsql varchar;

vsql_num varchar;

begin

for rec in

(

select table_name from user_tables order by 1

)

loop

execute immediate 'select count(*) from '||rec.table_name into v_cnt;

vsql='insert into "SYSDBA"."DATA_CHECK" values ( '''||rec.table_name||''','''||v_cnt||''');';

--print(vsql);

execute immediate vsql;

end loop;

end;

--3. 查詢統計表DATA_CHECK

select * from SYSDBA.DATA_CHECK;

--4. 最後刪除統計表DATA_CHECK

drop table SYSDBA.DATA_CHECK;

--5. 獲取Oracle的記錄條數

set serveroutput on;

declare

v_cnt int;

begin

for rec in

(

select table_name from user_tables order by 1

)

loop

execute immediate 'select count(*) from '||rec.table_name into v_cnt;

dbms_output.put_line(rec.table_name || ',' || v_cnt);

end loop;

end;


分享到:


相關文章: