• OracleDatabase——数据库表空间dmp导出与导入


    由于公司的程序一直部署在客户现场内网,内网调试难度高,一般是有备份还原数据库的需求,这里简记备份(导出)数据库dmp文件与恢复(导入)的步骤。

    一、导出dmp文件

    exp与expdp命令异同

    相同点:exp与expdp命令都是备份数据库的。

    不同点

    1、expdp效率更高,exp是串行备份的,但expdp是并行备份的。

    2、二者导出机制不同,exp导出的是文本型,expdp导出的是二进制,所以expdp导出的dmp文件是要小于exp导出的。

    3、二者导出的dmp需要对应不同的导入命令,exp对应imp,expdp对应impdp。

    4、exp不需要指定逻辑目录对象(directory),而expdp需要指定。

    5、exp/imp可在客户端执行,而expdp/impdp只能在服务端执行。

    6、oracle11g后exp不导出空表,expdp可以。

    exp导出指定用户(表、视图、存储过程、同义词)到dmp文件

    一般适用于单个用户只有一个表空间的情况

    exp 用户名/密码@127.0.0.1:1521/ORCLCDB
    file=备份文件.dmp
    log=操作日志.log

    expdp导出指定用户(表、视图、存储过程、同义词)到dmp文件

    #创建备份目录
    mkdir -p /tmp/dbbackup
    #登录sqlplus,创建逻辑目录DB_BACKUP,映射物理目录/tmp/dbbackup
    create or replace directory DB_BACKUP as '/tmp/dbbackup';
    #为备份的用户授权逻辑目录读写权限
    grant read,write on directory DB_BACKUP to 备份的用户名;
    #导出备份文件到/tmp/dbbackup下
    expdp 用户名/密码@127.0.0.1:1521/orclcdb
    directory=DB_BACKUP
    dumpfile=备份文件.dmp
    schemas=用户名
    logfile=操作日志.log
    cluster=N
    exclude=grant
    exclude=STATISTICS
    compression=ALL

    二、导入dmp文件

    确定dmp文件是用exp与是expdp导出的

    由于exp与expdp导出的文件都是dmp,而这两者导出的dmp格式不同,导入命令也不同(exp导出的用imp导入,expdp导出的用impdp导入),需要进行区分,以下是简单区分的办法:

    #如果显示以TEXPORT开头,则是EXP导出的;如果是乱码则是expdp导出的。
    head -n 1 备份文件.dmp

    同表空间不同用户恢复表空间命令

    exp导出dmp使用imp恢复,方法如下:

    imp 目标用户名/密码@127.0.0.1:1521/ORCLCDB
    fromuser=源用户名 touser=目标用户名
    file=备份文件.dmp
    log=操作日志.log
    ignore=y

    expdb导出dmp使用impdp恢复,方法如下:

    impdp 目标库用户名/密码@127.0.0.1:1521/ORCLCDB
    remap_schema=源用户名:目标用户名
    directory=dmp文件所在的目录
    dumpfile=备份库文件名.dmp
    logfile=操作日志.log

    不同表空间不同用户恢复表空间命令

    exp导出dmp使用imp恢复,方法如下:

    #全局替换dmp文件中表空间名,减少导出时需transport_tablespace的麻烦
    sed -i "s/源表空间名/目标表空间名/g" 备份库文件名.dmp
    #导入
    imp 目标用户名/密码@127.0.0.1:1521/ORCLCDB
    fromuser=源用户名 touser=目标用户名
    file=备份文件.dmp
    log=操作日志.log
    ignore=y

    expdb导出dmp使用impdp恢复,方法如下:

    #创建备份目录
    mkdir -p /tmp/dbbackup
    #登录sqlplus,创建逻辑目录DB_BACKUP,映射物理目录/tmp/dbbackup
    create or replace directory DB_BACKUP as '/tmp/dbbackup';
    #为备份的用户授权逻辑目录读写权限
    grant read,write on directory DB_BACKUP to 备份的用户名;
    #导入
    impdp 目标库用户名/密码@127.0.0.1:1521/ORCLCDB
    remap_tablespace=源表空间:目标表空间
    remap_schema=源用户名:目标用户名
    directory=DB_BACKUP
    dumpfile=备份库文件名.dmp
    logfile=操作日志.log
  • 相关阅读:
    VUE+Layui 输入框、下拉选择框、复选框、开关、文本域 数据回显
    Optional的应用
    [JavaEE系列] Thread类的基本用法
    【JVM】年轻代进入老年代规整
    Android系统实现多网共存且能独立上外网
    动态规划问题(三)
    --对列--
    基于kafka的日志收集分析平台
    【基础篇】四、SpringBoot整合第三方技术
    【MySQL高级】MySQL的优化
  • 原文地址:https://www.cnblogs.com/hellxz/p/17191752.html