• 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
  • 相关阅读:
    Android 14 系统启动流程 之 启动init进程、启动Zygote进程
    PM 的个人核心竞争力
    Netty网络框架学习笔记-15(ChannelPipeline 调度 handler分析)
    禁止运行游戏的程序开发
    渗透测试-文件上传/下载/包含
    VMware中安装centos无网络,配置教程
    OKHttp请求上传文件
    Rigetti、IonQ公布2022年Q2财报后,股票大涨!
    elasticsearch之使用正则表达式自定义分词逻辑
    compose——侧边栏
  • 原文地址:https://www.cnblogs.com/hellxz/p/17191752.html