歡迎您光臨本站 註冊首頁

【Win7 Oracle 10G rman遷移恢復到Linux 32bit oracle 10G實戰】

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

原系統: 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;

}

【注意:控制文件一定要最后備份,由於沒做歸檔目錄資料庫,

rman備份信息都放在控制文件裡面,要保證備份過程的信息內容都進入到控制文件,保證數據文件和控制文件是一致備份

pfile備份是由win7

資料庫直接利用一下語句備份出來的:

create pfile='D:/initorcl.ora' from spfile;pfile備份后,拷貝到目標資料庫伺服器】

【一般rman全備只備份spfile 那pfile可以通過restore spfile to pfile ‘xxx’ from ‘spfile備份集’來恢復pfile,

然後對pfile進行相應修改(不同平台遷移必須修改,同平台遷移 路徑不同的時候,也有時候要修改)】

需要對pfile進行修改【由於WindowsLinux磁碟路徑不一樣,要手工修改到目標資料庫的相關路徑,並建立相關資料庫目錄

,不然會提示找不到adump udump等目錄路徑文件的

====================================================

orcl.__db_cache_size=398458880

orcl.__java_pool_size=16777216

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=163577856

orcl.__streams_pool_size=0

*.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

='/opt/app/oracle/product/10.2/admin/orcl/cdump'

*.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'

*.sga_target=589299712

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/opt/app/oracle/product/10.2/admin/orcl/udump'

對於修改的路徑要進行確認,是否linux

下已經有該路徑了

====================================================

然後傳送進去linux系統,正式恢復資料庫:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1,用傳進來的pfile啟動nomount資料庫:set

DBID=1296363687

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,設置【由於WindowsLinux路徑不同,控制文件雖然恢復出來,但裡面信息還是

Windows下的目錄路徑,如下動作是告訴rman從哪裡讀取備份集】

id="圖片_x0020_6" o:spid="_x0000_i1036" type="#_x0000_t75" style='width:484.5pt; height:183pt;visibility:visible;mso-wrap-style:square'>

id="圖片_x0020_7" o:spid="_x0000_i1035" type="#_x0000_t75" style='width:485.25pt; height:211.5pt;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'>

【如上圖

catalog with 命令后,就可以識別存放備份集的物理位置了】

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'>

報錯了,但是沒關係,並非嚴重錯誤,只是提醒你一些不完整recover信息,有時候會提示恢復到一個未知的scn號.如果要避免這個scn未知錯誤,可以在alter database mount之後,通過set until scn

或者set until time命令設置恢復到的scn號或時間

7,啟動資料庫【由於有新的

log文件和臨時表空間,要resetlogs

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后,重啟就不需要指定

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'>

可以再做個

pfile的備份.

恢復好資料庫后,最好對資料庫做個全備喔.

本文出自 「FJXSUNMIT」 博客,請務必保留此出處http://fjxsunmit.blog.51cto.com/326634/737400


[火星人 ] 【Win7 Oracle 10G rman遷移恢復到Linux 32bit oracle 10G實戰】已經有726次圍觀

http://coctec.com/docs/linux/show-post-46641.html