概述
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 MYDB4、在群集關閉的情況下,我們可以連接到單個節點並發出以下命令。
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 MYDB2.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 MYDB2.4 oracle 11g
配置方法同oracle 10gR2
2.5 oracle 12c
配置方法同oracle 10gR2
三、總結
1、此文彙集了oracle各版本單機和集群啟用歸檔的方法,以備工作中查詢備用。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/252340.html
微信掃一掃
支付寶掃一掃