控制文件
每个 DM 数据库都有一个名为 dm.ctl的控制文件。控制文件是一个二进制文件,它记
录了数据库必要的初始信息,其中主要包含以下内容:
数据库名称;
数据库服务器模式;
OGUID 唯一标识;
数据库服务器版本;
数据文件版本;
数据库的启动次数;
数据库最近一次启动时间;
表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的
表空间,数组的方式保存起来;
控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控
制文件合法性,防止文件损坏及手工修改。
在服务器运行期间,执行表空间的 DDL等操作后,服务器内部需要同步修改控制文件内
容。如果在修改过程中服务器故障,可能会导致控制文件损坏,为了避免出现这种情况,在
修改控制文件时系统内部会执行备份操作。备份策略如下:
策略一 在修改 dm.ctl 之前,先执行一次备份,确定 dm.ctl 修改成功后,再将
备份删除,如果 dm.ctl修改失败或中途出现故障,则保留备份文件。
策略二 在修改 dm.ctl成功之后,根据 dm.ini中指定的
CTL_BAK_PATH/CTL_BAK_NUM对最新的 dm.ctl执行备份,如果用户指定的
CTL_BAK_PATH是非法路径,则不再生成备份文件,在路径有效的情况下,生成备份文件时
根据指定的 CTL_BAK_NUM判断是否删除老的备份文件。
注意:
如果 dm.ctl文件存放在裸设备上,则【策略一】不会生效。
如果指定的 CTL_BAK_PATH是无效路径,则【策略二】也不会生效。
如果【策略一】和【策略二】的条件都满足,则都会生效执行,否则只执行满足条
件的备份策略,如果都不满足,则不会再生成备份文件。
如果是初始化新库,在初始化完成后,会在“SYSTEM_PATH/CTL_BAK”路径下对
原始的 dm.ctl执行一次备份。
总结
上面即为达梦中数据库控制文件概念知识。浅见认知,如有错误,请不吝指正。谢谢!