oracle數據庫歸檔與非歸檔


oracle運行的時候至少需要兩組聯機日志,每當一組日志寫滿后會發生日志切換,繼續向下一組聯機日志寫入。

如果是歸檔模式,則會觸發ARCn進程,把切換后的重做日志文件復制到歸檔日志文件。

如果是非歸檔模式,重做日志就會被覆蓋。

將聯機日志轉換為歸檔日志的過程稱之為歸檔。相應的日志被稱為歸檔日志。

歸檔模式的優點:

1、可以進行完全、不完全恢復:對於數據庫所作的全部改動 都記錄在日志文件中,如果發生磁盤故障等導致數據文件丟失的話,則可以利用物理備份和歸檔日志完全恢復數據庫,不會丟失任何數據。

2、可以進行聯機熱備,所謂的聯機熱備,就是在數據庫運行的狀態下對數據庫進行備份,其他用戶不受影響。

3、可以實施Data Guard:可以部署一個或者多個備用數據庫,從而最大限制的提供災難保護。

4、可以實施stream:利用stream技術,可以實現最簡單的單向復制、雙向復制和多向復制,提供更加靈活的數據冗余方案。

5、表空間可以脫機:可以備份部分數據庫和重要的表空間。

6、能夠增量備份,只需做一次完整的備份,以后之備份改變的數據,提高備份速度。

7、更多的優化選擇。

使用歸檔模式的缺點:

1、需要更多的磁盤空間來保存歸檔日志

2、需要定期維護歸檔表空間和備份歸檔日志

非歸檔模式的優點:

不生成歸檔日志,從數據安全的角度上看,缺點足以彌蓋所有優點.

使用非歸檔模式的缺點:

1、只能進行脫機備份,也叫冷備份,就是必須數據庫關閉之后才能備份,備份過程中數據庫不能使用。

2、必須備份整個數據庫,不能備份部分數據庫

3、不能增量備份,對於TB級別的數據庫(VLDB),將是個很大的缺點。

4、只能部分恢復,如果數據文件丟失,只能恢復最后一次的完全備份,而之后的所有數據庫改變將全部丟失。

查看當前數據庫是否處於歸檔模式

可使用如下兩種方式查看

1、select name, log_mode from v$database;

log_mode的值為 NOARCHIVELOG 表示數據庫處於非歸檔模式

log_mode的值為 ARCHIVELOG 表示數據庫處於歸檔模式

2、archive log list;

此方法需要 as sysdba

Database log mode 的值為 No Archive Mode

Automatic archival 的值為 Disabled 

表示當前數據庫處於非歸檔模式

Database log mode 的值為 Archive Mode

Automatic archival 的值為 Enabled

表示數據庫已開啟歸檔模式

歸檔模式和非歸檔模式下的相互切換:

1、非歸檔模式轉歸檔模式

(1)、關閉數據庫

shutdown immediate;

(2)、啟動數據庫到mount狀態(連接控制文件)

startup mount;

(3)、修改數據庫為歸檔模式

alter database archivelog;

(4)、打開數據庫

alter database open;

(5)、查詢數據庫是否已處於歸檔模式

archive log list;

(6)、設置本地歸檔日志的路徑

alter system set log_archive_dest_1="location=路徑" scope=both;

該語句含義是確定歸檔日志的路徑,實際上Oracle 10g以后可以生成多份一樣的日志,保存多個位置,以防不測

例如再添加一個日志位置可使用以下語句 

alter system set log_archive_dest_2="location=路徑" scope=both;

設置為遠程歸檔日志的路徑

alter system set log_archive_dest-1="server=路徑" scope=both;

(7)、修改歸檔日志文件命名格式

alter system set log_archive_max_processes = 5; 

alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

需重啟后生效,歸檔的日志文件格式會更改為 archive_%t_%s_%r.log 格式

(8)、查看當前被歸檔的重做日志

select name from v$archived_log;

由於沒有重啟數據庫,所以歸檔日志的文件格式仍然是默認的格式。

(9)、歸檔當前重做日志(不管自動歸檔有沒有打開都歸檔)

alter system archive log current;

強制日志切換(若自動歸檔打開,就歸檔前的重做日志,若自動歸檔沒有打開,就不歸檔當前重做日志)

alter system switch logfile;

不一定就歸檔當前的重做日志文件

主要的區別在於:

alter system switch logfile 對單實例數據庫或RAC中的當前實例執行日志切換;

alter system archive log current  會對數據庫中的所有實例執行日志切換。
(10)、重啟數據庫
shutdown immediate;
startup
2、歸檔模式的數據庫更改為非歸檔模式
(1)、關閉數據庫

shutdown immediate;

(2)、啟動數據庫到mount狀態(連接控制文件)

startup mount;

(3)、查看的數據庫的歸檔信息

archive log list;
或者
select name, log_mode from v$database;
(4)、更改歸檔模式為非歸檔模式
alter database noarchivelog;
(5)、打開數據庫
alter database open;
(6)、查看重做日志文件組信息
select * from v$log;
 
 
 
參考博客:

oracle11g設置歸檔模式和非歸檔模式

https://blog.csdn.net/weixin_36707770/article/details/53885423

oracle歸檔模式和非歸檔模式的理解

https://blog.csdn.net/qq_24726509/article/details/81008457

oracle重做日志文件組v$log

https://blog.csdn.net/xuemeilu/article/details/52576826

 end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM