oracle归档日志的概念,浅谈Oracle归档日志
什么是歸檔日志
歸檔日志(Archive Log)是非活動的重做日志備份.通過使用歸檔日志,可以保留所有重做歷史記錄,當數據庫處于ARCHIVELOG模式并進行日志切換式,后臺進程ARCH會將重做日志的內容保存到歸檔日志中.當數據庫出現介質失敗時,使用數據文件備份,歸檔日志和重做日志可以完全恢復數據庫。
如何開啟歸檔模式
查詢是否開啟歸檔
[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
由上可見,數據庫未開啟歸檔
開啟歸檔模式
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
歸檔已經開啟
經常會遇到的問題
錯誤代碼:ORA-00257
在項目中可能經常會遇到ORA-00257歸檔寫滿這種情況,先看一下官方描述:
[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.
也就是說當空間問題導致歸檔日志無法繼續寫入的時候會報錯誤,當前也只能允許內部鏈接。
這種情況下也只能最快速的清理歸檔日志。
清理歸檔日志
[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
驗證的是DB的歸檔日志即log_archive_dest參數指定位置的文件,當手工刪除了歸檔日志以后,Rman備份會檢測到日志缺失,從而無法進一步繼續執行。
所以此時需要手工執行crosscheck過程,之后Rman備份可以恢復正常。
也就是說當無法進入rman的時候,可以直接刪除歸檔日志文件,然后再執行這條語句!
delete archivelog until time 'sysdate-1'
這句話是刪除當前時間-1天的歸檔日志
-3就表示保留3天歸檔日志
delete expired archivelog all
刪除過期或無效的歸檔日志
強烈建議:在刪除歸檔日志后做一次物理備份
為什么會產生上面的問題
當歸檔日志每天都有大量的生成的時候,說明數據庫存在了大量DML語句,而歸檔日志就是記錄這些操作,所以我們要考慮能不能避免這些操作,如:
是不是數據庫設計不合理,需要不要進行頻繁操作
大量的操作有可能是日志類(日志、操作記錄等)的數據,那么是不是考慮把日志表放入非關系數據庫中
DML語句:SQL語言中,負責對數據庫對象運行數據訪問工作的指令集,以INSERT、UPDATE、DELETE三種指令為核心
非關系數據庫如文檔型文數據MongoDB、鍵值數據庫Redis等
在了解了歸檔日志的副作用后,是否覺得不開啟歸檔模式,更省心一些呢?
下面我們看一看歸檔模式的優缺點(摘自網絡)
歸檔模式和非歸檔模式的優缺點
歸檔模式的優點
可以進行完全、不完全恢復:由于對數據庫所做的全部改動都記錄在日志文件中,如果發生硬盤故 障等導致數據文件丟失的話,則可以利用物理備份和歸檔日志完全恢復數據庫,不會丟失任何數據。
可以進行聯機熱備:所謂聯機熱備,就是在數據庫運行狀態下,對數據庫進行備份。備份時用戶對 數據庫的使用不受任何影響。
可以實施 Data Guard:可以部署 1 個或多個備用數據庫,從而最大限度地提供災難保護手段。
可以實施 Stream:利用 Stream 技術,可以實現最簡單的單向復制到復雜的雙向復制、多向復制, 提供更加靈活的數據冗余方案。
表空間可以脫機:可以備份部分數據庫,比如重要的表空間。
能夠增量備份:只需做一次完全備份,以后只備份發生改變的數據,可以提高備份速度。
更多的優化選項:隨著 Oracle 版本升級,在聯機熱備方面不斷有新的優化策略出現。
歸檔模式的缺點
需要更多的磁盤空間保存歸檔日志;
DBA 會有更多的管理工作,包括維護歸檔空間、備份歸檔日志。
非歸檔模式的缺點
只能進行脫機備份,也就是所謂的“ 冷備份”,和聯機備份的“ 熱備份” 相對應,數據庫必須完全 關閉后備份,在備份過程中數據庫不可用;
必須備份整個數據庫,不能只備份部分數據庫;
不能增量備份,對于 TB 級數據庫(VLDB) ,這是一個非常大的缺點;
只能部分恢復,如果數據文件丟失需要恢復,DBA 只能恢復最后一次的完全備份,而之后的所有 數據庫改變全部丟失。
非歸檔模式的優點
DBA 的管理工作減少,因為非歸檔模式不產生歸檔日志,因此 DBA 不用考慮對歸檔的管理;
性能會有提升。
非歸檔模式不生成歸檔日志,從數據安全角度來說,這種模式缺點是主要的,而優點可以忽略不計。
在了解了歸檔模式和非歸檔模式的優缺點后,選擇哪種模式各位心里也有點譜,在工作中都應該考慮實際情況去做出合適的選擇。最后也請大家一起總結、歸納
總結
以上是生活随笔為你收集整理的oracle归档日志的概念,浅谈Oracle归档日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这么多年都被Windows骗了 硬盘容量
- 下一篇: oracle 数字处理函数,Oracle