1 理论说明
1.1 表空间文件失效检查
LINUX操作系统中,被进程打开的文件仍可以在OS系统中被删除,因此存在 DM数据文件可能被误删的风险。如果数据文件被删除,DM系统能够及时检测出来,并立刻停止对其继续使用并通知用户。
在dm.ini中参数FIL_CHECK_INTERVAL的值指定DM系统检查数据文件是否仍存在 的时间间隔。将其设为0表示不进行检查。
也可以通过系统过程SP_FILE_SYS_CHECK()来手动的进行检查。
系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除
1.2 表空间文件失效恢复
LINUX系统中被删除的文件,只要其句柄没有被关闭,可以在/proc//fd 中找到其对应的文件副本。其中指打开该文件的进程id。
利用该方法,结合OS命令,DM提供失效文件的恢复方案如下
1、调用系统过程SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备 进行恢复;
2、如果使用过程中DM报错表空间数据文件被删除,通过操作系统的ps命令找到当前 dmserver的PID:ps –ef|grep dmserver;
3、使用操作系统ls命令查看被删除文件对应的副本ls /proc//fd–l,会发现被删除的文件后有(deleted)字样;
4、使用操作系统的cp命令将文件复制到原位置:cp bak_fildata_file_path_dir;
5、复制成功后,调用系统过程 SP_TABLESPACE_RECOVER(ts_name)完成表空间失 效文件的恢复。
注意,要保证数据文件正确修复,需要保证在SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。
2 操作示例
2.1 环境准备
1.操作系统版本
2.数据库版本
3.创建测试表
4.插入测试数据
2.2 删除数据文件
1.通过OS命令删除数据文件
2.查询测试表数据
3.手动进行文件检查
4.调用系统过程进行检查
5.查询表数据
2.3 恢复数据文件
1.调用系统过程 SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复;
2.查询当前数据库进程PID
3.查找被删除的数据文件,这里对应的文件号是46
4.复制数据文件到原来位置
5.调用系统过程进行文件恢复
6. 调用系统过程进行文件检查
7.查询表数据和数据文件
3 附录
参考文献:/DM8系统管理员手册.pdf(第14.1.8和14.1.9章节)。
文章
阅读量
获赞