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