在 Oracle 归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?
作者 | JiekeXu
来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)
如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)
大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看在 Oracle 归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!
在 Oracle 归档模式下直接 rm data.dbf 数据文件并重启数据库还有救吗?为何会有这样的问题,要追溯到上周一位朋友咨询的事情,他那里一个 Oracle 单机的环境因为表空间不足了,需要扩容表空间,则通过添加表空间数据文件的命令加入了一个数据文件,执行成功后呢便可以继续写入数据了。
不一会儿发现自己添加的数据文件路径不对,将其加到根文件系统了,而不是统一存放数据的目录,他想这是刚加的数据文件,发现路径不对,则直接用类似于 rm data.dbf 的命令给删除了,这个时候导致数据库宕机了【PS:不知为何他这个数据库会宕机,按理来说从操作系统删除一个数据文件不会导致 Oracle 数据库宕机的】。他肯定没有看我以前写的 案例|RAC 添加表空间误将数据文件放本地处理办法,不然也不会出现这样的问题。
一、模拟问题
因为不是我个人亲身经历的事情,没有全部的素材,这里我用我的 Oracle 单机 19.12 版本的测试环境模拟一下大概的流程。
模拟业务表空间和业务用户,且可能有数据写入。
--模拟业务表空间
create tablespace jiekexu_data datafile '/u01/app/oracle/oradata/TESTOGG/jiekexu_data01.dbf' size 10m;
<br>
--已经提前在 users 表空间创建了 jiekexu 用户,这里将其修改为新建的表空间 JIEKEXU_DATA
<br>
alter user jiekexu quota unlimited on jiekexu_data;
alter user jiekexu default tablespace jiekexu_data;
--连接到新建用户查看表及新建表模拟数据写入
conn jiekexu/jiekexu;
select count(*) from JiekeXu.T1;
<br>
COUNT(*)
----------
12
create table t2 as select * from t1;