0
点赞
收藏
分享

微信扫一扫

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


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


一、数据泵参数

数据泵作为 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=y​​​ 和 ​​impdp help=y​​ 来查看!

可参考官方文档:​​Oracle Data Pump​​


举报

相关推荐

0 条评论