Oracle数据备份(服务器端)——expdp

  • expdp属于逻辑备份。逻辑备份是指利用Oracle提供的导出工具,将数据库中选定的记录集或数据字典的逻辑副本以二进制文件的形式储存到操作系统中。逻辑备份的二进制文件称为转储文件,以dmp格式存储。

  • 在Oracle 11g数据库中提供了Data Pump Export(EXPDP)实用程序,实现数据的逻辑备份与恢复。

  • EXPDP是服务器端程序,其转储文件只能存放在由DIRECTORY对象指定的特定数据库服务器操作系统目录中,而不能使用指定的操作系统目录(相对EXP)

  • EXPDP工具的执行可以采用:交互方式、命令行方式及参数文件方式3种。命令行方式是在命令行中直接指定参数设置;参数文件方式是将参数的设置信息存放到一个参数文件中,在命令行中用PARFILE参数指定参数文件;交互方式是通过交互式命令进行导出作业管理

  • EXPDP提供了5种导出模式,在命令行中通过参数设置来指定

    • 全库导出模式:通过参数FULL指定,导出整个数据库
    • 模式导出模式:通过参数SCHEMAS指定,是默认的导出模式,导出指定模式中的所有对象
    • 表导出模式:通过参数TABLES指定,导出指定模式中指定的所有表、分区及其依赖对象
    • 表空间导出模式:通过参数TABLESPACES指定,导出指定表空间中所有表及其依赖对象的定义和数据
    • 传输表空间导出模式:通过参数TRANSPORT_TABLESPACES指定,导出指定表空间中所有表及其依赖对象的定义。通过该导出模式以及相应导入模式,可以实现将一个数据库表空间的数据文件复制到另一个数据库中
  • EXPDP命令的常用参数及其说明

    参数名称说明
    ATTACH把导出结果附加在一个已存在的导出作业中,默认为当前模式唯一的导出作业
    CONTENT指定要导出的内容。CONTENT取值为ALL或者DATA_ONLY或者METADATA_ONLY。ALL表示导出对象的定义及其数据;DATA_ONLY表示只导出对象的数据;METADATA_ONLY表示只导出对象的定义。默认为ALL
    DIRECTORY指定转储文件 和日志文件所在位置的目录对象,该对象由DBA预先创建
    DUMPFILE指定转储文件名称列表,可以包含目录对象名,默认值为expdp.dmp
    EXCLUDE指定导出操作中要排除的对象类型和对象定义
    FILESIZE指定转储文件的最大尺寸
    FULL指定是否进行全数据库导出,包括所有数据及定义
    HELP指定是否显示EXPDP命令的在线帮助
    INCLUDE指定导出操作中要导出的对象类型和对象定义
    JOB_NAME指定导出作业的名称
    LOGFILE指定导出日志文件的名称
    NOLOGFILE指定是否生成导出日志文件
    PARALLEL指定执行导出作业时的并行进程最大个数
    PARFILE指定导出参数文件的名称
    QUERY指定导出操作中SELECT语句中的数据导出条件
    SCHEMAS指定进行模式导出及模式列表
    TABLES指定进行表模式导出及表列表
    TABLESPACES指定进行表空间模式导出及表空间列表
    TRANSPORT_TABLESPACES指定进行传输表空间模式导出及表空间列表
  • 具体使用EXPDP的备份步骤如下(数据服务器为Windows)

  • 创建备份用户(不是必须的,必须的是权限)

    -- 创建DUMPMAN用户,密码为xxx,默认表空间USERS
    CREATE USER DUMPMAN IDENTIFIED BY xxx;
    -- 授予可以建立SESSION的权限,即CONNECTION角色,连接权限
    GRANT CREATE SESSION TO DUMPMAN;
    -- 授予调试的权限(可忽略)
    GRANT DEBUG CONNECT SESSION TO DUMPMAN;
    -- 创建或修改DIRECTORY,没有dumpdir的话,即创建一个DIRECTORY名为dumpdir,dumpdir指向F:\ORACLE_PUMP\dump
    CREATE OR REPLACE DIRECTORY dumpdir AS 'F:\ORACLE_PUMP\dump';
    -- 为DUMPMAN用户授予dumpdir的读写权限
    GRANT READ,WRITE ON DIRECTORY dumpdir TO DUMPMAN;
    -- 为DUMPMAN授予导出及导入非同名模式的对象权限
    GRANT EXP_FULL_DATABASE,IMP_FULL_DATABASE TO DUMPMAN;
    -- 为DUMPMAN授予RESOURCE角色(权限偏大)
    GRANT RESOURCE TO DUMPMAN;
    -- 查询现有的DIRECTORY
    SELECT * FROM DBA_DIRECTORIES;
    
  • 到这就可以使用EXPDP命令导出了(注意:DIRECTORY对应路径下的文件必须存在)

    expdp dumpman/xxx dumpfile=hr.dmp directory=dumpdir schemas=hr
    

    一般就这样,但是无法忍受大量文件堆叠在一起,为了备份文件能按照年月日进行存放,我们继续

  • 创建存储过程,用于修改dumpdir(在DUMPMAN用户下),简单实现如下

    CREATE OR REPLACE PROCEDURE CHANGE_DATA_PUMP_DIR AUTHID CURRENT_USER AS
      I_YEAR    VARCHAR2(4);
      I_MONTH   VARCHAR2(2);
      I_DAY     VARCHAR2(2);
      LOCALPATH VARCHAR2(200);
      I_SQL     VARCHAR2(400);
    BEGIN
      I_YEAR    := TO_CHAR(SYSDATE, 'YYYY');
      I_MONTH   := TO_CHAR(SYSDATE, 'MM');
      I_DAY     := TO_CHAR(SYSDATE, 'DD');
      LOCALPATH := 'F:\ORACLE_DUMP\SPD_SZSE_V20\dump\' || I_YEAR || '/' ||
      I_MONTH || '/' || I_DAY;
      DBMS_OUTPUT.PUT_LINE(LOCALPATH);
      I_SQL := 'CREATE OR REPLACE DIRECTORY dumpdir AS ' || '''' || LOCALPATH || '''';
      DBMS_OUTPUT.PUT_LINE(I_SQL);
      EXECUTE IMMEDIATE I_SQL;
    END CHANGE_DATA_PUMP_DIR;
    
  • 编写调用上述存储过程的SQL文件(CHANGE_DATA_PUMP_DIR.sql)

    CALL CHANGE_DATA_PUMP_DIR();
    EXIT;
    -- 还有其他方式(EXECUTE或者程序块均可)
    
  • 编写BAT脚本

    ::bat脚本说明头(与编辑器代码解释由冲突,pass)
    
    :: 设置Oracle编码
    :: set NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
    
    :: 获取日期时间
    set year=%date:~0,4%
    set month=%date:~5,2%
    set day=%date:~8,2%
    
    set basePath="F:\ORACLE_PUMP\dump"
    
    set oneLevelPath=%basePath%\%year%
    set secondLevelPath=%oneLevelPath%\%month%
    set threeLevelPath=%secondLevelPath%\%day%
    
    :: 一级路径
    if not exist "%oneLevelPath%"  mkdir %oneLevelPath%  
    
    :: 二级路径
    if not exist "%secondLevelPath%"  mkdir %secondLevelPath%  
    
    :: 三级路径
    if not exist "%threeLevelPath%"  mkdir %threeLevelPath%  
    
    :: 执行SQL文件内容
    SQLPLUS DUMPMAN/xxx @F:\ORACLE_PUMP\CHANGE_DATA_PUMP_DIR.sql
    
    :: 使用EXPDP导出
    expdp DUMPMAN/xxx dumpfile=HR.dmp logfile=HR.log directory=dumpdir schemas=HR
    
    
  • 直接运行脚本开始备份,如需定时任务有脚本也不成问题,定时任务备份可查看EXP的备份

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Oracle expdp数据泵是Oracle数据库中的一个工具,用于将数据库的数据和对象以二进制格式导出到一个dump文件中,以便进行备份和迁移等操作。异地备份是指将数据和文件备份到不同的地理位置,以保证数据的安全性和可靠性。 使用Oracle expdp进行异地备份有以下几个步骤: 1. 准备目标环境:在异地环境中安装并配置Oracle数据库,确保与源数据库的版本和参数设置相同。 2. 创建目标数据库的dump目录:通过在目标数据库中创建与源数据库相同的dump目录,确保可以将导出的数据文件正确保存到目标环境。 3. 运行expdp命令进行数据导出:在源数据库中使用expdp命令将需要备份的数据和对象导出为一个dump文件。可以通过指定导出模式、导出对象、导出参数等方式来灵活控制导出的内容。 4. 将dump文件复制到目标环境:通过网络或其他传输方式将导出的dump文件从源数据库复制到目标数据库所在的环境。 5. 在目标环境中创建目标数据库:在目标环境中创建与源数据库相同的数据库实例,确保数据库对象和配置与源数据库一致。 6. 在目标数据库中执行impdp命令进行数据导入:在目标数据库中使用impdp命令将导出的dump文件导入到目标数据库中。可以通过指定导入模式、导入参数等方式来灵活控制导入的方式。 通过以上步骤,可以将源数据库的数据和对象以dump文件的形式备份到异地环境的目标数据库中,实现数据的异地备份。需要注意的是,由于跨地理位置备份的涉及网络传输等问题,需要确保网络的稳定性和传输的安全性,以免导出和导入的过程中出现数据丢失或损坏等情况。 ### 回答2: Oracle Data Pump是Oracle数据库提供的一种工具,用于将数据库中的数据和对象导出到另一个库或文件中。它比传统的导出工具(如exp)更快、更灵活。 Oracle Data Pump在进行数据导出时,可以选择将数据导出到异地备份,提供了一种安全的备份和恢复机制。 通过使用Data Pump,可以将数据和对象以二进制形式导出到一个或多个文件中,然后将这些文件传输到远程位置进行备份。这样做的好处是,即使在主库发生故障时,也可以从备库中恢复数据。 在数据导出过程中,可以使用不同的参数设置来控制导出的粒度和过滤条件,以满足不同的需求。例如,可以选择导出特定的表、分区、对象类型、表空间等。 另外,Data Pump还提供了数据压缩和加密功能,可以进一步减小备份文件的大小,并提高传输的安全性。 对于异地备份,最常用的方法是将导出的文件传输到远程位置的网络存储中,如云存储或远程文件系统。这样做可以实现高效的备份和恢复,并提供数据的高可用性。 总之,Oracle Data Pump提供了一种简单、灵活和高效的方式来实现数据的异地备份。通过合理的配置和使用,可以保证数据的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值