說明:【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,發現仍無記錄資訊
(14)試圖聯機7號資料檔案,系統報錯:檔案7需要介質恢複
(15)使用recover命令對7號資料檔案進行介質恢複,然後將其成功聯機