Oracle归档模式及归档日志的操作
1歸檔模式及歸檔日志基本概念:
1.1為什么要給Oracle做歸檔操作:
Oracle數(shù)據(jù)庫(kù)有聯(lián)機(jī)重做日志,這個(gè)日志是記錄對(duì)數(shù)據(jù)庫(kù)所做的修改,比如插入,刪除,更新數(shù)據(jù)等,對(duì)這些操作都會(huì)記錄在聯(lián)機(jī)重做日志里。
當(dāng)ORACLE數(shù)據(jù)庫(kù)運(yùn)行在ARCHIVELOG(歸檔模式)模式時(shí),所有的事務(wù)重做日志都將保存.這意味著對(duì)數(shù)據(jù)庫(kù)進(jìn)行的所有事務(wù)都留有一個(gè)備份,盡管重做日志以循環(huán)方式工作,但在一個(gè)重做日志被覆蓋前均將為其建立一個(gè)副本.在重做日志文件復(fù)制完成之前,ORACLE數(shù)據(jù)庫(kù)將停止一切新的操作,在舊的事務(wù)記錄完成之前ORACLE不對(duì)其進(jìn)行覆蓋.有了所有事務(wù)的副本,數(shù)據(jù)庫(kù)就可以從所有類(lèi)型的失敗中恢復(fù),包括用戶(hù)錯(cuò)誤或磁盤(pán)崩潰.這是一種最安全的數(shù)據(jù)庫(kù)工作方式。在實(shí)際開(kāi)發(fā)中,歸檔模式是符合開(kāi)發(fā)的,歸檔模式可以提高Oracle數(shù)據(jù)庫(kù)的可恢復(fù)性,生產(chǎn)數(shù)據(jù)庫(kù)都應(yīng)該運(yùn)行在此模式下,數(shù)據(jù)庫(kù)使用歸檔方式運(yùn)行時(shí)才可以進(jìn)行災(zāi)難性恢復(fù)。
1.2歸檔日志模式和非歸檔日志模式的區(qū)別:
非歸檔模式只能做冷備份,并且恢復(fù)時(shí)只能做完全備份.最近一次完全備份到系統(tǒng)出錯(cuò)期間的數(shù)據(jù)不能恢復(fù).
歸檔模式可以做熱備份,并且可以做增量備份,可以做部分恢復(fù).
1.3什么是歸檔日志:
歸檔日志(Archive Log)是非活動(dòng)的重做日志備份.通過(guò)使用歸檔日志,可以保留所有重做歷史記錄,當(dāng)數(shù)據(jù)庫(kù)處于ARCHIVELOG模式并進(jìn)行日志切換式,后臺(tái)進(jìn)程ARCH會(huì)將重做日志的內(nèi)容保存到歸檔日志中.當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)介質(zhì)失敗時(shí),使用數(shù)據(jù)文件備份,歸檔日志和重做日志可以完全恢復(fù)數(shù)據(jù)庫(kù)。
2Linux系統(tǒng)開(kāi)啟歸檔模式:
使用ssh登錄到Linux系統(tǒng):
2.1切換到oracle用戶(hù),然后使用sqlplus /nolog登錄到oracle數(shù)據(jù)上:
su -oracle
sqlplus /nolog
2.2使用oracle系統(tǒng)管理員sysdba登錄到數(shù)據(jù)庫(kù):
conn /as sysdba
2.3查看當(dāng)前oracle的模式:
select log_mode from v$database;
如果當(dāng)前模式為NOARCHIVELOG,就說(shuō)明沒(méi)有開(kāi)啟歸檔模式
2.4關(guān)閉數(shù)據(jù)庫(kù),啟動(dòng)到mount狀態(tài):
shutdown immediate;
startup mount;
2.5修改數(shù)據(jù)庫(kù)為歸檔模式
alter database archivelog; (此處的分號(hào)不可以省略)
(如果是歸檔模式改為非歸檔,則執(zhí)行:alter database noarchivelog;)
2.6啟動(dòng)數(shù)據(jù)庫(kù):
alter database open;
2.7再次驗(yàn)證:
執(zhí)行select log_mode from v$database;
可查看到oracle已經(jīng)修改為歸檔模式了
3Windows開(kāi)啟歸檔模式:
3.1打開(kāi)sqlplus工具:
sqlplus工具路徑:F:Oracleproduct11.2.0dbhome_1BIN中的sqlplus.exe
雙擊打開(kāi)即可。(或者cmd到)
3.2登錄到Oracle數(shù)據(jù)庫(kù):
第一種方式:輸入conn /as sysdba回車(chē)后提示需要輸入口令,此時(shí)不必輸入口令直接回車(chē)即可。
第二種方式:輸入/as sysdba即可
3.3查看當(dāng)前oracle的模式:
select log_mode from v$database;(此處的分號(hào)不可省略)
如果當(dāng)前模式為NOARCHIVELOG,就說(shuō)明沒(méi)有開(kāi)啟歸檔模式
3.4關(guān)閉數(shù)據(jù)庫(kù),啟動(dòng)到mount狀態(tài):
shutdown immediate;
startup mount;
3.5修改數(shù)據(jù)庫(kù)為歸檔模式
alter database archivelog;(此處的分號(hào)不可以省略,如果不加分號(hào)會(huì)提示“2”,并不會(huì)執(zhí)行數(shù)據(jù)庫(kù)修改)
(如果是歸檔模式改為非歸檔,則執(zhí)行:alter database noarchivelog;)
3.6啟動(dòng)數(shù)據(jù)庫(kù):
alter database open;(此處的分號(hào)不可以省略,如果不加分號(hào)會(huì)提示“2”,并不會(huì)執(zhí)行數(shù)據(jù)庫(kù)修改)
3.7再次驗(yàn)證:
執(zhí)行select log_mode from v$database;
可查看到oracle已經(jīng)修改為歸檔模式了
4歸檔日志的查看及刪除:
4.1歸檔日志的查詢(xún)及日志空間增加:
4.1.1歸檔日志的查詢(xún)
SQLPlus執(zhí)行conn /as sysdba去查看,也可以只直接在PLSQL中查詢(xún):
執(zhí)行:
select * from v$flash_recovery_area_usage;
ARCHIVED LOG行的percent_space_used 表示歸檔日志占用空間的百分比:
如果 ARCHIVED LOG 超過(guò)90% oracle隨時(shí)有宕機(jī)的危險(xiǎn)。
4.1.2 增大歸檔日志空間
該操作需要在SQLPlus中進(jìn)行:
alter system set db_recovery_file_dest_size=20G;
4.2刪除歸檔日志釋放磁盤(pán)空間
刪除歸檔日志需要進(jìn)入RMAN工具才可操作,RMAN 是Oracle數(shù)據(jù)庫(kù)軟件自帶的備份恢復(fù)工具,一種是類(lèi)似于DOS,通過(guò)鍵盤(pán)操作的 命令行方式。
4.2.1.進(jìn)入RMAN工具
CMD輸入RMAN,如果進(jìn)不去,提示不是內(nèi)部或外部命令,則進(jìn)入數(shù)據(jù)庫(kù)bin目錄再執(zhí)行RMAN,如下圖
2.進(jìn)入RMAN連接數(shù)據(jù)的兩種方法:
(1)可以按照第一點(diǎn)CMD進(jìn)去先啟動(dòng)RMAN,然后再通過(guò)CONNECT命令來(lái)連接目標(biāo)數(shù)據(jù)庫(kù)
(2)先指定要連接的目標(biāo)數(shù)據(jù)庫(kù)的實(shí)例名“SET ORACLE_ID=實(shí)例名”。如果本地庫(kù)只有一個(gè)實(shí)例并已經(jīng)設(shè)置了ORACLE_SID環(huán)境變量,則不需要再指定ORACLE_SID。RMAN會(huì)自動(dòng)連接到默認(rèn)實(shí)例。如圖,再執(zhí)行RMAN TARGET/
3.需要注意,Linux/UNIX 環(huán)境下設(shè)置操作系統(tǒng)環(huán)境變量應(yīng)使用export命令,另外ORACLE_SID必須為大寫(xiě)。例如:
4.2.2刪除歸檔日志
先查看歸檔日志狀態(tài):
RMAN>list archivelog all;
2.手工刪除歸檔日志文件(刪除7天前的所有歸檔日志)
RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
說(shuō)明:
SYSDATA-7,表明當(dāng)前的系統(tǒng)時(shí)間7天前,before關(guān)鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會(huì)刪除閃回的數(shù)據(jù)。
同樣道理,也可以刪除從7天前到現(xiàn)在的全部日志,不過(guò)這個(gè)命令要考慮清楚,做完這個(gè)刪除,最好馬上進(jìn)行全備份數(shù)據(jù)庫(kù)。
3.退出rman
RMAN> exit
4.3Windows定時(shí)刪除歸檔日志
4.3.1創(chuàng)建一個(gè)刪除歸檔日志的腳本(delete_arch.txt):
connect target /
run{
crosscheck archivelog all;
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
deleteexpired archivelog all;
}
注:如果數(shù)據(jù)庫(kù)為單實(shí)例數(shù)據(jù)庫(kù)直接用“connect target /”連接數(shù)據(jù)庫(kù),如果數(shù)據(jù)為多實(shí)例數(shù)據(jù)庫(kù),需指定特定實(shí)例及用戶(hù):connect target sys/oracle@hrst即腳本格式為:
connect target sys/oracle@hrst
run{
crosscheck archivelog all;
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
deleteexpired archivelog all;
}
其中DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';//刪除七天前的歸檔日志
4.3.2創(chuàng)建批處理任務(wù)(delete_archive.bat)
rman cmdfile=C:UsersTanrDesktop定期刪除歸檔日志delete_arch.txt
當(dāng)由于電腦系統(tǒng)問(wèn)題,必須要在Oracle的bin目錄才能執(zhí)行RMAN時(shí),可以這種寫(xiě)法:
F:
cd ..
cd F:Oracleproduct11.2.0dbhome_1BIN
rman cmdfile=C:UsersTanrDesktop定期刪除歸檔日志delete_arch.txt
4.3.3創(chuàng)建一個(gè)windows任務(wù)定時(shí)調(diào)用批處理任務(wù)(delete_archive.bat)
開(kāi)始 => 所有程序 => 附件 => 系統(tǒng)工具 => 任務(wù)計(jì)劃
新建個(gè)任務(wù)計(jì)劃了,然后根據(jù)要求配置下即可。
一般情況計(jì)劃任務(wù)可設(shè)置一周執(zhí)行一次,沒(méi)有必要設(shè)置每天都執(zhí)行。
批處理文件及原文檔地址:
鏈接:https://pan.baidu.com/s/1Zn7uxu-FdqcNFll4fOST_A
提取碼:b6bx
總結(jié)
以上是生活随笔為你收集整理的Oracle归档模式及归档日志的操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 四季豆冰箱可以放多久 四季豆的功效与作用
- 下一篇: 水暖毯能开一夜吗