用歸檔實現無備份下的資料檔案恢復和最近學習記載

dotaddjj發表於2011-11-28

最近這半個月來自己的學習效率太低了,接下來要好好調整自己,按著自己的習慣去學習,然後最大的還是培養的linux的興趣,linux上自己雖然已經堅持了快兩個月了。但是自己覺得還是完全沒有達到自己對oracle的學習習慣,遇到了問題和精彩的知識點總是避開,那是不對的,linux也有豐富的內部世界,同樣是一個值得學習的領域,雖然學習我們不可能面面俱到,但是就自己現在對linux的掌握還遠遠不夠,剩下來的三個多月的時間裡自己真應該好好抓緊。

好了,扯點技術的吧!晚上看pub的一個網友提到了刪除了資料檔案無備份,但是有歸檔是否可以恢復.

不過這裡還有前提是:控制檔案建立時間早於資料檔案(要是你重新CREATE CONTROLFILE了,此後再ALTER DATABASE CREATE DATAFILE是失敗的(檔案在CREATE CONTROLFILE之前建立的情況,控制檔案中沒有檔案建立的有關資訊,就不懂該從哪裡開始恢復)。利用TRACE的備份重新CREATE CONTROLFILE 會丟失很多原來的資訊比如檔案的建立時間,備份的資訊,SCN等。所以在CREATE CONTROLFILE之後一定要做個全備),而且還要非system表空間而且所有的建立資料檔案的archivelog都在是可以實現恢復的,但是如果不滿足上述條件則需要採取複雜的手段,就不繼續探究了,這裡就把符合上述條件測試的結果貼出來吧

Sql>create tablespace deltb datafile 'e:oracleproduct10.2.0oradatatestdeltb01.dbf' size 50M;

Sql>create table test08

tablespace deltb

as select * from dba_users

SQL> select count(1) from test08;

COUNT(1)

----------

27

SQL> shutdown abort

ORACLE 例程已經關閉。

SQL> startup

ORACLE 例程已經啟動。

Total System Global Area 419430400 bytes

Fixed Size 1249320 bytes

Variable Size 83890136 bytes

Database Buffers 327155712 bytes

Redo Buffers 7135232 bytes

資料庫裝載完畢。

ORA-01157: 無法標識/鎖定資料檔案 7 - 請參閱 DBWR 跟蹤檔案

ORA-01110: 資料檔案 7: 'E:ORACLEPRODUCT10.2.0ORADATATESTDELTB01.DBF'

SQL> alter database create datafile 'e:oracleproduct10.2.0oradatatestdeltb

01.dbf';

資料庫已更改。

SQL> alter database open;

alter database open

*

1 行出現錯誤:

ORA-01113: 檔案 7 需要介質恢復

ORA-01110: 資料檔案 7: 'E:ORACLEPRODUCT10.2.0ORADATATESTDELTB01.DBF'

SQL> recover datafile 7;

完成介質恢復。

SQL> alter database open;

資料庫已更改

SQL> select count(1) from test08;

COUNT(1)

----------

27

可以看出資料沒有任何丟失,實現了完全恢復,從此方面我們更關注了archivelog的重要性,保留歸檔完全可以實現資料庫所有的“前滾“,可以看出生產庫不歸檔是多麼的可怕!

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1056593/,如需轉載,請註明出處,否則將追究法律責任。

相關文章