歸檔模式和非歸檔模式
在DBA部署數據庫之初,必須要做出的最重要決定之一就是選擇歸檔模式(ARCHIVELOG)或者非 歸檔模式(NOARCHIVELOG )下運行數據庫。我們知道,Oracle 數據庫需要至少兩組聯機日志,每當一組 聯機日志寫滿后會發生日志切換,繼續向下一組聯機日志寫入。如果是歸檔模式,日志切換會觸發歸檔進程 (ARCn)進行歸檔,生成歸檔日志。Oracle 保證歸檔完成前,聯機日志不會被覆蓋,如果是非歸檔模式, 則不會觸發歸檔動作。
歸檔模式的優缺點
歸檔日志文件中保留了數據庫的改動信息。
在這種模式下可以獲得如下好處:
可以進行完全、不完全恢復:由於對數據庫所做的全部改動都記錄在日志文件中,如果發生硬盤故 障等導致數據文件丟失的話,則可以利用物理備份和歸檔日志完全恢復數據庫,不會丟失任何數據。
可以進行聯機熱備:所謂聯機熱備,就是在數據庫運行狀態下,對數據庫進行備份。備份時用戶對 數據庫的使用不受任何影響。
可以實施 Data Guard:可以部署 1 個或多個備用數據庫,從而最大限度地提供災難保護手段。
可以實施 Stream:利用 Stream 技術,可以實現最簡單的單向復制到復雜的雙向復制、多向復制, 提供更加靈活的數據冗余方案。
表空間可以脫機:可以備份部分數據庫,比如重要的表空間。
能夠增量備份:只需做一次完全備份,以后只備份發生改變的數據,可以提高備份速度。
更多的優化選項:隨着 Oracle 版本升級,在聯機熱備方面不斷有新的優化策略出現。
使用歸檔模式的缺點在於:
需要更多的磁盤空間保存歸檔日志;
DBA 會有更多的管理工作,包括維護歸檔空間、備份歸檔日志。
非歸檔模式的優缺點
非歸檔模式不生成歸檔日志,從數據安全角度來說,這種模式缺點是主要的,而優點可以忽略不計。
非歸檔模式的缺點包括:
只能進行脫機備份,也就是所謂的“ 冷備份”,和聯機備份的“ 熱備份” 相對應,數據庫必須完全 關閉后備份,在備份過程中數據庫不可用;
必須備份整個數據庫,不能只備份部分數據庫;
不能增量備份,對於 TB 級數據庫(VLDB) ,這是一個非常大的缺點;
只能部分恢復,如果數據文件丟失需要恢復,DBA 只能恢復最后一次的完全備份,而之后的所有 數據庫改變全部丟失。
非歸檔模式的優點包括:
DBA 的管理工作減少,因為非歸檔模式不產生歸檔日志,因此 DBA 不用考慮對歸檔的管理;
性能會有提升。
非歸檔模式轉換成歸檔模式
數據庫創建過程中需要指定歸檔和非歸檔模式,如果選擇的是非歸檔模式,可以在數據庫創建完成后 手工改變成歸檔模式,具體操作步驟如下。
(1 )關閉數據庫:
shutdown immediate;
(2 )啟動數據庫到 mount 狀態:
startup mount;
(3 )修改數據庫歸檔模式:
alter database archivelog;
(4 )啟動數據庫:
alter database open;
(5 )定義歸檔位置,也就是歸檔日志保存路徑:
alter syste set log_archive_dest_1="location=d:\oradata\example\archive" scope=both;
(6 )確認配置生效:
archive log list;
alter system set log_archive_dest_1="location=路徑" scope=both;#設置本地歸檔日志的路徑 alter system set log_archive_dest-1="server=路徑" scope=both;#設置為遠程歸檔日志的路徑 archive log list;#使歸檔路徑生效
那如果歸檔日志空間滿了,如何滿足日常需要; 首先我們會考慮將部分歸檔日志移走或者刪除,之后有可能會發現空間未釋放。linux中當一個文件被進程使用或者占用的時候,移走或者刪除文件,空間將不會釋放,解決辦法:關閉進程即可。 ps -fe|grep filename; kill 最前面數字1 最前面數字2; oracle歸檔日志的默認路徑是$oracle_base/fast_recovery_area;默認大小為4g; archive log list;#查看歸檔日志相關信息 方法1:增加歸檔空間 默認情況下,歸檔日志保存空間是在閃回區, show parameter db_recovery;#查看閃回區空間大小和占用大小 alter system set db_recovery_file_dest_size=數值;#增大默認閃回區空間大小 方法2:修改歸檔日志路徑為不受限制的路徑 alter system set "location=路徑";#必須確保路徑存在 shutdown immediate; alter database open;#重啟數據庫 archive log list;#檢查歸檔日志路徑是否設置成功
----歸檔模式切換歸檔模式; 首先要關閉歸檔進程,以sys身份登陸 alter system set log_archive_start=false scope=spfile; #關閉歸檔進程 shutdown immediate;#關閉數據庫 startup mount;#打開mount alter database flashback off;#關閉閃回模式,如果未關閉,或出現ORA-38774的錯誤ora-38774:cannot disable media recovery-flashback database is enabled. alter database noarchivelog;#把數據庫設置為非歸檔模式 alter database open;#打開數據庫 --一些驗證切換成功的方法,select * from v$log;