ORACLE 迁移
對象:表空間,數據庫
作用:將表空間,數據庫通過復制的方法盡快傳輸的另一臺機器,可以跨平臺移動
system表空間遷移:
1. 關閉數據庫
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
2. 復制system表空間對應數據文件去新路徑
3. 以mount啟動數據庫
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area??135338868 bytes
Fixed Size? ?? ?? ?? ?? ?? ? 453492 bytes
Variable Size? ?? ?? ?? ? 109051904 bytes
Database Buffers? ?? ?? ???25165824 bytes
Redo Buffers? ?? ?? ?? ?? ???667648 bytes
數據庫裝載完畢。
4. 修改system表空間對應數據文件去新路徑
SQL> alter database rename file? '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u01/app/oracle/oradata/orcl/system/system01.dbf';
數據庫已更改。
5. 啟動數據庫
SQL> alter database open;
數據庫已更改。
非system表空間遷移:
準備工作:
1. 創建用于傳輸的表空間:
create tablespace move datafile '/u01/app/oracle/oradata/orcl/move.dbf' size 10M;
2. 在表空間上創建表,以便檢查傳輸結果:
conn hr/hr
create table tbmove tablespace move?as select * from hr.employees;
檢查:確保表空間的所有對象都在該表空間中,例如表上的Index
命令:exec dbms_tts.transport_set_check('move', true, true);
檢查結果:SELECT * FROM TRANSPORT_SET_VIOLATIONS;
確保SELECT * FROM TRANSPORT_SET_VIOLATIONS無返回結果
3. 數據庫compatible大于10.0.0:show parameter compatible;
導出:
1. 將表空間設置為只讀:alter tablespace move read only;
2. 導出表空間的metadata:
a. 以system用戶創建文件夾:
create directory tbmove as '/tmp/tbmove';
b. 以system用戶導出表空間的metadata:
服務器端:EXPDP system/password DUMPFILE=expdat.dmp DIRECTORY=TBMOVE?TRANSPORT_TABLESPACES =MOVE
客戶端:expdp?system/password@orcl?dumpfile=expdat.dmp directory=tbmove transport_tablespaces=move
導出報錯,ORA-39123, ORA-29341;通過exec dbms_tts.transport_set_check('move', true, true)重新檢查。
問題是:為檢查創建的tbmove用的是sys用戶,所以無法導出
c. 檢查文件系統,確認文件存在
轉換:
轉換原因:操作系統的Endian format不同
查看:select * from v$transportable_platform
轉換工具:RMAN
轉換地點:源服務器,目標服務器均可,源服務器相對簡單
腳本:
從Linux轉換成windows
RMAN> CONVERT TABLESPACE sales_1,sales_2?
2> TO PLATFORM 'Microsoft Windows NT'
3> FORMAT '/temp/%U';
從linux轉換成HPUX
RMAN> CONVERT DATAFILE?
2> '/hq/finance/work/tru/tbs_31.f',
3> '/hq/finance/work/tru/tbs_32.f',
4> '/hq/finance/work/tru/tbs_41.f'
5> TO PLATFORM="Solaris[tm] OE (32-bit)"
6> FROM PLATFORM="HP TRu64 UNIX"
7> DB_FILE_NAME_CONVERT=
8> "/hq/finance/work/tru/", "/hq/finance/dbs/tru"
9> PARALLELISM=5;
傳輸:將數據文件,metadata文件(expdat.dmp)復制到目標服務器
(如果針對同一機器,同一服務器,需要先刪除表空間 drop tablespace move including contents;)
導入:
IMPDP system/password DUMPFILE=expdat.dmp DIRECTORY=TBMOVE? TRANSPORT_DATAFILES=/tmp/tbmove/move.dbf
設置:
將表空間設置成可讀寫:alter tablespace move read write;
檢查:
conn hr/hr
select * from tbmove;
數據庫重建
同一服務器
使用DBCA將現有數據庫存為模板(包含結構,數據文件),然后使用模板在新位置創建新庫。
總結
- 上一篇: 在建工程的管理是怎样在总帐中实现
- 下一篇: Oracle数据库迁移-基础