如何從歸檔日志中恢復某張表的數據?
oracle中可以利用 RMAN 還原歸檔日志到某個時間點:
1、理解還原與恢復
恢復(recover): 將備份之后的歸檔日志apply到數據庫,也就根據歸檔日志的事務將數據庫刷新到特定或最新狀態(通常在還原之后操作)。對于歸
檔日志中那些已提交的事務進行前滾,未提交的事務進行回滾。
還原歸檔日志: 還原歸檔日志是位于還原數據庫與恢復數據庫之間的這么一個過程。它會將那些在備份歸檔日志時使用delete [all] input方式
刪除的歸檔日志還原到缺省的歸檔位置。在還原數據庫之后,如果要做recover,也就是作介質恢復那就需要用到歸檔日志。那還原之后進行
recover需要的歸檔日志在哪里呢?歸檔日志在指定的歸檔路徑那里,那到底有沒有呢?如果有,還原時出現提示,歸檔日志已經在指定位置。
如果沒有,但是備份的歸檔備份集那里有,也行啊。備份集里包含備份片,也就是打包了歸檔日志。那既然打包就要解包,解包到缺省路徑
或指定路徑。這就是還原歸檔日志。
--演示環境
--為了較好的模擬還原歸檔日志,我們僅僅使用了一個特定的數據文件進行copy方式備份,然后備份歸檔日志(備份時刪除歸檔日志)
--接下來破壞數據文件,還原數據文件,還原歸檔日志文件,恢復日志文件。
[oracle@linux3 ~]$ cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m
[oracle@linux3 ~]$ SQLplus -V
SQL*Plus: Release 11.2.0.1.0 Production
a、備份數據文件及歸檔日志
RMAN> list backup of archivelog all; --->列出當前數據庫已經備份的歸檔日志
specification does not match any backup in the repository
RMAN> list backupset; --->列出當前數據庫已存在的備份集
specification does not match any backup in the repository
SQL> select username,default_tablespace from dba_users where username='SCOTT'; -->查看用戶scott所在的表空間及數據文件