您好,登錄后才能下訂單哦!
在DM7中,有兩個與數據文件恢復有關的特性。
數據文件失效檢查
在DM.ini中參數FIL_CHECK_INTERVAL的值指定dm7系統檢查數據文件還存在的時間間隔,設為0表示不檢查。
也可通過系統過程SP_FILE_SYS_CHECK()進行手工檢查。
數據文件失效恢復
Linux系統中被刪除的文件,在沒有重啟的情況下,文件句柄還沒有關閉,可以在/proc/ /fd 中找到其對應的文件副本。
利用此辦法,結合os命令,在DM7中可以通過調用系統過程SP_TABLESPACE_PREPARE_RECOVER
和SP_TABLESPACE_RECOVER來恢復被誤刪除的數據文件。
1、準備測試環境
SQL> create tablespace cc datafile'/dmdata/data/DM01/cc01.dbf' size 100,'/dmdata/data/DM01/cc02.dbf' size 100;
操作已執行
SQL> select tablespace_name, file_name, status from dba_data_files order by 1;
行號 TABLESPACE_NAME FILE_NAME STATUS
---------- --------------- ------------------------------ ---------
1 BOOKSHOP /dmdata/data/DM01/BOOKSHOP.DBF AVAILABLE
2 CC /dmdata/data/DM01/cc02.dbf AVAILABLE
3 CC /dmdata/data/DM01/cc01.dbf AVAILABLE
4 DMHR /dmdata/data/DM01/DMHR.DBF AVAILABLE
5 MAIN /dmdata/data/DM01/MAIN.DBF AVAILABLE
6 ROLL /dmdata/data/DM01/ROLL.DBF AVAILABLE
7 SYSTEM /dmdata/data/DM01/SYSTEM.DBF AVAILABLE
8 TEMP /dmdata/data/DM01/TEMP.DBF AVAILABLE
8 rows got
SQL> create tablespace cc datafile'/dmdata/data/DM01/cc01.dbf' size 100,'/dmdata/data/DM01/cc02.dbf' size 100;
操作已執行
已用時間: 24.231(毫秒). 執行號:6.
SQL> create user test identified by dameng123 default tablespace cc;
操作已執行
已用時間: 10.973(毫秒). 執行號:7.
SQL> grant dba,resource to test;
操作已執行
已用時間: 7.763(毫秒). 執行號:8.
SQL> conn test/dameng123
SQL> create table t1 as select * from dba_data_files;
操作已執行
已用時間: 19.126(毫秒). 執行號:9.
SQL> select count(*) from t1;
行號 COUNT(*)
---------- --------------------
1 8
2、模擬刪除文件
[dmdba@localhost ~]$ rm -rf /dmdata/data/DM01/cc01.dbf
SQL> select count(*) from t1;
行號 COUNT(*)
---------- --------------------
1 8
已用時間: 0.553(毫秒). 執行號:12.
執行失效檢查系統進程
SQL> call SP_FILE_SYS_CHECK();
DMSQL 過程已成功完成
已用時間: 1.458(毫秒). 執行號:13.
SQL> select count(*) from t1;
select count(*) from t1;
[-3430]:表空間[CC]中文件[/dmdata/data/DM01/cc01.dbf]已被刪除.
已用時間: 0.230(毫秒). 執行號:0
3、恢復數據文件
執行準備恢復過程
SQL> call sp_tablespace_prepare_recover('CC');
DMSQL 過程已成功完成
已用時間: 0.351(毫秒). 執行號:15.
查看DM7進程ID
[dmdba@localhost ~]$ ps -ef|grep dmserver
dmdba 2304 1 0 08:25 ? 00:00:02 /dm7/bin/dmserver /dmdata/data/DM01/dm.ini -noconsole
dmdba 2885 2817 0 08:35 pts/0 00:00:00 grep dmserver
查看被刪除文件,以下可知對應的文件號是14
[dmdba@localhost ~]$ ls /proc/2304/fd -l
總用量 0
lr-x------ 1 dmdba dinstall 64 11月 16 08:36 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 11月 16 08:36 1 -> /dm7/log/S98DmServiceTEST01.log
lrwx------ 1 dmdba dinstall 64 11月 16 08:36 10 -> /dmdata/data/DM01/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 11月 16 08:36 11 -> /dmdata/data/DM01/DMHR.DBF
lrwx------ 1 dmdba dinstall 64 11月 16 08:36 12 -> /dmdata/data/DM01/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 11月 16 08:36 13 -> /dmdata/data/DM01/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 11月 16 08:36 14 -> /dmdata/data/DM01/cc01.dbf (deleted)
lrwx------ 1 dmdba dinstall 64 11月 16 08:36 15 -> /dmdata/arch/ARCHIVE_LOCAL1_20191116082533913_0.log
........以下省略
復制文件到原來的位置
[dmdba@localhost ~]$ cp /proc/2304/fd/14 /dmdata/data/DM01/cc01.dbf
執行恢復過程
SQL> call sp_tablespace_recover('CC');
DMSQL 過程已成功完成
已用時間: 9.973(毫秒). 執行號:16.
再次執行失效檢查系統進程,驗證恢復,無報錯
SQL> call SP_FILE_SYS_CHECK();
DMSQL 過程已成功完成
已用時間: 0.182(毫秒). 執行號:19.
SQL> select count(*) from t1;
行號 COUNT(*)
---------- --------------------
1 8
已用時間: 0.150(毫秒). 執行號:17.
SQL> select tablespace_name, file_name, status from dba_data_files order by 1;
行號 TABLESPACE_NAME FILE_NAME STATUS
---------- --------------- ------------------------------ ---------
1 BOOKSHOP /dmdata/data/DM01/BOOKSHOP.DBF AVAILABLE
2 CC /dmdata/data/DM01/cc02.dbf AVAILABLE
3 CC /dmdata/data/DM01/cc01.dbf AVAILABLE
4 DMHR /dmdata/data/DM01/DMHR.DBF AVAILABLE
5 MAIN /dmdata/data/DM01/MAIN.DBF AVAILABLE
6 ROLL /dmdata/data/DM01/ROLL.DBF AVAILABLE
7 SYSTEM /dmdata/data/DM01/SYSTEM.DBF AVAILABLE
8 TEMP /dmdata/data/DM01/TEMP.DBF AVAILABLE
8 rows got
已用時間: 47.629(毫秒). 執行號:18.
誤刪除數據文件恢復完成。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。