達夢數據庫數據遷移


一、准備工作:

 

統計oracle基本信息和數據庫對象等:

--統計頁大小 select name,value from v$parameter where name ='db_block_size';
--查詢編碼格式 select * from v$nls_parameters a where a.PARAMETER='NLS_CHARACTERSET';
--根據指定用戶統計用戶下的各對象類型和數目
select object_type,count(*) from all_objects whereowner='OA8000_DM2015' group by object_type;
--創建移植輔助表,統計指定用戶下所有的對象並插入到輔助表中
create table oracle_objects(obj_owner varchar(100),obj_name varchar(100),obj_type varchar(50));
insert into oracle_objects select owner,object_name,object_type from
all_objects where owner ='OA8000_DM2015';
select * from oracle_objects;

 

 

 

1.oracle和達夢數據的備份

2.開啟達夢數據庫的COMPATIBLE_MODE參數兼容性,開啟為2表示兼容oracle

3.觀察Oracle的塊大小和dm的頁大小是否一致,觀察Oracle的字符集、大小寫敏感是否和dm一致

4.先在目的端創建好用戶和表空間,不允許把數據遷移到system用戶和main表空間下。

遷移的時候選擇模式時,系統自帶的不要選。

 

 

二、開始遷移

第一步先遷移序列

第二步只遷移表定義即表結構,去掉約束、索引;

如果遷移多張表,可以把左下角的"應用當前選項到其他同類對象"勾上。

第三步只遷移數據;

第四步只遷移約束、索引;記住勾選選項(保留引用表原有模式信息)

第五步遷移視圖;

第六步遷移函數、觸發器、包等,分開遷移。

 

注意事項:對於表比較少,數據量不大的系統,可以通過DTS采取一次性遷移,全部選中即可

對於表比較多,數據量大的系統,建議先遷移小表再進行大表的遷移,遷移時最好不用快速裝載功能。

部分表數據量特別大,單獨針對該表遷移,可以選擇快速裝載

 

三、比對信息

--統計頁大小 select page; 
--通過編碼格式 select unicode; 
--統計大小寫敏感參數 select case_sensitive;

--根據指定用戶統計用戶下的各對象類型和數目
select object_type,count(*) from all_objects where owner='OA8000_DM2015' group by object_type;

--統計指定用戶下所有的對象,並記錄到新的記錄表中
create table dm_objects(obj_owner varchar(100),obj_name varchar(100),obj_type varchar(50)); 
insert into dm_objects select owner,object_name,object_type from all_objects where owner='OA8000_DM2015'; --統計每個表的數據量到表數據記錄表 1. create table dm_tables(tab_owner varchar(100),tab_name varchar(100),tab_count int);
2. begin for rec in (select owner,object_name from all_objects where owner='OA8000_DM2015' and object_type='TABLE') loop beginexecute immediate 'insert into dm_tables select '''|| rec.owner ||''','''|| rec.object_name ||''',count(*) from '|| rec.owner || '.' || rec.object_name; exception when others then print rec.owner || '.' || rec.object_name || 'get count error'; end; end loop; end; --對比達夢數據庫中對象和 oracle 庫中對象以及數據量差異 --比對對象,找出沒有遷移的對象 select * from oracle_objects where (obj_owner,obj_name) not in ( select obj_owner,obj_name from dm_objects ) --and obj_type='TABLE' --比對表數據量,找出數據量不相等的表 select a.tab_owner,a.tab_name,a.tab_count-b.tab_count from oracle_tables a, dm_tables b where a.tab_owner=b.tab_owner and a.tab_name=b.tab_name and a.tab_count-b.tab_count<>0

 

 

 

 

四、收尾工作

更新統計信息 數據核對完成無問題后,應進行一次全庫的統計信息更新工作。
統計信息更新腳本示例如下:
DBMS_STATS.GATHER_SCHEMA_STATS( 
'HNSIMIS', --HNSIMIS 為模式名
100,
FALSE,
'FOR ALL COLUMNS SIZE AUTO'
);

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM