目的:
將一套10.2.0.5的up-unix系統的資料,遷移到一台windows環境下。
遷移方案:由於不同的作業系統,為了方便遷移,只是測試,使用exp/imp方式。
遷移流程:
一.源端匯出
1)確定資料庫大小
sql>select round(sum(bytes)/1024/1024/1024,2) from dba_segments;
2)確定資料庫版本,及字符集
sql>select * from nls_database_parameters;
nls_characterset us7ascii 資料庫字符集
nls_nchar_characterset al16utf16 國家字符集
nls_rdbms_version 10.2.0.4.0 資料庫版本
3)遷移的使用者數量
sql> select 'create user '||a.username||' identified by values '''||b.password||''';' from dba_users a,user$ b where
b.name=a.username and a.username not like '%sys%' and a.account_status='open';
4)資料匯出
$imp system/oracle file=/u01/dump/exp_full_20190325.dmp log=/u01/dump/exp_full_20190325.log full=y
5) dump檔案傳輸
選擇二進位制方式,使用ftp傳輸不要選擇預設方式,否則預設轉換後dump檔案損壞
· ascii - 設定檔案傳輸型別為ascii,預設型別
· binary - 設定檔案傳輸型別為binary(二進位制傳輸)
ftp> binary --傳輸前進行修改傳輸型別,選擇binary方式
200 switching to binary mode.
傳輸後,通過ls -lrt 等方式對比位元組數量,確認無誤.
imp-00010 during import using a transferred file (文件 id 157954.1)
changes
copied export dump file from windows to solaris.
cause
export file was copied/transferred as ascii file instead of binary.
solution
copy/transfer the export dump file as binary not ascii.
二、目標端匯入前準備
1)資料庫版本與源端一致。
2)建立永久、臨時表空間
select tablespace_name,sum(bytes)/1024/1024/1024 g,sum(maxbytes)/1024/1024/1024 maxg from dba_data_files group by tablespace_name;
select tablespace_name,sum(bytes)/1024/1024/1024 g,sum(maxbytes)/1024/1024/1024 maxg from dba_temp_files group by tablespace_name;
3)遷移使用者
3.1備份
新庫,匯入前,備份系統使用者名稱:
select username from dba_users;
3.2建立批量刪除使用者指令碼:
select 'drop user '||username||' cascade;' from dba_users where username not in('a','b');
3.2建立使用者
sql> select 'create user '||a.username||' identified by values '''||b.password||''';' from dba_users a,user$ b where
b.name=a.username and a.username not like '%sys%' and a.account_status='open';
對使用者修改預設表空間
sql> select 'alter user '||username||' default tablespace '||default_tablespace||';' from dba_users where account_status='open' and username not like '%sys%';
4)使用者授權【備選方案,實際操作中imp匯入自動進行】
源端test4需要檢查是否存在非預設角色
sql> select 'grant '||granted_role||' to '||grantee||';' from dba_role_privs;
sql> select 'grant '||privilege||' to '||grantee||';' from dba_sys_privs;
5)引數修改
5.1.引數值備份
show parameter workarea_size_policy
show parameter sort_area_size
show parameter db_file_multiblock_read_count
show parameter "_sort_multiblock_read_count"
5.2.引數修改
alter system set workarea_size_policy = manual;
alter system set sort_area_size=1024000000 scope=spfile;
alter system set db_file_multiblock_read_count= 128;
6).匯入操作
imp user/pwd file=/u01/dump/exp_full_20190325.dmp log=/u01/dump/imp_full_20190325.log full=y
commit=y feedback=10000 buffer=10240000 ignore=y
7)資料對比
sql> select object_type,count(*) from dba_objects group by object_type order by 2;
sql> select object_type,count(*) from dba_objects where owner='sys' group by object_type order by 2;
sql>select round(sum(bytes)/1024/1024/1024,2) from dba_segments;
sql> select tablespace_name,count(*) from dba_segments group by tablespace_name;
sql> select segment_type,count(*) from dba_segments where tablespace_name='users' group by segment_type;
7)引數回退
sql> alter system set workarea_size_policy =auto;
sql> alter system set sort_area_size=65536 scope=spfile;
sql> alter system set db_file_multiblock_read_count= 16;
8)失效物件重新編譯
編譯失效物件:
sql>@$oracle_home/rdbms/admin/utlrp.sql
exp單個使用者方案遷移
1 匯出的資料 一 匯出指定使用者 方案 的資料 exp system system owner username file home file data.dmp 如果使用該使用者自己匯出自己的方案,可以先給該使用者賦予匯出許可權 sql grant export full database to ...
oracle使用exp與imp對資料遷移備份的方法
使用exp和imp命令是oracle對資料進行遷移備份的一種最簡單最常用的一種方式。在此記錄下使用的方法步驟,以備後用。首先,在老庫上使用命令 exp userid username password database owner file dmp log log 其中 後面的database是資料...
資料遷移測試
在這幾年的測試工作中,往往會涉及到資料遷移的測試,總結一下資料遷移測試的關注點 1 遷移資料的完整性,主要是資料條數,該遷移的是否都前移到了新的資料庫。2 遷移資料在新的資料庫中的正確性,主要注意點 1 舊資料非必輸字段,在新資料庫中必輸,這種資料的處理是否正確。2 對於單選或多選字段,舊資料與新資...