說明:【oracle問題集】是博主平時操作數據庫遇到的問題以及解決方案。
執行語句:表示操作數據庫過程出錯現象:表示操作數據庫過程出現錯誤現象出錯原因:表示出現錯誤的原因解決方法:表示解決錯誤的方法相關知識:表示與這個主題相關的知識
==================================================================
執行語句:
SQL> alter tablespace ts001 offline;
SQL> alter tablespace ts001 rename datafile '/home/oracle/db001.df' to '/home/oracle/dbf001.dbf'
SQL> alter tablespace ts001 online;
出錯現象:
ORA-01113: file 7 needs media recovery
ORA-01110: data file 7: '/home/oracle/dbf001.dbf'
錯誤原因:
表空間脫機以及重命名數據文件引起
解決方法:
重新恢復數據文件。例如 recover datafile '/home/oracle/dbf001.dbf';
相關知識:
數據文件中,以下是recover命令的三中應用情形:
(1)recover [automatic] database:該命令只能在數據庫加載(mount)狀態下使用
(2)recover [automatis] tablespace "表空間號"|"表空間名":該命令只能在數據庫打開(open)狀態下使用
(3)recover [automatic] datafile "數據文件名"|"數據文件號"
automatic選項表示自動搜索和恢復歸檔日誌文件和聯機重做日誌中提交的數據,也可以在recover命令面前加上alter database(可選)
下面結合數據字典dba_data_files、dba_tablespaces、v$datafile以及在恢復時常用的v$recover_file、v$recovery_log來演示如何進行數據文件一級的完全恢復 工作。
(1)通過查詢dba_data_files獲取數據庫的數據文件及其對應表空間信息
(2)通過DBA_TABLESPACES獲取表空間及其狀態信息
(3)通過v$datafile獲取數據文件號及其狀態信息
(4)接下來查詢v$recover_file、v$recovery_log,由於數據庫正常運行,不需要恢復,所有這兩個數據字典中均無記錄信息
(5)爲了演示表空間脫機和數據文件脫機之間的區別,我們首先脫機表空間users
(6)查詢得表空間users及其對應的7號數據文件均已脫機
(7)查詢數據字典v$recover_file,發現有一條記錄:其中file#表示文件號,第二、第三列均表示文件狀態,第四列error有兩個值:offline normal和null,前者表 示數據文件在設置爲聯機之前不需要恢復,後者表示該數據文件脫機的原因不清楚。第五列是SCN號。此記錄表明7號數據文件處於脫機狀態,並且在聯機前不需要 介質恢復
(8)接下來查詢v$recovery_log,由於是將users正常脫機,所以該數據字典中還是沒有記錄信息,可以查詢其屬性信息:thread#一般只有在集羣(Real Application Cluster)時纔有意義,sequence#爲歸檔日誌文件的序列號,archive_name爲歸檔日誌文件名
(9)聯機表空間users,此後查詢發現表空間users及其7號數據文件均已聯機
(10)接下來查詢v$recover_file、v$recovery_log,同(4),由於數據庫正常運行,不需要恢復,所有這兩個數據字典中均無記錄信息
(11)接下來與對錶空間的操作相對應,將users的7號數據文件脫機,此後查詢發現7號數據文件變爲recover狀態,而表空間users仍爲聯機狀態
(12)查詢v$recover_file,發現7號數據文件處於脫機狀態,但脫機原因未知
(13)查詢v$recovery_log,發現仍無記錄信息
(15)使用recover命令對7號數據文件進行介質恢復,然後將其成功聯機