ORACLE 迁移
對象:表空間,數(shù)據(jù)庫
作用:將表空間,數(shù)據(jù)庫通過復制的方法盡快傳輸?shù)牧硪慌_機器,可以跨平臺移動
system表空間遷移:
1. 關(guān)閉數(shù)據(jù)庫
SQL> shutdown immediate
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
2. 復制system表空間對應(yīng)數(shù)據(jù)文件去新路徑
3. 以mount啟動數(shù)據(jù)庫
SQL> startup mount
ORACLE 例程已經(jīng)啟動。
Total System Global Area??135338868 bytes
Fixed Size? ?? ?? ?? ?? ?? ? 453492 bytes
Variable Size? ?? ?? ?? ? 109051904 bytes
Database Buffers? ?? ?? ???25165824 bytes
Redo Buffers? ?? ?? ?? ?? ???667648 bytes
數(shù)據(jù)庫裝載完畢。
4. 修改system表空間對應(yīng)數(shù)據(jù)文件去新路徑
SQL> alter database rename file? '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u01/app/oracle/oradata/orcl/system/system01.dbf';
數(shù)據(jù)庫已更改。
5. 啟動數(shù)據(jù)庫
SQL> alter database open;
數(shù)據(jù)庫已更改。
非system表空間遷移:
準備工作:
1. 創(chuàng)建用于傳輸?shù)谋砜臻g:
create tablespace move datafile '/u01/app/oracle/oradata/orcl/move.dbf' size 10M;
2. 在表空間上創(chuàng)建表,以便檢查傳輸結(jié)果:
conn hr/hr
create table tbmove tablespace move?as select * from hr.employees;
檢查:確保表空間的所有對象都在該表空間中,例如表上的Index
命令:exec dbms_tts.transport_set_check('move', true, true);
檢查結(jié)果:SELECT * FROM TRANSPORT_SET_VIOLATIONS;
確保SELECT * FROM TRANSPORT_SET_VIOLATIONS無返回結(jié)果
3. 數(shù)據(jù)庫compatible大于10.0.0:show parameter compatible;
導出:
1. 將表空間設(shè)置為只讀:alter tablespace move read only;
2. 導出表空間的metadata:
a. 以system用戶創(chuàng)建文件夾:
create directory tbmove as '/tmp/tbmove';
b. 以system用戶導出表空間的metadata:
服務(wù)器端: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)重新檢查。
問題是:為檢查創(chuàng)建的tbmove用的是sys用戶,所以無法導出
c. 檢查文件系統(tǒng),確認文件存在
轉(zhuǎn)換:
轉(zhuǎn)換原因:操作系統(tǒng)的Endian format不同
查看:select * from v$transportable_platform
轉(zhuǎn)換工具:RMAN
轉(zhuǎn)換地點:源服務(wù)器,目標服務(wù)器均可,源服務(wù)器相對簡單
腳本:
從Linux轉(zhuǎn)換成windows
RMAN> CONVERT TABLESPACE sales_1,sales_2?
2> TO PLATFORM 'Microsoft Windows NT'
3> FORMAT '/temp/%U';
從linux轉(zhuǎn)換成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;
傳輸:將數(shù)據(jù)文件,metadata文件(expdat.dmp)復制到目標服務(wù)器
(如果針對同一機器,同一服務(wù)器,需要先刪除表空間 drop tablespace move including contents;)
導入:
IMPDP system/password DUMPFILE=expdat.dmp DIRECTORY=TBMOVE? TRANSPORT_DATAFILES=/tmp/tbmove/move.dbf
設(shè)置:
將表空間設(shè)置成可讀寫:alter tablespace move read write;
檢查:
conn hr/hr
select * from tbmove;
數(shù)據(jù)庫重建
同一服務(wù)器
使用DBCA將現(xiàn)有數(shù)據(jù)庫存為模板(包含結(jié)構(gòu),數(shù)據(jù)文件),然后使用模板在新位置創(chuàng)建新庫。
總結(jié)
- 上一篇: 在建工程的管理是怎样在总帐中实现
- 下一篇: sybase