熱備份支持在數(shù)據(jù)庫(kù)不停機(jī)的情況下進(jìn)行備份,冷備份是必須在數(shù)據(jù)庫(kù)shutdown以后使用操作系統(tǒng)的命令對(duì)表空間進(jìn)行拷貝進(jìn)行的備份。
創(chuàng)新互聯(lián)公司為企業(yè)提供:品牌網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、成都小程序開(kāi)發(fā)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)和網(wǎng)站運(yùn)營(yíng)托管,一站式網(wǎng)絡(luò)營(yíng)銷(xiāo)整體服務(wù)。實(shí)現(xiàn)不斷獲取潛在客戶(hù)之核心目標(biāo),建立了企業(yè)專(zhuān)屬的“成都全網(wǎng)營(yíng)銷(xiāo)”,就用不著再為了獲取潛在客戶(hù)而苦惱,相反,客戶(hù)會(huì)主動(dòng)找您,生意就找上門(mén)來(lái)了!
熱備份適用于重要的數(shù)據(jù)庫(kù),比如7x24不能中斷的生產(chǎn)系統(tǒng),同時(shí)可以保證數(shù)據(jù)庫(kù)在出現(xiàn)崩潰時(shí)結(jié)合歸檔日志可以恢復(fù)到任意一個(gè)時(shí)間點(diǎn),不會(huì)造成數(shù)據(jù)丟失。
冷備份在數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題是 只會(huì)恢復(fù)到備份時(shí)的那一時(shí)間點(diǎn),備份完成到數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題需要恢復(fù)時(shí)的這一時(shí)間段內(nèi)的所有新數(shù)據(jù)、修改記錄都無(wú)法恢復(fù)。
熱備份只能在歸檔模式下進(jìn)行,冷備份不需要?dú)w檔模式,歸檔模式會(huì)對(duì)系統(tǒng)性能尤其是磁盤(pán)I/O造成一定的影響,但是相對(duì)于歸檔的好處和安全性,相信大多數(shù)DBA都會(huì)選擇歸檔模式。
昨天碰到一客戶(hù),數(shù)據(jù)庫(kù)使用的是WIN2008+RAC+ASM。由于EMC存儲(chǔ)問(wèn)題,導(dǎo)致ASM實(shí)例出問(wèn)題,讀不出數(shù)據(jù),進(jìn)而導(dǎo)致RAC出問(wèn)題。折騰了2個(gè)小時(shí),終于將ASM實(shí)例啟動(dòng),將RAC轉(zhuǎn)換成單節(jié)點(diǎn)。可悲的是,ASM磁盤(pán)組讀取錯(cuò)誤:select 表格出錯(cuò),exp、expdp出錯(cuò),rman拷貝出錯(cuò)。趕到客戶(hù)現(xiàn)場(chǎng),繼續(xù)折騰,終于修復(fù)錯(cuò)誤。簡(jiǎn)要步驟如下 1、同一主機(jī)下面建另一實(shí)例,用于運(yùn)行DBMS_FILE_TRANSFER 2、在該實(shí)例上運(yùn)行DBMS_FILE_TRANSFER,拷貝數(shù)據(jù)文件,控制文件,日志文件 引用 CREATE DIRECTORY source_dir AS '+DATADG/ORADATA'; CREATE DIRECTORY dest_dir AS '/tmp';BEGIN DBMS_FILE_TRANSFER.COPY_FILE( source_directory_object = 'source_dir', source_file_name = 'user01.dbf', destination_directory_object = 'dest_dir', destination_file_name = 'user01.dbf'); END; /二是使用ASM提供的ftp特性 1、同一主機(jī)下面建另一實(shí)例,用于傳輸ftp 2、用ftp傳輸相關(guān)文件附:DBMS_FILE_TRANSFER使用限制 # The user must have read privilege on the source directory object and write privilege on the destination directory object. # The procedure converts directory object names to uppercase unless they are surrounded by double quotes. # Files to be copied must be multiples of 512 bytes in size. # Files to be copied must be equal to or less than 2 terabytes in size. # File transfers are not transactional. # Files are copied as binary, so no character conversions are performed. # File copies can be monitored using the V$SESSION_LONGOPS view ++++++++++++++++++++++++++ 據(jù)一同事反映,Oracle 11g提供了ASM cp命令,允許在ASM磁盤(pán)組和操作系統(tǒng)文件之間互相拷貝。
Oracle的數(shù)據(jù)備份主要有冷備、熱備和數(shù)據(jù)導(dǎo)出。針對(duì)不同的數(shù)據(jù)安全要求,可以采用不同的備份方式,目前生產(chǎn)系統(tǒng)比較常用的是熱備份,安全性較高。
下面是種方式的優(yōu)缺點(diǎn)介紹:
冷備份是Oracle最簡(jiǎn)單的一種備份;執(zhí)行冷備份前必須關(guān)閉數(shù)據(jù)庫(kù);然后使用操作系統(tǒng)實(shí)用工具或者第三方工具備份所有相關(guān)的數(shù)據(jù)庫(kù)文件。
優(yōu)點(diǎn):能簡(jiǎn)單快速地備份。能簡(jiǎn)單快速地恢復(fù)。執(zhí)行簡(jiǎn)單。
缺點(diǎn):必須關(guān)閉數(shù)據(jù)庫(kù),只能恢復(fù)備份時(shí)的狀態(tài)。
熱備份是當(dāng)數(shù)據(jù)庫(kù)正在運(yùn)行時(shí)進(jìn)行數(shù)據(jù)備份的過(guò)程。執(zhí)行熱備份的前提是:數(shù)據(jù)庫(kù)運(yùn)行在可歸檔日志模式。適用于24X7不間斷運(yùn)行的關(guān)鍵應(yīng)用系統(tǒng)。
優(yōu)點(diǎn):備份時(shí)數(shù)據(jù)庫(kù)可以是打開(kāi)的。熱備份可以恢復(fù)到數(shù)據(jù)庫(kù)的某一時(shí)點(diǎn)。
缺點(diǎn):執(zhí)行相對(duì)比較復(fù)雜。由于數(shù)據(jù)庫(kù)不間斷運(yùn)行,熱備份可能造成CPU、I/O過(guò)載,應(yīng)在數(shù)據(jù)庫(kù)不太忙時(shí)進(jìn)行。
冷備份和熱備份都備份物理數(shù)據(jù)庫(kù)文件,因而被稱(chēng)為物理備份。而export備份的是數(shù)據(jù)庫(kù)對(duì)象,因此被稱(chēng)為邏輯備份。
優(yōu)點(diǎn):能執(zhí)行對(duì)象或者行恢復(fù)。備份和恢復(fù)速度更快。能夠跨操作系統(tǒng)平臺(tái)遷移數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)可一直運(yùn)行。
缺點(diǎn):只能恢復(fù)到導(dǎo)出時(shí)的狀態(tài)。export并不是冷備份和熱備份的替代工具。
冷、熱備份可保護(hù)介質(zhì)失效。export備份可保護(hù)用戶(hù)或應(yīng)用錯(cuò)誤。
1. 復(fù)制舊的數(shù)據(jù)庫(kù)文件
(1) 用SQLPlus連接數(shù)據(jù)庫(kù):sqlplus 用戶(hù)名/密碼 as sysdba
(2) 關(guān)閉DB :shutdown immediate;
(3) 復(fù)制文件到其他地方存儲(chǔ)實(shí)現(xiàn)備份
1)復(fù)制三個(gè)文件夾admin;oradata(datafile,?controlfile,redo【注:數(shù)據(jù)文件, 控制文件,redo】);flash_recovery_area三個(gè)文件夾。2)dbhome_1下的內(nèi)容database(PWDfile、pfile);dbs(spfile);NETWORK/ADMIN(listener.ora、tnsnames.ora)。
2. Oracle重新建庫(kù)恢復(fù)
(1)創(chuàng)建一個(gè)和原來(lái)一樣的數(shù)據(jù)庫(kù)。(安裝路徑和數(shù)據(jù)庫(kù)名必須和原來(lái)一致)
(2)停止數(shù)據(jù)庫(kù)shutdown immediate;
(3)復(fù)制安裝目錄下的admin、oradata、flash_recovery_area覆蓋,復(fù)制database(PWDfile、pfile) 覆蓋
(4)啟動(dòng)數(shù)據(jù)庫(kù)?startup;
備注:
無(wú)歸檔模式:將備份文件拷貝回原來(lái)的目錄即可,然后啟動(dòng)數(shù)據(jù)庫(kù)。
歸檔模式:
①將數(shù)據(jù)文件、控制文件拷貝回原來(lái)目錄
②SQLstartup mount;
SQLrecover database using backup controlfile;
③將相應(yīng)的歸檔日志和聯(lián)機(jī)日志拖到CMD命令窗口進(jìn)行跑日志。
④SQLalter database open resetlogs;
3. 軟件重裝恢復(fù)
此時(shí),操作系統(tǒng)重裝,如果做冷備恢復(fù),要保證相同操作系統(tǒng),相同的數(shù)據(jù)庫(kù)版本。形勢(shì)如同異機(jī)恢復(fù)。
A、不創(chuàng)建實(shí)例:(源機(jī)上的數(shù)據(jù)庫(kù)名字為orcl)
(1)?恢復(fù)oradata/orcl目錄
在目標(biāo)機(jī)上的oradata目錄下建立orcl文件夾,然后進(jìn)行數(shù)據(jù)覆蓋。
包括數(shù)據(jù)文件、參數(shù)文件、控制文件、日志文件、pwd文件,放在與原系統(tǒng)相同的目錄。如果目錄有所改變,則需要另外建立控制文件,修改pfile。?(2) 恢復(fù)admin/orcl目錄在目標(biāo)機(jī)上的admin目錄下建立orcl文件夾,然后在orcl里面再建立adump、bdump、cdump、udump、dpdump、pfile六個(gè)文件夾
(3) 建立服務(wù)把源機(jī)的密碼文件拷貝到目標(biāo)機(jī)的database目錄下。使用oradim命令在cmd下oradim -new -sid orcl?表示建立一個(gè)服務(wù),sid為orcl(最好名字和源機(jī)備份的數(shù)據(jù)庫(kù)名字一致,就不需要重建密碼文件)。如果是在linux下,不需要此步。?(4) 重建創(chuàng)建參數(shù)文件、控制文件拷貝源機(jī)的pfile到目標(biāo)機(jī)的一個(gè)目錄下,修改pfile里面相關(guān)文件的路徑。然后通過(guò)SQLcreate spfile from pfile=‘文件路徑'來(lái)創(chuàng)建參數(shù)文件。重建控制文件命令:SQLalter database backup controlfile to trace;?然后會(huì)在udump文件夾下產(chǎn)生一個(gè)追蹤文件,打開(kāi)文件找到如下一段,復(fù)制到文本中,修改相應(yīng)路徑然后保存為:createctl.sql文件(sql腳本文件),復(fù)制到目標(biāo)機(jī)上。注意:SQLalter database backup controlfile to trace as 'F:/DB_RECOVERY/CONTROL_FILE_TRACE.TXT';復(fù)制的原始導(dǎo)出txt中的,相應(yīng)代碼片段如下:?View Code
(5)? 數(shù)據(jù)庫(kù)設(shè)置SID和啟動(dòng)服務(wù)
12345678 ? ?c:\set?ORACLE_SID=orclc:\sqlplus?"/as sysdba"?SQLcreate?spfile?from?pfile='c:\pfile.txt';SQL@c:\createctl.sql;SQLshutdown immediate;SQLstartup;SQLalter?database?open?resetlogs; ?
備注:
如果(4)、(5)不好用,可以用下面的方法修改這些路徑不一致的問(wèn)題(反正筆者電腦上冷備份恢復(fù)時(shí),上面的兩個(gè)步驟就不好用):
1)SQL下執(zhí)行如下語(yǔ)句,恢復(fù)控制文件
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS? ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
2)修改日志、DBF的路徑
修改oracle_home\oradata\orcl下及相關(guān)文件的路徑
(6) TNSNAMES設(shè)置在network\admin下的tnsnames.ora中添加如下片段
123456789 ? ?ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl))) ?
(7) 建立監(jiān)聽(tīng)用net configuration為orcl實(shí)例新建監(jiān)聽(tīng)?至此,冷備份恢復(fù)成功。即使你現(xiàn)在用oem打開(kāi)數(shù)據(jù)庫(kù)時(shí)發(fā)現(xiàn)提示找不到sid ,但實(shí)際上你已經(jīng)成功了,此時(shí)只需要重啟一下的你的服務(wù)器就可以。
B、創(chuàng)建實(shí)例方式(實(shí)例SID與源機(jī)數(shù)據(jù)庫(kù)SID一致)
(1) 替換和覆蓋oradata\orcl目錄刪除目標(biāo)機(jī)的oradata\orcl底下的所有文件,把源機(jī)的所有data文件、redo文件拷貝到此目錄下
(2) 密碼文件覆蓋刪除目標(biāo)機(jī)的密碼文件,拷貝源機(jī)密碼文件到目標(biāo)機(jī)下。
(3) 控制文件恢復(fù)在源機(jī)上重建目標(biāo)機(jī)的控制文件:SQLalter database backup controlfile to trace;然后會(huì)在udump文件夾下產(chǎn)生一個(gè)追蹤文件,打開(kāi)文件找到上面那段,復(fù)制到文本中,修改相應(yīng)路徑然后保存為:createctl.sql文件(sql腳本文件),復(fù)制到目標(biāo)機(jī)上。
復(fù)制代碼代碼如下:
12345 ? ?c:\sqlplus?"/as sysdba"SQL@c:\createctl.sql;SQLshutdown immediate;SQLstartup;SQLalter?database?open?resetlogs; ?
(4)? 在network\admin下的tnsnames.ora中添加如下片段
復(fù)制代碼代碼如下:
123456789 ? ?ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl))) ?
(5) 用net configuration為orcl實(shí)例新建監(jiān)聽(tīng)
若是初學(xué)Linux的話(huà)建議看看《Linux就該這么學(xué)》這本書(shū)。
1、數(shù)據(jù)量不大的話(huà),比如整體小于10G,你可以在主機(jī)訪(fǎng)問(wèn)量小時(shí)或者shutdown時(shí)將oracle打包。例如:tar zcf /opt/u02.gz /u02,然后將u02.gz文件scp到備機(jī)。
2、如果數(shù)據(jù)量很大,你可以用rsync同步到備機(jī)
3、配置主備無(wú)密碼互訪(fǎng)
4、添加計(jì)劃任務(wù)
crontab -e
0 4 * * * /opt/rsync_ora.sh;
rsync_ora.sh內(nèi)容:
#!/bin/sh
rsync -av '-e ssh -p 22' /u02/oracle oracle@172.16.1.2:/u02
rsync -av '-e ssh -p 22' /data1/oracle oracle@172.16.1.2:/data1