zoukankan      html  css  js  c++  java
  • Oracle 数据泵导入导出(expdp/impdp)【不定时更新】

    --参考http://www.lanstonwu.com/using-datapump-export-and-import-data/

    --参考http://www.cnblogs.com/wbzhao/archive/2012/04/06/2434702.html

    一、前期准备

    1.以SSH远程登录服务器,找到指定目录下创建数据泵中间文件(.DMP)存放的目录:

    /*rmdir /home/oracle/pump_dir  --删除空目录*/

    2.以管理员sys创建逻辑目录

    create or replace directory pump_dir as '/home/oracle/pump_dir';

    3.给user用户赋予在指定目录的操作权限,最好以sys等管理员授权

    grant read,write on directory pump_dir to user;

    4.查看管理理员目录

    select * from dba_directories;

    /*drop directory pump_dir;--删除目录*/

    二、导出数据

    --------------------- !!! 大写的分割线 !!! ---------------------

    使用 '/as sysdba' 模式的前提是设置操作系统环境变量ORACLE_SID

    export ORACLE_SID=instance_name

    --------------------------------------------------------------

    1.全库导出(full)

    a.expdp parfile=expdp_full_20170525.txt

      --expdp_full_20170525.txt

    b.expdp sysdba/pwd directory=DUMP_DIR dumpfile=expdp_full_20170525.dmp logfile=expdp_full_20170525.log full=y content=METADATA_ONLY

    2.用户模式导出(schemas)

    3.表模式导出(tables)

    4.限定条件导出(query)

    三、导入数据

    /*导入数据时要确认导入的用户是否存在,是否有权限访问表空间、是否具有读写directory的权限*/

    1.指定用户导入,只导入结构(content=METADATA_ONLY);若目标库user1,user2已存在,则源库和目标库user1,user2的表空间要一致,不然会报错;

    impdp parfile=impdp_20170525.txt

    --参数文件impdp_20170525.txt

    2.将用户1的数据导入用户2 (以此类推,还可以重定义表[remap_table]、表空间[remap_tablespace]导入)

    impdp parfile=impdp_20170525.txt

    --参数文件impdp_20170525.txt

    --/*对于后面的user2,目标库中可以有也可以没有,如果没有系统会自动建立这个用户*/这个暂时还没有试验过,有空可以试试

    3.将用户数据导入用户默认表空间

    四、导入远程数据库数据

    /*由于物理空间不足或数据量太大传输不便,可以在目标端使用db_link连接,导入远程数据库数据*/

    1.源端用户赋权限;

    grant datapump_exp_full_database to USER1;

    2.目标库用户赋权限;

    grant datapump_imp_full_database to USER2;

    3.目标库创建连接远程目标数据库DBLINK

    CREATE PUBLIC DATABASE LINK TO_TEST

    CONNECT TO USER1 IDENTIFIED BY password

    USING '(DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.x.x.x)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = db_name)
        )
      )';

    4.导入数据

    impdp USER1/password NETWORK_LINK=TO_TEST REMAP_SCHEMA=USER1:USER2 TABLE_EXISTS_ACTION=TRUNCATE TABLES=USER1.TABLE_NAMEL  DIRECTORY=IMPDP_DIR LOGFILE=USER1.TABLE_NAME.log   CONTENT=DATA_ONLY  PARALLEL=4

    五、参数介绍

    1.USERID:命令行的第一个参数

    2.DIRECTORY:转储文件和日志文件存放的目录

    3.DUMPFILE:目标转储文件

    4.LOGFILE:日志文件

    5.FULL:指定全库导出

       FULL={Y | N}

    6.CONTENT:指定要导出的数据,默认为ALL

       CONTENT={ALL|DATA_ONLY|METADATA_ONLY}

       ALL:导出对象定义及所有数据

       DATA_ONLY:只导出对象数据

       METADATA_ONLY:只导出对象定义

    7.SCHEMAS:指定执行方案模式导出,默认为当前用户模式

    8.TABLES:指定表模式导出

    9.TABLESPACES:按表空间模式导出

    10.PARALLEL:并行,指定执行导出操作的并行进程个数,默认值为1

    11.INCLUDE:指定导出时要包含的对象类型及相关对象

         INCLUDE = object_type[:name_clause] [,… ]

         eg:INCLUDE=TABLE:"IN(SELECT TABLE_NAME FROM CSB_BFB)"

    12.EXCLUDE:指定导出执行时要排除的对象类型及相关对象

    13.NETWORK_LINK:指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项

    14.TABLE_EXISTS_ACTION={skip|append|truncate|replace}

         skip:如果已存在表,则跳过并处理下一个对象;

         append:为表增加数据;truncate是截断表,然后为其增加新数据;

         replace:删除已存在表,重新建表并追加数据;

  • 相关阅读:
    linux 下安装mongodb
    python 多线程, 多进程, 协程
    5.rabbitmq 主题
    4.rabbitmq 路由
    e.target与e.currentTarget对比
    使用ffmpeg下载m3u8流媒体
    本机添加多个git仓库账号
    IE hack 条件语句
    IE8 兼容 getElementsByClassName
    IE 下 log 调试的一点不同
  • 原文地址:https://www.cnblogs.com/linjiao/p/6902979.html
Copyright © 2011-2022 走看看