在日常项目中很有可能遇到运维人员不小心删除了数据库的数据文件。
对于误删除数据库文件,操作系统没有重启的情况下(达梦数据库)linx可以通过可以通过以下方法进行恢复数据库的文件。
下面是一个示例(以系统表空间为例,普通表空间类似)
创建一个表a,在默认的系统表空间MAIN上。
删除系统表空间MAIN
执行完数据文件校验后再查询表a,会报错,此时注意数据库服务不能重启。
通过调用系统过程call sp_tablespace_prepare_recover('MAIN')进行恢复
通过操作系统临时存放文件下恢复数据文件
注意此处的10是根据操作系统的文件号得来的
通过调用call sp_tablespace_recover执行数据文件恢复,然后校验数据文件。
注意此时校验后数据文件并没有完成恢复。
原因是数据文件通通过操作系统恢复后,属组是root,不是dmdba,此时需要修改数组和属主
此时再执行数据文件校验即可完成数据文件恢复
注意此方法只能在数据库服务还在的情况和操作系统保留时间内才能进行恢复。
数据文件误删除还可以通过备数据库备份文件进行恢复,这里就暂时不介绍了,在平时的工作中dba应该提醒运维人员
小心管理,尽量避免类似的情况发生。