上一篇帖子说过需要做一个数据库在win端下的备份脚本,小白表示作为一个初级DBA,经常会范一些小错误,所以只能把这些问题错误记录下来,但是这也不能阻止我探索的脚步不是。
所以,在做exp导出的增量备份这个参数使用的时候,发现一个奇怪的问题:
我创建的一个新用户,建立一张新表,做一次数据库全备后,导出了8条数据,但是我向这张表中插入两条新数据后,做一次增量导出,增量导出的确实仅仅是这张有数据变动的表,但是导出的是10条数据。
难道exp做增量备份的时候导出的是有数据变动的表吗?而不是将变动的数据单独的增量导出?
带着这个问题我需要从新做一次实验:
新建表JJJ,向表内插入两条数据,下面就是使用导出工具exp导出整个数据库了。
exp system/oracle inctype=complete file=/home/oracle/scotts_full.dmp log=/home/oracle/log01.log复制代码
在导出日志中可以看到SCOTTS用户下的表JJJ成功的导出了两条数据。
然后我们继续向表JJJ中插入两条数据,然后使用增量导出,看看导出的是两条数据还是4条数据。
exp system/oracle inctype=incremental file=/home/oracle/scotts_incr.dmp log=/home/oracle/log02.log
复制代码
导出的日志显示,表JJJ导出了4条数据,导出的是整张表,而不是增加变动的数据。
那我们使用导出的备份验证一下我们的出来的结果,删除用户SCOTTS下的表JJJ,使用imp导入命令将这个备份导入到数据库里,查看导入的数据是什么。
imp system/oracle inctype=RESTORE file=/home/oracle/scotts_incr.dmp full=y
复制代码
在这里我就不从新建一个新的实例导入了,仅仅是删除了用户里的表,很明显导入了4条数据。
我们可以得出结论了:使用exp导出的增量备份文件,当表内的数据出现变动时,所做的增量备份导出的是有数据变动的整个表,而不是仅仅增量备份有变动的数据。