exp分dmp文件迁移数据

来源:互联网 发布:深入浅出java 下载 编辑:程序博客网 时间:2024/06/07 14:59
        数据迁移是系统升级过程最重要的一个环节,也是技术含量最高的一项任务。这就需要实施人员有一个很专业的操作流程来在项目实施过程中很好的完成数据迁移这份工作。数据迁移过程中,我们要评估迁移的数据量大小,以此来制定迁移方案。

        本次实施项目,涉及到的数据量将近1.3T,其中95%为LOB。主要是照片和大文本。系统升级是从windows服务器,向Linux服务器迁移oracle数据。客户要求尽可能不停止业务录入,不影响系统的正常使用。

依此,我们的实施方案为:
        首先将5%左右(60G)的文本信息数据迁移(一个小时的时间可以完成导入导出),将含LOB的表结构导出。之后,将导出的dmp文件导入到新建的数据库中。最后,再分文件导出LOB数据。

1、查看各个表空间使用的大小,以及各个类型的数据量大小

   SELECT TABLESPACE_NAME,SEGMENT_TYPE,SUM(BYTES/1024/1024) Mb FROM USER_SEGMENTS

   GROUP BY TABLESPACE_NAME,SEGMENT_TYPE

   ORDER BY 1,2;


   解决11G中oracle11g空表导出报EXP-00011问题
   select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

2、创建需要的表空间并指定所需大小,首先根据原表空间数据量,计算迁移到新库需要多少空间

  (这还需要根据数据库的字符集来调整。比如源库是ZHS16GBK,新库为UTF8,那么新库存放中文需要源库1.5倍的存储空间)查看数据库字符集:

   select userenv('language') from dual;

3、针对具体数据量大小,划分每个dmp文件的大小指定filesize,比如共9个G的文件数据,那么需要分五个2G的文件来存放。
   exp xcky/xcky@xcky file=file1.dmp,file2.dmp,file3.dmp,file4.dmp,file5.dmp parfile=tableslist.tab filesize=2048M log=file.log buffer=102400000 statistics=none direct=Y   recordlength=65535
   tableslist.tab
   tables = (
   common_picture,
   common_thu
   )
4、加速导入
   alter table tbname nologging;
   增大重作日志的大小,以减少log switch的次数,也就是减少checkpoint次数,减少写磁盘的次数
   sort_area_size设定为较大值
   适当增加undo,tempfile
   非归档模式下导入数据
   导入完毕,开启表logging,开启归档。

5、IMP数据

   imp xcky/xcky fromuser=xcky touser=xcky parfile=file.par log=file.log buffer=102400000 commit=y feedback=1000 ignore=y

   file.par内容为:

   file = (

   file1.dmp,

   file.dmp

   )

0 0
原创粉丝点击