zoukankan      html  css  js  c++  java
  • Oracle10g数据泵EXPDP和IMPDP备份与恢复数据

    Oracle10g数据泵EXPDPIMPDP备份与恢复数据

    一、数据库备份前准备工作

    新建备份DIRECTORY目录,并授权给用户

    步骤:

    1.登录sqlplus

    账户名:ptemp 密码:000000 主机字符串:EMPDB

    SqlPlus执行语句:conn ptemp/000000@EMPDB as sysdba

    提示信息: 登录成功

    2.创建DIRECTORY备份目录

    SqlPlus执行语句:create DIRECTORY bakupKF_dir as ‘D:akupKF’

    提示信息: 创建目录成功

    3.把DIRECTORY目录授权给用户

    SqlPlus执行语句:GRANT READ, WRITE ON DIRECTORY bakupKF_dir TO ptemp;

    提示信息: 授权成功

    二、EXPDP备份数据(含表结构)

    点击:菜单-运行-cmd

    执行以下语句:

    1.备份整个数据库的表及表定义

    Expdp ptemp/powersmart@EMPDBTEST DIRECTORY=bakupCS_dir DUMPFILE=ptemp830.dmp 

    注:则备份整个数据库的表定义及表数据,默认CONTENT=ALL,所以导出的是整个数据库表定义及表数据

    2.备份整个数据库表的数据(无表结构定义)

    Expdp ptemp/000000@EMPDB DIRECTORY=bakupKF_dir DUMPFILE=ptemp813data.dmp CONTENT=DATA_ONLY

    注意:当设置CONTENTALL (默认值)时,将导出对象定义及其所有数据.DATA_ONLY,只导出对象数据,METADATA_ONLY,只导出对象定义

    3.备份指定表的数据及表定义(可多选多个表)

    Expdp ptemp/000000@EMPDB DIRECTORY=bakupKF_dir DUMPFILE=ptemp813tab.dmp TABLES=TEST_LR,TEST_LR2,TEST_LR3……

    注意:TABLES=TEST_LR,TEST_LR2,TEST_LR3  多个表之间用“,”连接即可

    三、IMPDP还原数据

    1.还原整个数据库的表及表定义

    impdp ptemp/000000@EMPDB DIRECTORY=bakupKF_dir DUMPFILE=ptemp813.dmp TABLE_EXISTS_ACTION=REPLACE

    注:TABBLE_EXISTS_ACTION={SKIP (默认)| APPEND |TRUNCATE | REPLACE }

    当设置该选项为SKIP,导入作业会跳过已存在表处理下一个对象;当设置为APPEND,会追加数据,TRUNCATE,导入作业会截断表,然后为其追加新数据;当设置为REPLACE,导入作业会删除已存在表,重建表并追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项

    2.只还原数据(截断表还原方式)

    Impdp ptemp/000000@EMPDB DIRECTORY=bakupKF_dir DUMPFILE=ptemp813data.dmp CONTENT=DATA_ONLY TABLE_EXISTS_ACTION=REPLACE

    注:CONTENT=DATA_ONLY还原的时候只有当表里数据为空时,才能导入成功,否则会因“违反唯一约束/主键”而导致数据还原失败。解决此问题的办法可以用1的方式,备份数据库表数据和表定义方式,对已存在的表进行重建!

    3.截断表还原数据

    Impdp ptemp/000000@EMPDB DIRECTORY=bakupKF_dir DUMPFILE=ptemp813data.dmp TABLE_EXISTS_ACTION=TRUNCATE

    注:TABLE_EXISTS_ACTION=TRUNCATE还原的时候会把表定义与表数据分离开,即只还原数据,不还原表定义。但是,在主从表还原时,由于主键关系,主表的数据将恢复失败,但是从表的数据能成功。

    解决全库数据还原的办法,可以采用本文“1.还原整个数据库的表及表定义”来解决。

    4.还原指定表

    impdp ptemp/000000@EMPDB DIRECTORY=bakupKF_dir DUMPFILE=ptemp813tab.dmp TABLES=TEST_LR,TEST_LR2,TEST_LR3 TABLE_EXISTS_ACTION=REPLACE

    更多参考资料:http://blog.csdn.net/jojo52013145/article/details/7966047

    四、数据库全库数据及表定义实践

    1. 业务场景描述

     某公司开发部现有两个oracle数据库,分别是开发库EMPDB、测试库EMPDBTEST,现在需要将测试库的数据同步到开发库上,需要适用oracle数据泵实现。

    2. 数据库实例信息

    2.1 EMPDB实例登录信息

    2.2 EMPDBTEST实例登录信息

    3. 实现步骤

    3.1  创建备份目录

    创建备份目录的目的是要告诉数据库实例,哪一个目录是实例专有的目录,并且需要将该目录读、写权限授权给数据库实例用户,在这里,创建目录的意思就等于把某个目录合法化,即起到登记注册的目的。所以,创建备份目录是至关重要的一步。

    创建目录过程如下:

    ①为数据库实例EMPDBTEST创建目录,如下图所示:

    执行语句如下(按顺序):

    Ⅰ conn ptemp/powersmart@EMPDBTEST as sysdba   (以管理员身份登录)

    提示信息:已连接

    Ⅱ create DIRECTORY bakupCS_dir as ‘d:ptemp_bakup_CS’  (创建目录)

    提示信息:目录创建成功

    注意:此处D盘下必须要有d:ptemp_bakup_CS该目录,如没有,创建即可

    Ⅲ grant read,write on directory bakupCS_dir to ptemp

    提示信息:授权成功

    ②为数据库实例EMPDBTEST创建目录,过程如上。

    执行语句如下(按顺序):

    Ⅰ conn ptemp/000000@EMPDB as sysdba

    Ⅱ create DIRECTORY bakupKF_dir as ‘d:ptemp_bakup_KF’ 

    Ⅲ grant read,write on directory bakupKF_dir to ptemp

    以上操作完成之后,D盘应该有如下两个文件夹:

    3.2 备份测试库数据

    EMPDBTEST的全库数据及表定义 备份到D盘下ptemp_bakup_CS文件夹内,备份文件名:PTEMP830.DMP

    操作过程:开始-运行-cmd

    然后在cmd执行如下语句:

    Expdp ptemp/powersmart@EMPDBTEST  DIRECTORY =bakupCS_dir DUMPFILE=ptemp830.dmp

    执行过程如图:

     

    导出成功,ptemp_bakup_CS文件夹内将会生成PTEMP830.DMP文件

    3.3 将数据同步到开发库

    ptemp_bakup_CS文件夹下的PTEMP830.DMP文件拷贝到ptemp_bakup_KF文件夹内同步数据。

    执行语句如下:

    Impdp ptemp/000000@EMPDB DIRECTORY=bakupKF_dir DUMPFILE=ptemp830.dmp TABLE_EXISTS_ACTION=REPLACE

    执行过程如下:

    导入的过程需要耗费大量时间,大概5-10分钟,如计算机屏幕出现静止不动,属正常,请耐心等待!

  • 相关阅读:
    Linux学习笔记(二):实战-根据微服务端口号关闭进程
    Linux学习笔记(一):文件操作命令
    算法-Java组合
    Springboot学习笔记(六)-配置化注入
    Springboot学习笔记(五)-条件化注入
    Springboot学习笔记(四)-配置相关
    Springboot学习笔记(三)-常用注入组件方式
    CentOS7安装MySQL
    扫二维码下载apk并统计被扫描次数(及微信屏蔽下载解决方案)
    Java jacob调用打印机打印word文档
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3297367.html
Copyright © 2011-2022 走看看