什么是歸檔日志
歸檔日志(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ù)。
如何開(kāi)啟歸檔模式
- 查詢(xún)是否開(kāi)啟歸檔
[oracle@osc ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 12 17:36:13 2018
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1124
Current log sequence 1126
由上可見(jiàn)每币,數(shù)據(jù)庫(kù)未開(kāi)啟歸檔
- 開(kāi)啟歸檔模式
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 2421825536 bytes
Fixed Size 2255632 bytes
Variable Size 620758256 bytes
Database Buffers 1778384896 bytes
Redo Buffers 20426752 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
再觀察歸檔情況
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1124
Next log sequence to archive 1126
Current log sequence 1126
歸檔已經(jīng)開(kāi)啟
經(jīng)常會(huì)遇到的問(wèn)題
錯(cuò)誤代碼:ORA-00257
在項(xiàng)目中可能經(jīng)常會(huì)遇到ORA-00257歸檔寫(xiě)滿這種情況,先看一下官方描述:
[oracle@osc ~]$ oerr ORA 00257
00257, 00000, "archiver error. Connect internal only, until freed."
// *Cause: The archiver process received an error while trying to archive
// a redo log. If the problem is not resolved soon, the database
// will stop executing transactions. The most likely cause of this
// message is the destination device is out of space to store the
// redo log file.
// *Action: Check archiver trace file for a detailed description
// of the problem. Also verify that the
// device specified in the initialization parameter
// ARCHIVE_LOG_DEST is set up properly for archiving.
也就是說(shuō)當(dāng)空間問(wèn)題導(dǎo)致歸檔日志無(wú)法繼續(xù)寫(xiě)入的時(shí)候會(huì)報(bào)錯(cuò)誤翔脱,當(dāng)前也只能允許內(nèi)部鏈接。
這種情況下也只能最快速的清理歸檔日志谆甜。
清理歸檔日志
[oracle@osc ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Nov 12 17:48:41 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1511487649)
RMAN> crosscheck archivelog all;
RMAN> delete archivelog until time 'sysdate-1';
RMAN> delete expired archivelog all;
分別看一下這三句話的意思
crosscheck archivelog all
驗(yàn)證的是DB的歸檔日志即log_archive_dest參數(shù)指定位置的文件启上,當(dāng)手工刪除了歸檔日志以后,Rman備份會(huì)檢測(cè)到日志缺失店印,從而無(wú)法進(jìn)一步繼續(xù)執(zhí)行冈在。
所以此時(shí)需要手工執(zhí)行crosscheck過(guò)程,之后Rman備份可以恢復(fù)正常按摘。
也就是說(shuō)當(dāng)無(wú)法進(jìn)入rman的時(shí)候包券,可以直接刪除歸檔日志文件,然后再執(zhí)行這條語(yǔ)句炫贤!
delete archivelog until time 'sysdate-1'
這句話是刪除當(dāng)前時(shí)間-1天的歸檔日志
-3就表示保留3天歸檔日志
delete expired archivelog all
刪除過(guò)期或無(wú)效的歸檔日志
強(qiáng)烈建議:在刪除歸檔日志后做一次物理備份
為什么會(huì)產(chǎn)生上面的問(wèn)題
當(dāng)歸檔日志每天都有大量的生成的時(shí)候溅固,說(shuō)明數(shù)據(jù)庫(kù)存在了大量DML語(yǔ)句,而歸檔日志就是記錄這些操作,所以我們要考慮能不能避免這些操作兰珍,如:
- 是不是數(shù)據(jù)庫(kù)設(shè)計(jì)不合理侍郭,需要不要進(jìn)行頻繁操作
- 大量的操作有可能是日志類(lèi)(日志、操作記錄等)的數(shù)據(jù)掠河,那么是不是考慮把日志表放入非關(guān)系數(shù)據(jù)庫(kù)中
DML語(yǔ)句:SQL語(yǔ)言中亮元,負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)對(duì)象運(yùn)行數(shù)據(jù)訪問(wèn)工作的指令集,以INSERT唠摹、UPDATE爆捞、DELETE三種指令為核心
非關(guān)系數(shù)據(jù)庫(kù)如文檔型文數(shù)據(jù)MongoDB、鍵值數(shù)據(jù)庫(kù)Redis等
<b style="color:red">在了解了歸檔日志的副作用后勾拉,是否覺(jué)得不開(kāi)啟歸檔模式煮甥,更省心一些呢?</b>
下面我們看一看歸檔模式的優(yōu)缺點(diǎn)(摘自網(wǎng)絡(luò))
歸檔模式和非歸檔模式的優(yōu)缺點(diǎn)
歸檔模式的優(yōu)點(diǎn)
- 可以進(jìn)行完全藕赞、不完全恢復(fù):由于對(duì)數(shù)據(jù)庫(kù)所做的全部改動(dòng)都記錄在日志文件中成肘,如果發(fā)生硬盤(pán)故 障等導(dǎo)致數(shù)據(jù)文件丟失的話,則可以利用物理備份和歸檔日志完全恢復(fù)數(shù)據(jù)庫(kù)斧蜕,不會(huì)丟失任何數(shù)據(jù)双霍。
- 可以進(jìn)行聯(lián)機(jī)熱備:所謂聯(lián)機(jī)熱備,就是在數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)下,對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份店煞。備份時(shí)用戶對(duì) 數(shù)據(jù)庫(kù)的使用不受任何影響蟹演。
- 可以實(shí)施 Data Guard:可以部署 1 個(gè)或多個(gè)備用數(shù)據(jù)庫(kù),從而最大限度地提供災(zāi)難保護(hù)手段顷蟀。
- 可以實(shí)施 Stream:利用 Stream 技術(shù)酒请,可以實(shí)現(xiàn)最簡(jiǎn)單的單向復(fù)制到復(fù)雜的雙向復(fù)制、多向復(fù)制鸣个, 提供更加靈活的數(shù)據(jù)冗余方案羞反。
- 表空間可以脫機(jī):可以備份部分?jǐn)?shù)據(jù)庫(kù),比如重要的表空間囤萤。
- 能夠增量備份:只需做一次完全備份昼窗,以后只備份發(fā)生改變的數(shù)據(jù),可以提高備份速度涛舍。
- 更多的優(yōu)化選項(xiàng):隨著 Oracle 版本升級(jí)澄惊,在聯(lián)機(jī)熱備方面不斷有新的優(yōu)化策略出現(xiàn)。
歸檔模式的缺點(diǎn)
- 需要更多的磁盤(pán)空間保存歸檔日志富雅;
- DBA 會(huì)有更多的管理工作掸驱,包括維護(hù)歸檔空間、備份歸檔日志没佑。
非歸檔模式的缺點(diǎn)
- 只能進(jìn)行脫機(jī)備份毕贼,也就是所謂的“ 冷備份”,和聯(lián)機(jī)備份的“ 熱備份” 相對(duì)應(yīng)蛤奢,數(shù)據(jù)庫(kù)必須完全 關(guān)閉后備份鬼癣,在備份過(guò)程中數(shù)據(jù)庫(kù)不可用;
- 必須備份整個(gè)數(shù)據(jù)庫(kù)啤贩,不能只備份部分?jǐn)?shù)據(jù)庫(kù)待秃;
- 不能增量備份,對(duì)于 TB 級(jí)數(shù)據(jù)庫(kù)(VLDB) 瓜晤,這是一個(gè)非常大的缺點(diǎn)锥余;
- 只能部分恢復(fù),如果數(shù)據(jù)文件丟失需要恢復(fù)痢掠,DBA 只能恢復(fù)最后一次的完全備份,而之后的所有 數(shù)據(jù)庫(kù)改變?nèi)縼G失嘲恍。
非歸檔模式的優(yōu)點(diǎn)
- DBA 的管理工作減少足画,因?yàn)榉菤w檔模式不產(chǎn)生歸檔日志,因此 DBA 不用考慮對(duì)歸檔的管理佃牛;
- 性能會(huì)有提升淹辞。
非歸檔模式不生成歸檔日志,從數(shù)據(jù)安全角度來(lái)說(shuō)俘侠,這種模式缺點(diǎn)是主要的象缀,而優(yōu)點(diǎn)可以忽略不計(jì)蔬将。