zoukankan      html  css  js  c++  java
  • expdp和impdp管理(逻辑导入导出)

    expdp可以将数据库中的元数据与行数据导出到操作系统的转储文件.
    
    1).使用create directory语句创建目录对象
    
    SQL> create or replace directory dumpdir as '/opt/oracle/dump';
    
    2).使用grant语句为用户授予目录对象的读写权限
    
    SQL> grant read,write on directory dumpdir to jack; -- jack 为用户名
    
    3).查询数据字典视图dba_directories查询数据库所有的目录对象
    
    SQL> select * from dba_directories;
    
    expdp运行方式:
    1. 命令行接口: 在命令行中直接指定参数设置
    2. 参数文件接口: 将参数的设置信息存放到一个参数文件中,在命令行中用 ParFile参数指定参数文件
    3. 交互式命令接口: 通过交互式命令进行导出作业管理.
    
    expdp导出模式:
    1. 全数据库导出: 通过参数full指定,导出整个数据库,需要有datadump_exp_full_database角色
    
    2. 指定模式导出: 通过参数schemas指定,导出指定模式中的所有对象,需要datadump_exp_full_database角色可以导出任意模式,不能导出sys模式的对象
        注意: 作用在表上的触发器,当表所在的模式被导出时,触发器所在的模式不在导出模式列表中,则该触发器不会被导出
    
    3. 指定表空间导出: 通过参数tableSpace指定,导出指定表空间中所有表及其依赖对象的元数据和行数据.
    
    4. 指定表导出: 通过参数tables指定,导出指定模式中的所有表,分区及其依赖对象,如果指定了参数transporTable=always,则只有对象元数据被导出.
                  可以通过复制数据文件来快速移动数据到目标数据库.如果不同版本需要使用RMAN进行操作
    
    5. 传输表空间导出: 通过参数tranSport_tablespaces指定,导出指定表空间中所有表及其依赖对象的元数据,表空间包含的数据文件需要单独进行复制,
                      传输表空间导入的时候需要导入包含表空间元数据的转储文件,并指定相应的数据文件.
    ---------------------------------------------------------------------------------------------
    attach: 导出操作连接到一个作业
    compression: 指明对转储文件中的数据进行压缩
    content: 指定要导出的内容
        content=[all|metadata_only|data_only];默认为all
    
    directory: 指定转储文件和日志文件所在位置的目录对象
    dumpfile: 指定转储文件名称列表
    encryption: 对转储文件中的数据进行加密
    encryption_algorithm:指定加密算法
    encryption_mode:指定生成加密秘钥的方法
    encryption_password: 设置转储文件中加密数据的口令秘密钥
    estimate:指定用于估计导出作业中每个表中数据占用磁盘空间大小的方法
        estimate=[blocks|statistics];默认为blocks
    
    estimate_only:指定估计导出作业占用磁盘空间大小时是否真正进行导出操作
    exclude: 指定导出操作中要排除的对象和对象元数据
        exclude=function exclude=procedure 
        exclude=package  exclude=index: "LIKE 'emp%'"
    
    include: 指定导出操作中要导出的对象类型和对象的元数据
    
    job_name: 指定导出作业的名称
    logfile:  指定导出日志文件名称,默认为export.log
    network_link: 指定网络导出时的目标数据库链接名称
    nologfile: 是否生成导出日志文件,默认为no
    parallel: 指定执行导出作业时最大的并行进程个数,默认为1
    ParFile: 指定参数文件的名称
            parfile=/opt/aa.txt
    
    query: 指定导出操作中select语句中的数据过滤条件
            expdp jack/jack directory=dumpdir dumpfile=exp.dmp
            query='emp:"where dept_id>10 and sal>500"'
    
    reuse_dumpfiles: 指定是否覆盖已经存在的同名转存文件,默认为no
    sample: 指定要导出数据的百分比
    schemas: 指定进行模式导出及模式名称列表
    status: 指定显示导出作业状态的时间间隔,默认值为0,表示操作结束时显示
    
    tablespaces: 指定进行表空间模式导出及表空间名称列表
            expdp jack/jack directory=dumpdir dumpfile=tbs.dmp
            tablespaces=tbs1,tbs2,tbs3
    transport_full_check: 在传输表空间导出模式中指定是否进行导出表空间的对象与非对象之间依赖关系的检查,默认值为N
    
    transport_tablespaces: 指定进行传输表空间模式导出及表空间名称列表
            transport_tablespaces=tbs1
    
    transporTable: 指定导出表,分区以及分区的元数据时是否需要使用transporTable参数;默认为never
            transportable=[always|never]
    
    filesize: 指定转储文件的最大尺寸,默认为0,表示16TB
        filesize=integer[B|KB|MB|GB|TB]
    
    flashback_scn:指定导出操作终止的SCN,即将来数据可以闪回到的SCN位置
        impdp jack/jack directory=dumpdir flashback_scn=992311 network_link=source_db_link
    
    flashback_time: 指定导出操作终止的time,即将来数据可以闪回到的time位置
        impdp jack/jack directory=dumpdir network_link=source_db_link 
        flashback_time="TO_TIMESTAMP('25-08-2000 14:34:00','DD-MM-YY HH24:MI:SS')"
    
    full: 指定是否全数据库导出,包括所有放数据与元数据库
    
    remap_datafile: 将源数据文件名转换为目标数据文件名,用户导入时候需要datapump_imp_full_database角色
        remap_datafile=source_datafile:target_datafile
    
    remap_schema: 将源模式中的所有对象导入目标模式中
        remap_schema=source_schema:target_schema
    
    
    例1:
    expdp 
    jack/jack  
    directory=dumpdir 
    dumpfile=emp.dmp 
    compression=metadata_only  
    content=metadata_only 
    
    例2: 导出指定表
    expdp jack/jack
    directory=dumpdir
    dumpfile=emp.dmp
    logfile=emp_dept.log
    tables=emp,dept
    job_name=emp_dept_job
    parallel=3
    
    例2-1: 通过条件导出指定表
    expdp jack/jack
    directory=dumpdir
    dumpfile=emp.dmp
    logfile=emp.log
    tables=emp
    nologfile=y
    query 'emp:"where dept_id>50 and sal<1000"'
    
    例3: 导出指定模式
    expdp jack/jack
    directory=dumpdir
    dumpfile=jack.dmp
    logfile=jack.log
    schemas=jack 
    job_name=exp_jack_schema
    
    例3: 导出指定表空间
    expdp jack/jack
    directory=dumpdir
    dumpfile=jack.dmp
    logfile=jack.log
    tablespaces=example,users
    
    例4: 导出指定传输表空间,将一个或多个表空间中所有元数据信息导出到转储文件中
    expdp jack/jack
    directory=dumpdir
    dumpfile=jack.dmp
    logfile=jack.log
    transport_tablespaces=example,users 
    transport_full_check=y
    
    例5: 导出数据库,导出所有对象的元数据及行数据导出到转储文件
    expdp jack/jack
    directory=dumpdir
    dumpfile=expfull.dmp
    full=yes
    nologfile=yes
    
    例6: 导出参数,通过指定的参数文件进行导出作业,需要先编辑参数文件
    准备参数文件
    cat jack.txt
        schemas=jack 
        dumpfile=filter.dmp
        directory=dumpdir
        logfile=filter.log                
        include=TABLE:"IN ('EMP','DEPT')"    #指定导出的表
        include=INDEX:"LIKE 'emp%'"          #指定导出的索引
    
    expdp jack/jack 
    parfile=/opt/jack.txt
    
    ####
    impdp导入
    ####
    1. 导入全库: 通过参数full
    2. 导入指定模式: 通过参数schema
    3. 导入指定表: 通过参数tables
    4. 导入指定表空间: 通过参数tablespaces
    5. 导入传输表空间: 通过参数transport_tablespaces,利用network_link指定数据库链接
    
    remap_datafile: 将源数据文件名转换为目标数据文件名,用户导入时候需要datapump_imp_full_database角色
        remap_datafile=source_datafile:target_datafile
    
    remap_schema: 将源模式中的所有对象导入目标模式中
        remap_schema=source_schema:target_schema
    
    remap_table: 允许在导入操作过程中重命名表
        remap_table=[schema.]old_tablename[.partition]:new_tablename
    
    remap_tablespace: 将源表空间所有对象导入目标表空间中
        remap_tablespace=source_tablespace:target_tablespace
    
    remap_datafiles: 创建表空间时是否使用已经存在的数据文件
        reuse_datafiles=[Y|N]
    
    例1: 导入指定模式
    expdp system/oracle 
    schemas=jack 
    directory=dumpdir 
    dumpfile=jack.dmp
    
    例2: 将源库jack模式导入到目标库hr模式
    impdp system/oracle 
    directory=dumpdir 
    dumpfile=hr.dmp
    remap_schema=jack:hr   ##jack为源模式,hr为目标模式
    
    例3: 将源库表空间tbs1与目标库表空间tbs5转换
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=emp.dmp 
    remap_tablespace=tbs1:tbs5
    
    例4:
    impdp jack/jack
    directory=dumpdir 
    dumpfile=expfull.dmp 
    full=yes
    logfile=reuse.log
    reuse_datafiles=yes
    
    schemas: 指定进行模式导入及模式名称列表
        schemas=schema_name[, ...] 默认为当前用户模式
    impdp jack/jack directory=dumpdir schemas=jack logfile=schemas.log dumpfile=exp.dmp
    
    skip_unusable_indexs: 指定导入操作时是否跳过不可使用的索引
        impdp jack/jack directory=dumpdir dumpfile=expfull.dmp logfile=skip.log skip_unusable_indexes=yes
    
    sqlfile: 指定导入操作中要执行的DDL语句写入到一个SQL脚本文件中;SQLFILE=[directory_object:]file_name
        impdp jack/jack directory=dumpdir dumpfile=exp.dmp sqlfile=dpump_dir2:expfull.sql
    
    table_exists_action: 指定导入过程中要创建的表已经存在该如何操作,语法为table_exists_action=[skip|append|truncate|replace],默认为skip
    
    tables: 指定表模式导入及表名称列表,语法tables=[schema_name.]table_name[:partition_name][, ...]
        impdp jack/jack directory=dumpdir dumpfile=expfull.dmp tables=emp,jobs  
    
    tablespaces: 指定进行表空间模式导入及表空间名称列表,tablespaces=tablespace_name[, ...]
        impdp jack/jack directory=dumpdir dumpfile=expfull.dmp tablespaces=tbs1,tbs2,tbs3,tbs4
    
    transform: 指定是否修改创建对象的DDL语句,语法为:transform=transform_name:value[:object_type]
    
    transport_datafiles: 指定在传输表空间导入模式中导入目标数据库的数据文件列表
        impdp jack/jack directory=dumpdir dumpfile=tts.dmp transport_datafiles='/opt/user01.dbf'
    
    transport_full_check: 在传输表空间导入模式中指定是否进行导入表空间中的对象与非导入表空间对象之间依赖关系的检查,默认为NO
    
    transport_tablespaces: 指定进行传输表空间模式导入及表空间名称列表
        impdp jack/jack directory=dumpdir network_link=source_db_link
        transport_tablespaces=tbs6 transport_full_check=no
        transport_datafiles='/opt/tbs6.dbf'
    
    案例:
    
    1. 利用转储文件导入hr模式下的表emp,dept数据
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=emp_dept.dmp 
    tables=emp,dept 
    nologfile=y 
    content=data_only
    
    2. 利用转储文件导入hr模式下的表emp,dept元数据和行数据
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=emp_dept.dmp 
    tables=emp,dept 
    nologfile=y
    
    3. query过滤后导入数据
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=emp_dept.dmp 
    tables=emp,dept 
    nologfile=y
    query='emp: "where dept_id>50 and sal>1000"'
    
    4.利用备份想表中追加数据
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=emp_dept.dmp 
    tables=emp 
    table_exists_action=append
    
    5.将所有数据导入恢复
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=jack.dmp 
    schemas=jack 
    job_name=imp_jack_schema
    
    6.将备份的hr模式对象导入jack模式中
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=hr.dmp 
    logfile=hr.log
    job_name=imp_hr_schema 
    remap_schema=hr:jack 
    
    7.利用备份恢复example,users表空间导入
    impdp jack/jack 
    directory=dumpdir 
    dumpfile=tsp.dmp 
    tablespaces=example,users 
    
    8.传输表空间导入模式
    将表空间users导入数据库链接source_db_link所对应的远程数据库中
    impdp jack/jack 
    directory=dumpdir 
    network_link_source_db_link 
    transport_tablespaces=users 
    transport_full_check=N
    transport_datafiles='/opt/..user01.dbf'
    
    9.数据库导入模式
    impdp jack/jack
    directory=dumpdir 
    dumpfile=expfull.dmp
    full=yes
    nologfile=yes
    
    10.参数文件方式导入
    cat aa.txt
    tables=emp,dept
    directory=dumpdir
    dumpfile=emp_dept.dmp
    parallel=3
    
    impdp jack/jack parfile='/opt/aa.txt'
  • 相关阅读:
    C++界面库(十几种,很全)
    前端框架
    Asp.Net Web Api 接口,拥抱支持跨域访问。
    WEB控件
    MVC之验证
    AJAX跨域调用ASP.NET MVC或者WebAPI服务
    VS生产的编辑方法和编辑窗体
    DDD(领域驱动设计)应对具体业务场景,Domain Model(领域模型)到底如何设计?
    Redis简介与简单安装
    Cocos2d-x 3.1.1开发环境
  • 原文地址:https://www.cnblogs.com/vmsysjack/p/12512700.html
Copyright © 2011-2022 走看看