概述
Oracle數據庫有聯機重做日志,這個日志是記錄對數據庫所做的修改,比如插入、刪除、更新等,對這些操作都會記錄在聯機重做日志里。一般數據庫至少要有2個聯機重做日志組。如果數據庫處于非歸檔模式,聯機日志在切換時就會丟棄,而在歸檔模式下,當發生日志切換的時候,被切換的日志會進行歸檔。
歸檔模式和非歸檔模式的優缺點歸檔模式的優點
- 可以進行完全、不完全恢復:由于對數據庫所做的全部改動都記錄在日志文件中,如果發生硬盤故 障等導致數據文件丟失的話,則可以利用物理備份和歸檔日志完全恢復數據庫,不會丟失任何數據。可以進行聯機熱備:所謂聯機熱備,就是在數據庫運行狀態下,對數據庫進行備份。備份時用戶對 數據庫的使用不受任何影響。
- 可以實施 Data Guard:可以部署 1 個或多個備用數據庫,從而最大限度地提供災難保護手段。
- 可以實施 Stream:利用 Stream 技術,可以實現最簡單的單向復制到復雜的雙向復制、多向復制, 提供更加靈活的數據冗余方案。
- 表空間可以脫機:可以備份部分數據庫,比如重要的表空間。
- 能夠增量備份:只需做一次完全備份,以后只備份發生改變的數據,可以提高備份速度
- 更多的優化選項:隨著 Oracle 版本升級,在聯機熱備方面不斷有新的優化策略出現。
歸檔模式的缺點
- 需要更多的磁盤空間保存歸檔日志;
- DBA 會有更多的管理工作,包括維護歸檔空間、備份歸檔日志。
非歸檔模式的缺點
- 只能進行脫機備份,也就是所謂的“ 冷備份”,和聯機備份的“ 熱備份” 相對應,數據庫必須完全 關閉后備份,在備份過程中數據庫不可用。
- 必須備份整個數據庫,不能只備份部分數據庫。
- 不能增量備份,對于 TB 級數據庫(VLDB) ,這是一個非常大的缺點。
- 只能部分恢復,如果數據文件丟失需要恢復,DBA 只能恢復最后一次的完全備份,而之后的所有 數據庫改變全部丟失。
非歸檔模式的優點
- DBA 的管理工作減少,因為非歸檔模式不產生歸檔日志,因此 DBA 不用考慮對歸檔的管理;性能會有提升。
非歸檔模式不生成歸檔日志,從數據安全角度來說,這種模式缺點是主要的,而優點可以忽略不計。
一、單實例啟用歸檔
1.1 oracle 9i
對于oracle 9i啟用日志歸檔的方法如下:
- ALTER SYSTEM SET log_archive_start=TRUE SCOPE=spfile;
- ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/MYSID/archive/' SCOPE=spfile;
- ALTER SYSTEM SET log_archive_format='arch_%t_%s.arc' SCOPE=spfile;
- SHUTDOWN IMMEDIATE;
- STARTUP MOUNT;
- ARCHIVE LOG START;
- ALTER DATABASE ARCHIVELOG;
- ALTER DATABASE OPEN;
1.2 oracle 10g及其以上版本
在oracle 10g中log_archive_start參數和archive log start命令被廢棄。其方法如下:
- ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/MYSID/archive/' SCOPE=spfile;
- ALTER SYSTEM SET log_archive_format='arch_%t_%s_%r.arc' SCOPE=spfile;
- SHUTDOWN IMMEDIATE;
- STARTUP MOUNT;
- ALTER DATABASE ARCHIVELOG;
- ALTER DATABASE OPEN;
二、RAC歸檔
由于ALTER DATABASE ARCHIVELOG僅當數據庫以獨占模式掛載時,才能執行該命令。這意味著必須先停止整個群集數據庫,然后才能執行該操作。
2.1 oracle 9i
1、設置相關的存檔參數
- ALTER SYSTEM SET log_archive_start = TRUE范圍= spfile;
- ALTER SYSTEM SET log_archive_dest_1 ='location = / u01 / oradata / MYDB / archive /'SCOPE = spfile;
- ALTER SYSTEM SET log_archive_format ='arch_%t_%s.arc'SCOPE = spfile;
2、由于我們需要以獨占模式掛載數據庫,因此我們必須還更改以下參數
- ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;
3、停止集群
- $ srvctl stop database -d MYDB
4、在群集關閉的情況下,我們可以連接到單個節點并發出以下命令。
- STARTUP MOUNT;
- ARCHIVE LOG START;
- ALTER DATABASE ARCHIVELOG;
- ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile;
- SHUTDOWN IMMEDIATE;
請注意,該CLUSTER_DATABASE參數已被重置為其原始值。由于數據文件和spfile在所有實例之間共享,因此該操作僅需要從單個節點執行。
5、再次啟動集群數據庫
- $ srvctl start database -d MYDB
當前設置將所有存檔日志放置在同一目錄中。這是可以接受的,因為線程(%t)是存檔格式的一部分,可以防止實例之間的任何名稱沖突。如果需要位于特定于節點的位置,LOG_ARCHIVE_DEST_1則可以為每個實例使用相關的SID前綴。
2.2 oracle 10gR1
如果LOG_ARCHIVE_DEST_n未設置參數,則已歸檔的重做日志將放置在FRA中。如果要手動指定其位置和文件名格式,可以按以下步驟進行操作。
1、設置歸檔相關參數
- ALTER SYSTEM SET log_archive_dest_1 ='location = / u01 / oradata / MYDB / archive /'SCOPE = spfile;
- ALTER SYSTEM SET log_archive_format ='arch_%t_%s_%r.arc'SCOPE = spfile;
2、由于我們需要以獨占模式掛載數據庫,因此我們還必須更改以下參數。
- ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;
3、在群集關閉的情況下,我們可以連接到單個節點并發出以下命令。
- STARTUP MOUNT;
- ALTER DATABASE ARCHIVELOG;
- ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile;
- SHUTDOWN IMMEDIATE;
請注意,該CLUSTER_DATABASE參數已被重置為其原始值。由于數據文件和spfile在所有實例之間共享,因此該操作僅需要從單個節點執行。
4、啟動集群數據庫
- $ srvctl start database -d MYDB
2.3 oracle 10gR2
從10gR2開始,您不再需要CLUSTER_DATABASE在此過程中重置參數。
如果LOG_ARCHIVE_DEST_n未設置參數,則已歸檔的重做日志將放置在FRA中。如果要手動指定其位置和文件名格式,可以按以下步驟進行操作。
1、設置歸檔相關參數
- ALTER SYSTEM SET log_archive_dest_1 ='location = / u01 / oradata / MYDB / archive /'SCOPE = spfile;
- ALTER SYSTEM SET log_archive_format ='arch_%t_%s_%r.arc'SCOPE = spfile;
2、在命令行中,我們可以使用以下命令停止整個集群數據庫并以裝入模式啟動它。
- $ srvctl stop database -d MYDB
- $ srvctl start database -d MYDB -o mount
一旦數據庫處于mount模式可以用下面的命令啟動歸檔
- sqlplus / as sysdba
- ALTER DATABASE ARCHIVELOG;
- EXIT;
由于數據文件和spfile在所有實例之間共享,因此該操作僅需要從單個節點執行。
3、停止并重新啟動集群數據庫
- $ srvctl stop database -d MYDB
- $ srvctl start database -d MYDB
2.4 oracle 11g
配置方法同oracle 10gR2
2.5 oracle 12c
配置方法同oracle 10gR2
三、總結
1、此文匯集了oracle各版本單機和集群啟用歸檔的方法,以備工作中查詢備用。
原文鏈接:https://www.toutiao.com/i6946029108598129182/