初当数据库管理员,现在碰到一个数据备份的问题:
   现在部分表的数据已经上亿条了,占用的空间越来越大,所以想把2007年的数据备份出来放到磁带库上,然后把这些数据从当前的运行的数据库中删除,以腾出空间,提高速度.
   我做了个测试,是这样处理的:
    用pl sql的导出工具把某个表的数据导出,带where条件,比如说where revtime=to_date('2007-12-01','yyyy-mm-dd')
    得到的数据文件为a.dmp
    导了二份,第二份的where 条件是where revtime=to_date('2007-12-02','yyyy-mm-dd')
    得到的数据文件为b.dmp在另一台电脑上,用imp想把这a.dmp和b.dmp导到数据库中,想验证一下导入后的数据是否是a+b的数据,但是导入的时候出现了错误"imp-00008 导出文件中出现无法识别的语句",在网上搜索了很多信息但是还没能解决.
   
    现在想请教两个问题:
   1.按前面的想法,如果导入成功,数据库中是否会是a.dmp和b.dmp的数据之和?
     我是担心如果我把2007年数据导出来后在原库上把原始数据删除,万一某天要看这些数据而已导不回来.
   2.有没解决过imp-00008的XDJM?
    谢谢大家先.

解决方案 »

  1.   

    其实你完全可以不用DMP文件导出来..如果是这样的话..那岂不是每天都要组成一个DMP文件.那文件量可不得了.
    思路: 
      可以先将现在的库的表空间结构导出,不导数据.再新增一个NEW SPACE.将导出的结构导入,然后用SQL将现在的库
    的数据(2007年的)移植至NEW SPACE中.另外,可以是两台不一样的电脑.两个ORACLE连接只需建DBLINK即可.
    如果你要做成DMP文件.也可以EXP NEW SPACE中的数据保存.
      其实,像这种数据备份方法很多,也可以做成即时的.触发器什么的.完全看你想要什么样的结果.