浦发银行大数据库表备份设计思路(数据泵)

经常会遇到数据量很大的业务表导入导出时把数据库导挂的情况,利用oracle特性可以有效解决。
  1. 备份须知:检测表空间大小,预估导出文件大小,注意修改用户、导出文件路径等,考虑到数据量较大,建议分两步导出;
  2. 检查生产用户【XXX】表空间大小及所剩空间大小,避免备份时磁盘空间不足,下一步建立导出文件夹【expdb_oradata】要大于导出文件的大小。
    select a.tablespace_name,
           a.bytes / 1024 / 1024 "Sum MB",
           (a.bytes - b.bytes) / 1024 / 1024 "used MB",
           b.bytes / 1024 / 1024 "free MB",
           round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "percent_used"
      from (select tablespace_name, sum(bytes) bytes
              from dba_data_files
             group by tablespace_name) a,
           (select tablespace_name, sum(bytes) bytes, max(bytes) largest
              from dba_free_space
             group by tablespace_name) b ,dba_users
     where a.tablespace_name = b.tablespace_name and dba_users.USERNAME='XXX' and dba_users.default_tablespace=a.tablespace_name;

  3. 建立导出文件夹【expdb_oradata】注意修改文件路径
    create directory dump_dir as '/home/oracle/expdb_oradata'; 
    给用户赋目录操作权限
    grant read, write on directory dump_dir to XXX;

  4. 使用数据泵导出数据库  注: XXX 用户名 ,MMM 密码 , NNN 数据库实例;
     这里分两笔导出,第一笔数据量较小(采用排除业务数据较大的表),第二笔较大 注意修改命令文件名  
  5. 第一笔 排除大数据量的表 
    expdp XXX/MMM@NNN DIRECTORY=dump_dir DUMPFILE=PEPP_BFS_SPDB_20160701_A.dmp LOGFILE=exp_tab_test.log exclude=table:"in('COM_MESSAGE_IN','COM_MESSAGE_OUT','BFS_TRX_TRANSACTION','BFS_IPP_TRX_LOG','BFS_BILL_STATEMENT','BFS_BANK_VOUCHER','BFS_BANK_VOUCHER_DTL')";

  6. 第二笔  导出大数据量的表
     
    expdp XXX/MMM@NNN DIRECTORY=dump_dir DUMPFILE=PEPP_BFS_SPDB_20160701_B.dmp LOGFILE=exp_tab_test.log TABLES=COM_MESSAGE_IN,COM_MESSAGE_OUT,BFS_TRX_TRANSACTION,BFS_IPP_TRX_LOG,BFS_BILL_STATEMENT,BFS_BANK_VOUCHER,BFS_BANK_VOUCHER_DTL;


你可能感兴趣的:(数据库问题,Oracle)