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

时间:2022-01-08 00:23:06
经常会遇到数据量很大的业务表导入导出时把数据库导挂的情况,利用oracle特性可以有效解决。
  1. 备份须知:检测表空间大小,预估导出文件大小,注意修改用户、导出文件路径等,考虑到数据量较大,建议分两步导出;
  2. 检查生产用户【XXX】表空间大小及所剩空间大小,避免备份时磁盘空间不足,下一步建立导出文件夹【expdb_oradata】要大于导出文件的大小。
    <span style="font-size:18px;">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;</span>

  3. 建立导出文件夹【expdb_oradata】注意修改文件路径
    <span style="font-size:18px;">create directory dump_dir as '/home/oracle/expdb_oradata'; </span>
    给用户赋目录操作权限
    <span style="font-size:18px;">grant read, write on directory dump_dir to XXX;</span>

  4. 使用数据泵导出数据库  注: XXX 用户名 ,MMM 密码 , NNN 数据库实例;
     这里分两笔导出,第一笔数据量较小(采用排除业务数据较大的表),第二笔较大 注意修改命令文件名  
  5. 第一笔 排除大数据量的表 
    <span style="font-size:18px;">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')";</span>

  6. 第二笔  导出大数据量的表
     
    <span style="font-size:18px;">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;</span>