達夢8無備份的情況下刪除資料檔案後的啟庫方法
阿新 • • 發佈:2021-03-11
當資料檔案被刪除且沒有備份的情況下,資料無法進行恢復,資料庫也是無法正常啟動。處理方式是將控制檔案轉成文字檔案,在控制檔案中把對應表空間資訊刪除,再把文字檔案轉成控制檔案,再啟動資料庫。
具體實驗步驟如下:
1、查詢當前表空間及資料檔案
關閉資料庫,並模擬刪除TEST.DBF,進入/dm/5237/TESTDB,rm -fr TEST.DBF,此時資料庫已經無法正常open,啟動後會進入mount狀態
查詢v$datafile檢視,發現數據庫沒有識別到資料檔案
2、將資料庫控制檔案轉化為文字檔案
[[email protected] bin]$ ./dmctlcvt TYPE=1 SRC= /dm/5237/TESTDB/dm.ctl DEST=/dm/5237/TESTDB/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
刪除文字檔案中關於TESTDB表空間的全部內容,如下圖所示:
3、將修改後的文字檔案轉換成控制檔案
[[email protected] bin]$ ./dmctlcvt TYPE=2 SRC=/dm/5237/TESTDB/dmctl.txt DEST=/dm/5237/TESTDB/dm.ctl
DMCTLCVT V8
convert txt to ctl success!
檢查控制檔案內容
[[email protected] TESTDB]$ strings dm.ctl
TESTDB
SYSTEM
/dm/5237/TESTDB/SYSTEM.DBF
ROLL
/dm/5237/TESTDB/ROLL.DBF
RLOG
/dm/5237/TESTDB/TESTDB01.log
/dm/5237/TESTDB/TESTDB02.log
MAIN
/dm/5237/TESTDB/MAIN.DBF
HMAIN
/dm/5237/TESTDB/HMAIN
4、啟動資料庫
[[email protected] TESTDB]$ /etc/rc.d/init.d/DmServiceTESTDB start
Starting DmServiceTESTDB: [ OK ]
驗證資料庫狀態
[dmdba@rac02 bin]$ ./disql sysdba/SYSDBA@localhost:5237
伺服器[localhost:5237]:處於普通開啟狀態
登入使用時間 : 3.186(ms)
disql V8
SQL> select instance_name,status$ from v$instance;
行號 INSTANCE_NAME STATUS$
---------- ------------- -------
1 TESTDB OPEN
已用時間: 2.666(毫秒). 執行號:400.
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_data_files;
行號 FILE_NAME TABLESPACE_NAME BYTES/1024/1024
---------- -------------------------- --------------- --------------------
1 /dm/5237/TESTDB/SYSTEM.DBF SYSTEM 154
2 /dm/5237/TESTDB/MAIN.DBF MAIN 128
3 /dm/5237/TESTDB/TEMP.DBF TEMP 74
4 /dm/5237/TESTDB/ROLL.DBF ROLL 154
已用時間: 8.762(毫秒). 執行號:401.
SQL> select path,CREATE_TIME,STATUS$ from v$datafile;
行號 PATH CREATE_TIME STATUS$
---------- -------------------------- ------------------- -----------
1 /dm/5237/TESTDB/SYSTEM.DBF 2021-03-03 17:58:40 1
2 /dm/5237/TESTDB/ROLL.DBF 2021-03-03 17:58:40 1
3 /dm/5237/TESTDB/TEMP.DBF 2021-03-03 18:31:40 1
4 /dm/5237/TESTDB/MAIN.DBF 2021-03-03 17:58:40 1
已用時間: 0.598(毫秒). 執行號:402.