2010-10-28 102 views
3

我剛開始工作,發現數據庫當前沒有正確備份的問題。我們每6小時進行一次使用Oracle本地備份實用程序的備份,但我們也出售了一家公司的流程,他們表示,他們實質上可以通過簡單地採取文件系統副本對我們的數據庫執行「熱烈」備份的數據庫文件,當我們需要恢復時,我們只需關閉Oracle,然後複製已複製的文件,重新啓動Oracle,世界就會重新整個。我們面臨的挑戰是,我們尚未完成這項工作。我需要花更多的時間審查Oracle提供的信息,但是我的主要問題是,「Oracle有可能」在Oracle仍在運行時複製Oracle文件,並在以後使用這些文件來恢復數據庫?我知道,如果數據庫關閉並且進行了複製,它就會起作用,但這是我聽說的第一個在數據庫運行時可以創建副本(文件系統)的軟件。任何指導將不勝感激。這是我們得到的錯誤。備份Oracle 10g時出現問題

ORA-00314: log 3 of thread 1, expected sequence# 1939 doesn't match 1944 
ORA-00312: online log 3 thread 1: 'E:\ORACLE\ORADATA\ITMS\REDO03.LOG' 

回答

3

是的,這是可能的,但你必須把所有的表空間進入備份模式第一和帶他們出去之後(如ALTER TABLESPACE x BEGIN BACKUPALTER TABLESPACE x END BACKUP;你需要檢查語法,並確保它是適當的你的情況!)。過度簡化,這告訴Oracle不要寫入任何數據文件,因此它們都保持一致的狀態。

您所得到的兩個主要問題是,單個文件在您複製它們時會被更新,因此單個文件可能會損壞;更明顯的是不同的文件具有不同的內部時間戳和序列,所以Oracle不允許它們被使用。

如果您使用的是您購買的流程,那麼它應該已經在照顧所有這些。這聽起來是備份是好的,這是你還沒有工作的恢復。

我還沒有參與從熱備份恢復一段時間,所以其他人需要提供有關實際錯誤的詳細信息。我的閱讀是,你已經試圖打開恢復的數據文件,但後來的實時重做日誌。在恢復時,我認爲您必須使用自備份以來生成的重做日誌的數據庫RECOVER;或者如果您試圖恢復到該時間點,那麼您可以使用RESETLOGS指令打開數據,並丟失稍後所有重做日誌中的所有更改。但真的採取比這更明智的建議...

+0

+1,我相當有信心,這是你的問題 - 你需要運行一個RECOVER DATABASE UNTIL ...命令,你的數據庫在MOUNTED但不是OPEN。 – DCookie 2010-10-28 14:55:20

3

據我所知,有兩種方法可以從正在運行的Oracle實例「複製」數據文件。

  • 的數據文件被複制用於 表空間時,表空間爲 「BEGIN BACKUP」模式。
  • 您使用的是高端的日記記錄文件系統 如Veritas,可以 快照和跟蹤塊的文件系統 變化而 拷貝正在發生。
1

這是可能的。您必須處於ARCHIVELOG模式。

一個示例腳本將是手動:

Alter tablespace USERS begin backup; 
host cp -p /u02/oradata/PROD/users01.dbf /u03/backup/PROD/ 
host cp -p /u02/oradata/PROD/users02.dbf /u03/backup/PROD/ 
Alter tablespace USERS end backup; 

不過,我只想使用RMAN建議。 RMAN非常堅固,免費提供,並且可以進行熱備份以及冷備份。它會克隆到另一個實例,克隆爲一個時間點,恢復到某個時間點等等。任何手動備份過程都應該遷移到使用RMAN。

如果你想備份整個數據庫,而它是開放的(我更喜歡甲骨文具有DBA這樣就可以避免在腳本中的密碼,但情況因人而異):

$ ORAENV_ASK=NO 
$ ORACLE_SID=PROD 
$ . oraenv 
$ rman target=/ 

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Oct 28 14:23:29 2010 

Copyright (c) 1982, 2007, Oracle. All rights reserved. 

connected to target database: PROD (DBID=x) 

RMAN> backup as compressed backupset database plus archivelog; 

... 

Backup Complete. 
1

我已經有效地用做此在Amazon EC2上運行的非任務關鍵型數據庫。我的備份策略是定期拍攝EBS卷的快照。要恢復備份,我從快照創建一個新的EBS卷,使用它啓動實例,然後運行RECOVER DATABASE

當然,這會丟失在拍攝快照時正在進行的任何交易。