在一次大型数据库库的导出操作中,将导出文件名称写重复了,导出数据脚本如下:
nohup exp user/**** log=/exp_dir/exp_20100527.log filesize=16G file=/exp_dir/user01.dmp,/exp_dir/user01.dmp,/exp_dir/user02.dmp,
/exp_dir/user03.dmp,/exp_dir/user04.dmp,/exp_dir/user05.dmp,
/exp_dir/user06.dmp,/exp_dir/user07.dmp,/exp_dir/user08.dmp,
/exp_dir/user09.dmp,/exp_dir/user10.dmp,/exp_dir/user11.dmp,
/exp_dir/user12.dmp,/exp_dir/user13.dmp,/exp_dir/user14.dmp,
/exp_dir/user15.dmp,/exp_dir/user16.dmp,/exp_dir/user17.dmp,
/exp_dir/user18.dmp,/exp_dir/user19.dmp,/exp_dir/user20.dmp &
上面的脚本将/exp_dir/user01.dmp写重复了.在导出的过程中,开始将数据导入到/exp_dir/user01.dmp,第一个文件导入完成,轮转到第二个文件,此时文件名称仍然为/exp_dir/user01.dmp, ORACLE的exp没有报任何错误,而是继续将数据导入到第二个文件中,因为文件名称是重复的,所以写第二个文件时,覆盖了第一个文件的内容。导出完成后,实际上等于我们丢失了第一个文件(因为被完全覆盖了)。
在导入数据的时,报错无法进行数据的导入工作。
更改一下导出的脚本,修改了错误的地方,再一次导出数据库数据,脚本如下:
nohup exp user/**** log=/exp_dir/exp_20100611.log filesize=16G file=/exp_dir/user00.dmp,/exp_dir/user01.dmp,/exp_dir/user02.dmp,
/exp_dir/user03.dmp,/exp_dir/user05.dmp,/exp_dir/user06.dmp,
/exp_dir/user07.dmp,/exp_dir/user08.dmp,/exp_dir/user09.dmp,
/exp_dir/user10.dmp,/exp_dir/user11.dmp,/exp_dir/user12.dmp,
/exp_dir/user13.dmp,/exp_dir/user14.dmp,/exp_dir/user15.dmp,
/exp_dir/user16.dmp,/exp_dir/user17.dmp,/exp_dir/user18.dmp,
/exp_dir/user19.dmp,/exp_dir/user19.dmp &
两次的导出文件可不可以综合使用呢?
答案是可以的,我们可以使用新的user00.dmp加上旧的user01.dmp--user20.dmp,来完成一次数据的导入。这样做的好处是,只是user00.dmp(第一个文件的内容是新的),而后面近20个文件的内容还是旧的,避免了更大的失误。导入数据的脚本如下:
nohupimpuser/**** log=/exp_dir/imp_20100611.log filesize=16G file=/exp_dir/user00.dmp,/exp_dir/user01.dmp,/exp_dir/user02.dmp,
/exp_dir/user03.dmp,/exp_dir/user05.dmp,/exp_dir/user06.dmp,
/exp_dir/user07.dmp,/exp_dir/user08.dmp,/exp_dir/user09.dmp,
/exp_dir/user10.dmp,/exp_dir/user11.dmp,/exp_dir/user12.dmp,
/exp_dir/user13.dmp,/exp_dir/user14.dmp,/exp_dir/user15.dmp,
/exp_dir/user16.dmp,/exp_dir/user17.dmp,/exp_dir/user18.dmp,
/exp_dir/user19.dmp,/exp_dir/user19.dmp,/exp_dir/user20.dmp &
[@more@]