原系統: win7 64位系統 oracle 10.2.0.3.0 32位資料庫,裡面真實數據:
目標系統:redhat 5.4 oracle 10.2.0.3.0 32位資料庫
【最好做遷移的是同資料庫版本,可以避免不少問題,但可以嘗試從低版本恢復到高版本,而高版本恢復到低版本就不推薦了,至少試過恢復,但不少問題】
備份腳本:
orcl DBID=1297031839【要在源資料庫記錄下來】
run{
allocate channel c1 type disk;
sql 'alter system archive log current';
backup database format 'D:\rman\rman\full_db_%U_%T';
backup archivelog all delete all input format 'D:\rman\rman\ARC_%U_%T';
backup current controlfile format 'D:\rman\rman\ctr_%U_%T';
release channel c1;
}
【注意:控制文件一定要最后備份,由於沒做歸檔目錄資料庫,
pfile備份是由win7
create pfile='D:/initorcl.ora' from spfile;【pfile備份后,拷貝到目標資料庫伺服器】
【一般rman全備只備份spfile 那pfile可以通過restore spfile to pfile ‘xxx’ from ‘spfile備份集’來恢復pfile,
然後對pfile進行相應修改(不同平台遷移必須修改,同平台遷移 路徑不同的時候,也有時候要修改)】
需要對pfile進行修改【由於Windows跟Linux磁碟路徑不一樣,要手工修改到目標資料庫的相關路徑,並建立相關資料庫目錄】
====================================================
orcl.__db_cache_size=398458880
orcl.__java_pool_size=16777216
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=163577856
*.audit_file_dest='/opt/app/oracle/product/10.2/admin/orcl/adump'
*.background_dump_dest='/opt/app/oracle/product/10.2/admin/orcl/bdump'
*.compatible='10.2.0.3.0'
*.control_files='/opt/app/oracle/oradata/control01.ctl','/opt/app/oracle/oradata/control02.ctl','/opt/app/oracle/oradata/control03.ctl'
*.core_dump_dest
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='/opt/app/oracle/product/10.2/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=196083712
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/opt/app/oracle/product/10.2/admin/orcl/udump'
對於修改的路徑要進行確認,是否linux
====================================================
然後傳送進去linux系統,正式恢復資料庫:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1,用傳進來的pfile啟動nomount資料庫:set
id="圖片_x0020_2" o:spid="_x0000_i1040" type="#_x0000_t75" style='width:483pt; height:165.75pt;visibility:visible;mso-wrap-style:square'>
現在還看不到備份集的:
id="圖片_x0020_3" o:spid="_x0000_i1039" type="#_x0000_t75" style='width:381.75pt; height:48.75pt;visibility:visible;mso-wrap-style:square'>
2,恢復控制文件
id="圖片_x0020_4" o:spid="_x0000_i1038" type="#_x0000_t75" style='width:471.75pt; height:149.25pt;visibility:visible;mso-wrap-style:square'>
3,把資料庫mount起來
id="圖片_x0020_5" o:spid="_x0000_i1037" type="#_x0000_t75" style='width:485.25pt; height:81.75pt;visibility:visible;mso-wrap-style:square'>
4,設置【由於Windows跟Linux路徑不同,控制文件雖然恢復出來,但裡面信息還是
id="圖片_x0020_6" o:spid="_x0000_i1036" type="#_x0000_t75" style='width:484.5pt; height:183pt;visibility:visible;mso-wrap-style:square'>
id="圖片_x0020_8" o:spid="_x0000_i1034" type="#_x0000_t75" style='width:498pt; height:207pt;visibility:visible;mso-wrap-style:square'>
【如上圖
5,執行資料庫恢復腳本如下:【目標資料庫是Linux 目錄路徑不同,要對數據文件進行set newname
run{
allocate channel c1 type disk;
set newname for datafile 1 to '/opt/app/oracle/product/10.2/oradata/orcl/SYSTEM01.DBF';
set newname for datafile 2 to '/opt/app/oracle/product/10.2/oradata/orcl/UNDOTBS01.DBF';
set newname for datafile 3 to '/opt/app/oracle/product/10.2/oradata/orcl/SYSAUX01.DBF.DBF';
set newname for datafile 4 to '/opt/app/oracle/product/10.2/oradata/orcl/USERS01.DBF.DBF';
set newname for datafile 5 to '/opt/app/oracle/product/10.2/oradata/orcl/RMAN.DBF';
restore database;
switch datafile all;
release channel c1;
}
【如下為操作步驟and過程輸出信息】
id="圖片_x0020_9" o:spid="_x0000_i1033" type="#_x0000_t75" style='width:463.5pt; height:218.25pt;visibility:visible;mso-wrap-style:square'>
id="圖片_x0020_10" o:spid="_x0000_i1032" type="#_x0000_t75" style='width:485.25pt; height:181.5pt;visibility:visible;mso-wrap-style:square'>
id="圖片_x0020_11" o:spid="_x0000_i1031" type="#_x0000_t75" style='width:484.5pt; height:234.75pt;visibility:visible;mso-wrap-style:square'>
6.recover database;
id="圖片_x0020_12" o:spid="_x0000_i1030" type="#_x0000_t75" style='width:478.5pt; height:289.5pt;visibility:visible;mso-wrap-style:square'>
id="圖片_x0020_13" o:spid="_x0000_i1029" type="#_x0000_t75" style='width:487.5pt; height:86.25pt;visibility:visible;mso-wrap-style:square'>
7,啟動資料庫【由於有新的
id="圖片_x0020_14" o:spid="_x0000_i1028" type="#_x0000_t75" style='width:485.25pt; height:62.25pt;visibility:visible;mso-wrap-style:square'>
8驗證是否恢復成功
id="圖片_x0020_15" o:spid="_x0000_i1027" type="#_x0000_t75" style='width:485.25pt; height:265.5pt;visibility:visible;mso-wrap-style:square'>
到這裡證明已經正確恢復了資料庫,以下是善後工作:
在sqlplus / as sysdba下執行:
id="圖片_x0020_16" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:474pt; height:197.25pt;visibility:visible;mso-wrap-style:square'>
要重建下spfile,恢復時候是通過pfile恢復的,建好spfile后,重啟就不需要指定
id="圖片_x0020_17" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:329.25pt; height:182.25pt;visibility:visible;mso-wrap-style:square'>
可以再做個
恢復好資料庫后,最好對資料庫做個全備喔.
本文出自 「FJXSUNMIT」 博客,請務必保留此出處http://fjxsunmit.blog.51cto.com/326634/737400
[火星人 ] 【Win7 Oracle 10G rman遷移恢復到Linux 32bit oracle 10G實戰】已經有726次圍觀