DM8 测试表空间失效文件恢复
·
DM8官网文档链接:查看表空间文件失效检查
关于查看表空间文件失效检查部分,缺少一定流程。于是自己尝试了下这个步骤。
新建表空间ts_recover
CREATE TABLESPACE TS_RECOVER
DATAFILE
'/dm/data/DAMENG/ts_recover01.dbf' SIZE 128;
select GROUP_ID,PATH,STATUS$,RW_STATUS,LAST_CKPT_TIME,MODIFY_TIME from v$datafile where PATH like '%ts_recover%';
创建后查询下表空间数据文件的状态。
建一个测试表,并插入数据,确认数据存在。
CREATE TABLE T_RECOVER
(
ID INT,
NAME VARCHAR(50)
)
STORAGE(ON TS_RECOVER);
INSERT INTO T_RECOVER
SELECT LEVEL,
'TEST'
FROM dual CONNECT BY LEVEL<=10000;
COMMIT;

第一步:删除文件(建议备份)
rm /dm/data/DAMENG/ts_recover01.dbf
删除前后对比,可以发现STATUS$字段已经从1转到0,代表该表空间文件已经脱机了。并且查询表数据也报错。

第二步、准备恢复
CALL SP_TABLESPACE_PREPARE_RECOVER('TS_RECOVER');

第三步、Linux 恢复文件
#先查出pid
ps -ef | grep dmserver
#把pid填入,找到删除的文件标记号
ls -l /proc/<pid>/fd | grep deleted
#把文件标记号和pid分别填入xx和<pid>,拷贝回去
cp /proc/<pid>/fd/xx /dm/data/DAMENG/ts_recover01.dbf

第四步、执行恢复
CALL SP_TABLESPACE_RECOVER('TS_RECOVER');
恢复后可以看到,表空间文件STATUS$变成1代表online状态了。
社区地址:https://eco.dameng.com
更多推荐


所有评论(0)