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

Posted Lucifer三思而后行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.

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.

二、常用命令

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

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

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

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

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

可参考官方文档:Oracle Data Pump


💻 视频教程

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

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

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


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

->返回总目录<-

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

以上是关于100天精通Oracle-实战系列(第21天)Oracle 数据泵常用参数和命令的主要内容,如果未能解决你的问题,请参考以下文章

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

100天精通Oracle-实战系列(第1天)保姆级 VirtualBox 虚拟机安装 Linux 系统

100天精通Oracle-实战系列(第11天)Oracle RMAN 基础配置和常用命令

100天精通Oracle-实战系列(第25天)Oracle 数据泵并行和压缩

100天精通Oracle-实战系列(第25天)Oracle 数据泵并行和压缩

100天精通Oracle-实战系列(第25天)Oracle 数据泵并行和压缩