資料備份當然是為資料恢複準備,新環境的oracle一直在進行備份,但都沒有測試驗證備份的有效性,是以本次測試的重要性不言而喻了!以下為WIN平台下RMAN異機恢複執行個體。
源庫
目标庫
作業系統
WIN SVR 2008 R2
主機名
Ora
ORATEST
IP
192.168.18.20
192.168.18.25
資料庫版本
11.2.0.1.0
存儲方式
單執行個體
ORACLE_HOME
D:\app\Administrator\product\11.2.0\dbhome_1
ORACLE_SID
HWPROD
源庫備份操作:
相關備份配置及腳本如下:
RMAN> show all;
db_unique_name 為 HWPROD 的資料庫的 RMAN 配置參數為:
CONFIGURE RETENTION POLICY TO RECOVERYWINDOW OF 3 DAYS; #保留備份為3天
CONFIGURE BACKUP OPTIMIZATION OFF; #default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; #default
CONFIGURE CONTROLFILE AUTOBACKUP ON; #需要打開自動備份
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FORDEVICE TYPE DISK TO 'e:\data_backup\
ctl_%F.bak'; #指定備份控制檔案及參數檔案備份路徑格式
CONFIGURE DEVICE TYPE DISK PARALLELISM 1BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICETYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FORDEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; #default
CONFIGURE ENCRYPTION FOR DATABASE OFF; #default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; #default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' ASOF RELEASE 'DEFAULT' OPTIMIZE FOR LOA
D TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TONONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHO
ME_1\DATABASE\SNCFHWPROD.ORA'; # default
full_backup.sql
<code>run{</code>
<code>allocate channel d1 type disk; </code>
<code>allocate channel d2 type disk;</code>
<code>backup </code><code>as</code> <code>compressed backupset fulldatabase format </code><code>'e:\data_backup\full_%d_%s_%p_%u_%t.bak'</code><code>;</code>
<code>sql </code><code>'alter system archive logcurrent'</code><code>; </code>
<code>backup archivelog </code><code>all</code> <code>format</code><code>'e:\data_backup\log_%d_%s_%p_%u_%t.bak'</code> <code>delete</code> <code>all</code> <code>input; </code>
<code>release channel d1;</code>
<code>release channel d2;</code>
<code>report obsolete; </code>
<code>crosscheck backup; </code>
<code>delete</code> <code>noprompt expired backup; </code>
<code>delete</code> <code>noprompt obsolete; </code>
<code>}</code>
full_backup.bat
<code>set</code> <code>oracle_sid=hwprod</code>
<code>set</code> <code>d=%</code><code>date</code><code>:~,4%%</code><code>date</code><code>:~5,2%%</code><code>date</code><code>:~8,2%</code>
<code>echo=>e:\rman_script\log\full_backup_%d%.log</code>
<code> </code>
<code>rman target /cmdfile=e:\rman_script\full_backup.sqlmsglog=e:\rman_script\log\full_backup_%d%.log</code>
RMAN恢複思路步驟:
初始化資料庫,安裝相同環境;
恢複參數檔案;
恢複控制檔案;
啟動資料庫到MOUNT狀态,利用控制檔案進行資料恢複;
檢視歸檔日志備份sequence;
Restore –recover—alter database open ressetlogs;
驗證;
設定監聽
1、 系統安裝完成後,安裝ORACLE軟體,選擇隻安裝軟體,并安裝與源庫相同路徑,然後把相關備份檔案拷貝到原備份路徑,為避免不必要的麻煩,建議設定與源庫一緻。
2、建立相關的密碼檔案,服務,監聽器,否則無法連接配接DB
<code>C:\Users\Administrator>D:</code>
<code>D:\>cd D:\app\Administrator\product\11.2.0\dbhome_1\BIN</code>
<code>D:\app\Administrator\product\11.2.0\dbhome_1\BIN>orapwd file=D:\app\Administrator\product\11.2.0\dbhome_1\</code><code>database</code><code>\pwdhwprod.ora </code><code>password</code><code>=oracle entries=5;</code>
<code>D:\app\Administrator\product\11.2.0\dbhome_1\BIN>oradim -new -sid HWPROD -startmode m</code>
<code>執行個體已建立。</code>
<code>D:\app\Administrator\product\11.2.0\dbhome_1\BIN></code><code>set</code> <code>ORACLE_SID=HWPROD</code>
D:\app\Administrator\product\11.2.0\dbhome_1\BIN>
D:\app\Administrator\product\11.2.0\dbhome_1\BIN>sqlplus/ as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 4月 21 14:19:482017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已連接配接到空閑例程。
SQL>
<a href="https://s4.51cto.com/wyfs02/M00/92/BF/wKioL1kCqhnStZLCAAAw976cjSY886.png-wh_500x0-wm_3-wmp_4-s_4034308860.png" target="_blank"></a>
此時可以連接配接到DB了。
3、手動建立一個pfile檔案(目的是使用資料庫啟動到nomount狀态),放到D:\app\Administrator\product\11.2.0\dbhome_1\database目錄下,inithwprod.ora内容如下:
db_name=HWPROD
java_pool_size=4194304
large_pool_size=4194304
shared_pool_size=96468992
<a href="https://s4.51cto.com/wyfs02/M02/92/C0/wKiom1kCqlPzsnnhAAAochqfGro724.png-wh_500x0-wm_3-wmp_4-s_3779173267.png" target="_blank"></a>
以此pfile啟動資料庫到nomount狀态:
<a href="https://s2.51cto.com/wyfs02/M01/92/BF/wKioL1kCqqWCHAsNAABGZ5PeOjE703.png-wh_500x0-wm_3-wmp_4-s_2114927293.png" target="_blank"></a>
<code>SQL> startuppfile=</code><code>'D:\app\Administrator\product\11.2.0\dbhome_1\database\inithwprod.ora'</code> <code>nomount;</code>
ORACLE 例程已經啟動。
Total System Global Area 162873344 bytes
Fixed Size 2173800 bytes
Variable Size 104858776 bytes
Database Buffers 50331648 bytes
Redo Buffers 5509120 bytes
4、切換到RMAN下,并SETDBID=3279461817(源庫DBID):
<a href="https://s4.51cto.com/wyfs02/M01/92/C0/wKiom1kCqteRcIgHAABW61dRT94467.png-wh_500x0-wm_3-wmp_4-s_3933041186.png" target="_blank"></a>
<a href="https://s4.51cto.com/wyfs02/M02/92/BF/wKioL1kCqtfDWV4hAABUz4YCS2Y719.png-wh_500x0-wm_3-wmp_4-s_1433334819.png" target="_blank"></a>
5、建立flash_recovery_area、ORADATA目錄,否則恢複資料時會報錯ORA-01263: Name given for file destination directory is invalid 。
建立相關目錄:
<a href="https://s2.51cto.com/wyfs02/M01/92/BF/wKioL1kCq0iDxfTIAACM8_VbfkI826.png-wh_500x0-wm_3-wmp_4-s_4066059722.png" target="_blank"></a>
6、恢複spfile檔案:
Restore SPfile檔案,找到源spfile備份相關檔案進行恢複:
<code>RMAN> restore spfile </code><code>from</code><code>'e:\data_backup\CTL_C-3279461817-20180116-00.BAK'</code><code>;</code>
恢複參數檔案完成後,shutdown 資料庫,退出RMAN,找到恢複的參數檔案把相關參數copy并修改到inithwprod.ora檔案裡(這裡應該注意,源庫可能空間較大,如果設定不當,啟動資料庫到nomount時會報ORA-27102 out of memory 等錯誤,是以關于sga,pga等酌情根據目标庫修改)
以下為修改後的inithwprod.ora檔案内容:
<code>hwprod.__java_pool_size=33554432</code>
<code>hwprod.__large_pool_size=33554432</code>
<code>hwprod.__oracle_base=</code><code>'d:\app\Administrator'</code><code>#ORACLE_BASE </code><code>set</code> <code>from</code> <code>environment</code>
<code>hwprod.__pga_aggregate_target=536870912</code>
<code>hwprod.__sga_target=536870912</code>
<code>hwprod.__shared_io_pool_size=0</code>
<code>hwprod.__shared_pool_size=536870912</code>
<code>hwprod.__streams_pool_size=16777216</code>
<code>*.audit_file_dest=</code><code>'d:\app\Administrator\admin\hwprod\adump'</code>
<code>*.audit_trail=</code><code>'db'</code>
<code>*.compatible=</code><code>'11.2.0.0.0'</code>
<code>*.control_files=</code><code>'d:\app\Administrator\oradata\hwprod\control01.ctl'</code><code>,</code><code>'d:\app\Administrator\flash_recovery_area\hwprod\control02.ctl'</code>
<code>*.db_block_size=8192</code>
<code>*.db_domain=</code><code>'hwprod_test'</code>
<code>*.db_name=</code><code>'hwprod'</code>
<code>*.db_recovery_file_dest=</code><code>'d:\app\Administrator\flash_recovery_area'</code>
<code>*.db_recovery_file_dest_size=2147483648</code>
<code>*.diagnostic_dest=</code><code>'d:\app\Administrator'</code>
<code>*.dispatchers=</code><code>'(PROTOCOL=TCP) (SERVICE=hwprodXDB)'</code>
<code>*.log_archive_format=</code><code>'ARC%S_%R.%T'</code>
<code>*.memory_target=1073741824</code>
<code>*.nls_language=</code><code>'SIMPLIFIED CHINESE'</code>
<code>*.nls_territory=</code><code>'CHINA'</code>
<code>*.open_cursors=100</code>
<code>*.processes=500</code>
<code>*.remote_login_passwordfile=</code><code>'EXCLUSIVE'</code>
<code>*.undo_tablespace=</code><code>'UNDOTBS1'</code>
修改完成後再進入RMAN,并把資料庫startup nomount 狀态
<code>SQL> startup nomount pfile=</code><code>'D:\app\Administrator\product\11.2.0\dbhome_1\database\inithwprod.ora'</code> <code>;</code>
7、此時可以進行恢複控制檔案,找到源控制檔案備份相關檔案進行恢複:
<code>RMAN> restore controlfile </code><code>from</code><code>'E:\data_backup\CTL_C-3279461817-20170427-01'</code><code>;</code>
控制檔案恢複完成後,接下來把資料庫修改為MOUNT狀态:
8、檢視歸檔日志備份的狀态,其最大sequence為18437
<a href="https://s3.51cto.com/wyfs02/M01/92/BF/wKioL1kCq9iD2_ZfAAByIFANEqg849.png-wh_500x0-wm_3-wmp_4-s_737526331.png" target="_blank"></a>
<code>RMAN> list backup </code><code>of</code> <code>archivelog </code><code>all</code><code>;</code>
9、進行資料檔案恢複:
<a href="https://s3.51cto.com/wyfs02/M00/92/C0/wKiom1kCq_-yIw2SAABhdEBsLc4501.png-wh_500x0-wm_3-wmp_4-s_2353016148.png" target="_blank"></a>
<code>RMAN> run {</code>
<code>2> </code><code>set</code> <code>until </code><code>sequence</code> <code>18437;</code>
<code>3> restore </code><code>database</code><code>;</code>
<code>4> }</code>
<a href="https://s1.51cto.com/wyfs02/M02/92/C0/wKiom1kCrCvjWLAZAABkEfhAIx0638.png-wh_500x0-wm_3-wmp_4-s_769031644.png" target="_blank"></a>
<code>3> recover </code><code>database</code><code>;</code>
10、resetlogs 打開資料庫:
<a href="https://s3.51cto.com/wyfs02/M00/92/BF/wKioL1kCrEvg7uDAAABilW97oUs894.png-wh_500x0-wm_3-wmp_4-s_2642198968.png" target="_blank"></a>
<code>RMAN> </code><code>alter</code> <code>database</code> <code>open</code> <code>resetlogs;</code>
11、檢視資料庫狀态:
<a href="https://s1.51cto.com/wyfs02/M01/92/BF/wKioL1kCrG6A8jsfAAAn1Dw1hOQ985.png-wh_500x0-wm_3-wmp_4-s_3311322287.png" target="_blank"></a>
12、添加系統資料庫SID:
<code>HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1</code>
<code>"ORACLE_SID"</code><code>=</code><code>"HWPROD"</code>
<a href="https://s2.51cto.com/wyfs02/M02/92/BF/wKioL1kCrInyb453AACszi3b0lU105.png-wh_500x0-wm_3-wmp_4-s_110264737.png" target="_blank"></a>
13、建立SPfile參數檔案
<code>SQL> </code><code>create</code> <code>spfile </code><code>from</code> <code>pfile;</code>
可以看到相關路徑已經建立新的參數檔案:
14、重新開機資料庫,是否以SPFILE啟動:
<code>SQL> </code><code>select</code> <code>decode(</code><code>count</code><code>(*),1,</code><code>'spfile'</code><code>,</code><code>'pfile'</code><code>) </code><code>from</code> <code>v$spparameter </code><code>where</code> <code>rownum=1 </code><code>and</code> <code>isspecified = </code><code>'TRUE'</code><code>;</code>
<a href="https://s5.51cto.com/wyfs02/M00/92/BF/wKioL1kCrKmTaOwvAABBARpmX7g209.png-wh_500x0-wm_3-wmp_4-s_258293320.png" target="_blank"></a>
15、修改listener.ora,tnsnames.ora
<a href="https://s3.51cto.com/wyfs02/M02/92/C1/wKiom1kCrMGRhv7SAABW38TJ9Lo572.png-wh_500x0-wm_3-wmp_4-s_3367438873.png" target="_blank"></a>
listener.ora
<code># listener.ora Network Configuration File:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora</code>
<code># Generated </code><code>by</code> <code>Oracle configuration tools.</code>
<code>SID_LIST_LISTENER =</code>
<code> </code><code>(SID_LIST =</code>
<code> </code><code>(SID_DESC =</code>
<code> </code><code>(GLOBAL_DBNAME = HWPROD)</code>
<code> </code><code>(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)</code>
<code> </code><code>(SID_NAME = HWPROD)</code>
<code> </code><code>)</code>
<code> </code><code>)</code>
<code>LISTENER =</code>
<code> </code><code>(DESCRIPTION =</code>
<code> </code><code>(ADDRESS = (PROTOCOL = TCP)(HOST = ORATEST)(PORT = 1521))</code>
<code>ADR_BASE_LISTENER =D:\app\Administrator\product\11.2.0\dbhome_1\log</code>
tnsnames.ora
<code># tnsnames.ora Network Configuration File:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora</code>
<code>HWPROD =</code>
<code> </code><code>(ADDRESS_LIST =</code>
<code> </code><code>(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.25)(PORT = 1521))</code>
<code> </code><code>(CONNECT_DATA =</code>
<code> </code><code>(SERVICE_NAME = HWPROD)</code>
檢視監聽狀态:
<a href="https://s4.51cto.com/wyfs02/M02/92/BF/wKioL1kCrOLyBvRrAABjwHoBGzU386.png-wh_500x0-wm_3-wmp_4-s_3605661392.png" target="_blank"></a>
驗證資料,OK!
2018-01-16更新
參考:http://blog.itpub.net/29119536/viewspace-1171894/
本文轉自pimg200551CTO部落格,原文連結:http://blog.51cto.com/pimg2005/1920337 ,如需轉載請自行聯系原作者