• 100天精通Oracle-实战系列(第21天)Oracle 数据泵常用参数和命令


    Oracle 数据泵常用参数和命令

    ->返回总目录<-

    Oracle 数据泵(expdp/impdp)是从 Oracle 10G 开始推出的新功能,作为 exp/imp 的替代方案,明显更新、更快和更灵活。在日常工作中,数据泵通常可用于数据迁移、同步工具初始化(ogg/dsg/shareplex)、数据备份等等。

    视频点我跳转直接观看视频教程!

    📢 本文用到的所有安装介质和 PDF 版都会打包上传到百度网盘供大家下载,前提是大家先订阅本专栏,然后添加我的微信:Lucifer-4622

    资料点我跳转关注我的公众号,回复:100天实战,即可领取课程全套资料包!

    一、数据泵参数

    数据泵作为 Oracle 数据库的主要功能,每个版本都在迭代更新,功能和参数越来越多。不同于原始的 exp/imp工具,数据泵需要在服务器端运行,使用服务器进程创建 Job 来执行导出导入任务。

    参考官方文档:Parameters Available in Data Pump Export Command-Line Mode

    1、expdp 常用参数

    ## expdp 语法格式
    expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
    
    ## 最简单示例
    expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
    
    ## attach(连接到作业,进入交互模式)
    attach=[schema_name.]job_name
    
    ## cluster(RAC 导出需要设置为 no,否则将会报ORA-31693等错误,原因是其他节点对导出目录无权限)
    cluster=[yes|no]
    
    ## compression(压缩)
    compression=[all|data_only|metadata_only|none]
    
    ## content(需要导出的数据)
    content=[all|data_only|metadata_only]
    
    ## directory(导出路径)
    directory=directory_object
    
    ## dumpfile(导出的文件名)
    dumpfile=[directory_object:]file_name[,...]
    
    ## exclude/include(排除/包括特定的对象类型)
    exclude=object_type[:name_clause][,...]
    include=object_type[:name_clause][,...]
    
    ## filesize(导出每个 dump 文件的最大限制)
    filesize=integer[b|kb|mb|gb|tb]
    
    ## full(导出所有数据和元数据,要执行完全导出,需要具有datapump_exp_full_database角色)
    full=[yes|no]
    
    ## logfile(导出的日志文件名)
    logfile=[directory_object:]file_name
    
    ## network_link(连接到源数据库进行导出)
    network_link=source_database_link
    
    ## parallel(并行度,默认为1,该值应小于等于 dump 文件数量)
    parallel=integer
    
    ## parfile(导出参数文件名称)
    parfile=[directory_path]file_name
    
    ## query(按查询条件导出)
    query=[schema.][table_name:] query_clause
    
    ## schemas(导出用户)
    schemas=schema_name[,...]
    
    ## tables(导出表)
    tables=[schema_name.]table_name[:partition_name][,...]
    
    ## views_as_tables(将视图导出成表)
    views_as_tables=[schema_name.]view_name.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    2、impdp 常用参数

    ## impdp 语法格式
    impdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
    
    ## 最简单示例
    impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
    
    ## attach(连接到作业,进入交互模式)
    attach=[schema_name.]job_name
    
    ## cluster(RAC 导入需要设置为 no,否则将会报ORA-31693等错误,原因是其他节点对导出目录无权限)
    cluster=[yes|no]
    
    ## content(需要导入的数据)
    content=[all|data_only|metadata_only]
    
    ## directory(导入路径)
    directory=directory_object
    
    ## dumpfile(导入的文件名)
    dumpfile=[directory_object:]file_name[,...]
    
    ## exclude/include(排除/包括特定的对象类型)
    exclude=object_type[:name_clause][,...]
    include=object_type[:name_clause][,...]
    
    ## full(导入所有数据和元数据,要执行完全导入,需要具有datapump_exp_full_database角色)
    full=[yes|no]
    
    ## logfile(导入的日志文件名)
    logfile=[directory_object:]file_name
    
    ## network_link(连接到源数据库进行导入)
    network_link=source_database_link
    
    ## parallel(并行度,默认为1,该值应小于等于 dump 文件数量)
    parallel=integer
    
    ## parfile(导入参数文件名称)
    parfile=[directory_path]file_name
    
    ## query(按查询条件导入)
    query=[schema.][table_name:] query_clause
    
    ## remap_schema(允许导入期间重命名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
    
    ## schemas(导入用户)
    schemas=schema_name[,...]
    
    ## table_exists_action(导入数据处理方式)
    table_exists_action=[SKIP | APPEND | TRUNCATE | REPLACE]
    
    ## tables(导入表)
    tables=[schema_name.]table_name[:partition_name][,...]
    
    ## views_as_tables(将视图导入成表)
    views_as_tables=[schema_name.]view_name.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    二、常用命令

    下面我们以 scott 用户为例,如果没有 scott 用户,可以执行以下命令创建:

    sqlplus / as sysdba @?/rdbms/admin/utlsampl.sql
    
    • 1

    1、expdp 命令

    ## 导出一张表
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log tables=scott.emp
    
    ## 导出多张表
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log tables=\(scott.emp,scott.dept\)
    
    ## 导出一个用户(导出这个用户的所有对象)
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log schemas=scott
    
    ## 导出多个用户
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log schemas=\(scott,hr\)
    
    ## 导出整个数据库(sys、ordsys、mdsys的用户数据不会被导出)
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log full=yes
    
    ## 并行导出
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp%U.dmp logfile=expdp.log schemas=scott parallel=5
    
    ## 导出用户元数据(包含表定义、存储过程、函数等等)
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log schemas=scott content=metadata_only
    
    ## 导出用户存储过程
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log schemas=scott include=procedure
    
    ## 导出用户函数和视图
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log schemas=scott include=\(function,view\)
    
    ## 导出一个用户,但不包括索引
    expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=expdp.log schemas=scott exclude=index
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    2、impdp 命令

    ## 导入dmp文件中的所有数据
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log full=yes
    
    ## 导入一张表
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log tables=scott.emp
    
    ## 导入多张表
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log tables=\(scott.emp,scott.dept\)
    
    ## 导入一个用户
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log schemas=scott
    
    ## 导入多个用户
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log schemas=\(scott,hr\)
    
    ## 并行导入
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp%U.dmp logfile=impdp.log parallel=5
    
    ## 导入元数据(包含表定义、存储过程、函数等等)
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log content=metadata_only
    
    ## 导入存储过程
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log include=procedure
    
    ## 导入函数和视图
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log include=\(function,view\)
    
    ## 导入数据,但不包括索引
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log exclude=index
    
    ## 重命名表名导入
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log remap_table=scott.emp:emp1
    
    ## 重命名schema名导入
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log remap_schema=scott:tim
    
    ## 重命名表空间名导入
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log remap_tablespace=users:apptbs
    
    ## 导入时,忽略所有对象的段属性,这样导入时对象都创建在目标数据库用户默认的表空间上
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log transform=segment_attributes:n
    
    ## 将dmp文件的ddl语句导入到一个文件,不导入数据库
    impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp.dmp logfile=impdp.log sqlfile=import.sql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    数据泵相比 exp/imp 参数和功能均改变很多,可以通过执行 expdp help=yimpdp help=y 来查看!

    可参考官方文档:Oracle Data Pump


    💻 视频教程

    如此保姆级的教程文章如果还不会的话,那就再给大家来一个视频教程吧!觉得不错的点个关注,三连投币一波!

    100天精通Oracle-实战系列(第21天)Oracle 数据泵常用参数和命令

    创作不易,还请多多支持,点点订阅,鼓励一下博主!


    附:返回总目录的传送门如下

    ->返回总目录<-

    👇 关注我的 公众号,回复 100天实战,即可领取课程全套资料包!
  • 相关阅读:
    Bash学习笔记
    全网最牛自动化测试框架系列之pytest(4)-测试用例执行顺序
    RestTemplate踩坑 之 ContentType 自动添加字符集
    Java后端使用POST请求向mysql中插入Json数据的问题
    【备忘录】配置 Docker 守护程序以使用代理服务器
    PostGIS 扩展创建失败原因调查
    Elasticsearch8 常用查询
    菜鸡的秋招升级打怪之旅
    [PAT练级笔记] 08 Basic Level 1010
    C++特色家政服务管理系统
  • 原文地址:https://blog.csdn.net/m0_50546016/article/details/125263841