注册
LINUX环境下如何恢复被操作系统命令误删的表空间数据文件
专栏/技术分享/ 文章详情 /

LINUX环境下如何恢复被操作系统命令误删的表空间数据文件

Z 2024/12/27 383 0 0
摘要

故障模拟:
一、新建测试表空间
create tablespace testone;
二、测试表创建
create table testspace(id int,name varchar2(20)) tablespace testone;
insert into testspace values(1,‘jz’);
commit;
select * from testspace;
微信截图_20241223064317.png
三、操作系统删除testone表空间对应的数据文件
微信截图_20241223064514.png
select * from testspace;
image.png
注:此时依然可以正常查询到数据,这是因为结果集缓存未刷新
四、手动检测数据文件是否失效
SP_FILE_SYS_CHECK();
select * from testspace;
image.png
故障处理:
注:LINUX 系统中被删除的文件,只要其句柄没有被关闭,可以在/proc/<pid>/fd 中找到其对应的文件副本。其中<pid>指打开该文件的进程 id。
一、调用过程SP_TABLESPACE_PREPARE_RECOVER(表空间名称)准备进行恢复
SP_TABLESPACE_PREPARE_RECOVER(‘testone’);
二、通过操作系统ps命令查看数据库进程的PID
ps -ef|grep dm.ini
微信截图_20241223065412.png
三、查看被删除文件对应的副本
cd /proc/65520/fd
ll
image.png
四、拷贝文件副本到数据库实例源路径,并修改文件属组
cp /proc/65520/fd/12 /dmdata/DMD/testone01.dbf
cd /dmdata/DMD
chown dmdba:dmdba testone01.dbf
五、执行过程 SP_TABLESPACE_RECOVER(表空间名称)完成表空
间失效文件的恢复。
SP_TABLESPACE_RECOVER(‘testone’);
六、查询表数据
select * from testspace;
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服