出于对数据库的数据安全来讲,exp这个命令对大多数使用Oracle的人来讲(尤其是数据库管理员)并不陌生,这个exp命令可以完成对数据库数据进行多样备份,如全库,特定用户,特定表等其他方式。类似的命令还有expdb,两个唯一的不同点是expdb导出时会显示导出的数据大小,而exp则没有。这里主要分析的不是exp命令怎么用,而是分析exp命令导出的数据是否存在问题。
exp备份数据什么时候做最合适?国际性应用(或通信应用)数据库如何备份?
要回答第一个问题需要了解以下内容,我们知道oracle数据库启动的过程包括以下步骤:
1、startup nomount 读取oracle的spfile,初始化数据库实例;
2、alter database mount 读取控制文件,;
3、alter database open 根据数据库控制文件配置加载数据库实例,以及根据控制文件中保存的日志文件信息进行数据库一致性校验并处理,进行实例恢复,数据库加载成功后对外提供服务。
在数据库open状态进行exp方式备份的情况下,我们备份的数据块也存在被写的可能,从而导致备份的数据块与实际的数据块存在差异,数据的一致性问题,即数据模糊性。我们理解在某个时刻导出的数据备份能体现备份当时的数据信息,也就是说备份数据是当时数据的一份快照,实际上并非如此。为了最大限度的保证备份数据的一致性,我们往往会采取凌晨(此时的业务操作会很少甚至没有)执行数据库的备份,就此回答了为什么数据库备份要在凌晨做。我们做测试开发的时候对数据的一致性要求不是很高,只要满足我们最低的要求(开发应用能正常运行,不需要或不要业务数据)就可以了。
国际性应用(或通信应用)数据库的备份如何做?面临是全球性访问使用,业务数据的产生时间是随机的,任何时候进行数据备份都存在数据一致性问题。为解决这个问题,需使用oracle提供的rman进行备份。rman与exp有什么不同?exp备份的是数据库对象,只备份了其中的数据部分,对配置文件,控制文件和日志文件都不做备份,而通常这样的备份是最危险的;exp备份操作简单,rman备份比较复杂(需要掌握的知识比较多,语法规则多)。
基于以上的分析,建议以后多用rman进行数据库备份。需要对数据库重要文件进行备份,配置文件,控制文件以及日志文件;并对备份文件进行不定期的校验,确定备份文件有效;
以上是个人的分析总结,仅做参考。存在错误或不完整的地方后续再补充,存在不足的地方望能指正。