
我是 SQL Server DBA,最近負責 Oracle 環境。 (11克)
現在我在 SQL Server 上對交易日誌進行定時備份,然後將它們遷移到不同的伺服器。我也想用 Oracle 來做這件事。
Oracle 的重做日誌在切換並允許伺服器歸檔它們之前似乎是基於大小的。
有人可以提供一些關於如何實現這一目標的提示/最佳實踐嗎?
我也非常感謝有關調整重做日誌大小以及如何處理一天中使用模式變化的任何建議。
我忘了說這是在 Redhat 5 Enterprise 伺服器上
答案1
第一個建議是永遠不要手動搞亂它們,除非你真的知道自己在做什麼。
您要做的就是閱讀rman
Oracle 執行備份(包括重做日誌備份)的工具。我強烈建議您對此進行徹底研究,以確保您在採取任何操作之前完全了解 Oracle 備份的各個方面是如何運作的。
現在,通常 Oracle 重做/歸檔日誌應保留在寫入的位置,直到執行備份之後為止。備份通常會設定為包含資料庫備份所需的存檔日誌。
至於重做日誌的大小,它將直接基於資料庫更改交易的數量。更改越多,日誌量就越大。這對於您的應用程式和使用情況來說是高度個人化的,因此我建議您開始記錄其統計資料(交易量、交易日誌大小、資料庫大小等,全部帶有時間戳記)。一旦您獲得了幾週的數據,您就可以開始將活動與日誌關聯起來,並將其提煉為一些有效的估計值。
編輯:我想我部分誤解了原來的問題。我認為您正在尋求一種方法,在運行備份時基本上將重做日誌檢查點到現在,以便您在發出備份開始之前與備份完全一致。
而且,rman 實際上會為你處理所有這些骯髒的工作。來自一些 rman 文件:
當備份包含最新日誌的歸檔重做日誌時(即,在不帶 UNTIL 或 SEQUENCE 選項的情況下運行 BACKUP ... ARCHIVELOG 命令),如果資料庫打開,則在開始備份之前,RMAN 將關閉當前聯機重做日誌組的日誌,以及尚未歸檔的所有聯機重做日誌,直到並包括發出命令時當前的重做日誌組。這可確保備份包含在指令啟動之前產生的所有重做。
另一點提供了更多細節:
您可以使用 BACKUP ... PLUS ARCHIVELOG 子句將歸檔重做日誌新增至其他檔案的備份中。新增 BACKUP ... PLUS ARCHIVELOG 會導致 RMAN 執行以下操作:
- 執行 ALTER SYSTEM ARCHIVE LOG CURRENT 命令。
- 運行 BACKUP ARCHIVELOG ALL。請注意,如果啟用備份最佳化,則 RMAN 會跳過已備份到指定裝置的記錄。
- 備份 BACKUP 指令中指定的其餘檔案。
- 執行 ALTER SYSTEM ARCHIVE LOG CURRENT 命令。
- 備份備份期間產生的所有剩餘存檔日誌。
這保證了在命令期間進行的資料檔案備份可恢復到一致的狀態。
rman 文件應該能夠為您提供更多詳細資訊。我會給出我從(線上 Oracle rman 文件)中提取的 URL,但該 URL 自從我為它添加書籤以來已經發生了變化,所以我不相信它會保留下來。不過,Google搜尋 rman 文件應該能夠找到它。
編輯:我還想補充一件事。 。 。你提到了一些關於尺寸的事情。 Oracle 11g 確實支援壓縮重做日誌。我自己沒有使用過它們,但我知道它支援它們。此外,Oracle 10g 和 11g 支援壓縮備份。如果您還沒有進行壓縮備份,你應該。大小的減少是巨大的,最重要的是,當我們啟用壓縮備份時,我們的備份運行效能也得到了顯著的提升。
答案2
Oracle 的重做日誌在切換並允許伺服器歸檔它們之前似乎是基於大小的。
查看 Oracle 9i 以上版本的參數 archive_lag_target。
答案3
這是一個權衡。我聽說大日誌檔案效率更高,但我們不使用它們,因為 A) 檔案遺失越大,資料遺失就越大,B) 我們的頻寬很糟糕
這導致我們將檔案假脫機運行幾個小時,然後在各個備用電腦上傳輸和運行更新。我們實際上仍在使用Oracle8i,並且因為該資料庫是很久以前由非DBA 的人設計的,所以我仍然必須手動建立新的資料檔案和控製檔案。 /嘆
答案4
我問這個問題已經有一段時間了,但我最近找到了答案。從 Oracle 10G R2 開始,有一個參數可以確保日誌切換的發生時間不超過指定的時間。
如果你去改變系統設定 archive_lag_target=900;
這將確保每 15 分鐘進行一次切換,無論使用的日誌量為何。