Oracle数据泵技术的常见操作有哪些?

分类:编程技术 时间:2024-02-20 15:46 浏览:0 评论:0
0
本文主要介绍“Oracle数据泵技术的常见操作有哪些”。在日常操作中,相信很多人都对Oracle数据泵技术的常见操作有哪些存在疑问。小编查阅了各种资料,整理出了简单好用的操作方法,希望能帮助您解答“Oracle数据泵技术的常用操作有哪些?”的疑惑!接下来就请跟随小编一起来学习吧!

1. 为什么选择数据泵?

Data Pump是Oracle 10g引入的一项新技术。现在已经不是什么新技术了,11g已经结束了它的标准支持期。 技术更新

从10g版本开始,数据泵技术随着新版本不断完善,对新版本Oracle数据库有更强的适应性。 BUG更少

数据泵可以使用直接路径等功能以及并行性,对于大量数据的迁移有更好的性能,可以减少大量的导入导出时间。 性能更好

exp/imp无法导出空表,而且由于从10g开始就停止更新,以后版本引入的新对象不支持导出,比如自定义对象。 更强大

1.1。 与exp/imp的主要区别

Ø exp/imp是客户端工具,可以在客户端使用;数据泵是服务器端工具,只能在服务器端使用。

Ø exp/imp不能导出空表;数据泵可以。

Ø exp/imp和Data Pump导出的文件不能互换使用。

2. 基本概念

data Pump的命令行命令是expdp/impdp,它是一个数据库到数据库移动数据的工具

目录是Oracle的一种对象类型。我t可以被认为是一个指向物理存储路径的指针,用于指定Data Pump导出和导入文件所使用的路径。

模式是数据库对象的集合。一般情况下,一个用户对应一个schema。

3. 基本步骤

3.1 创建目录

SQL> 创建目录 dump_dir as '/home/oracle/dump';

dump_dir是目录名;可以根据实际情况定义,不重复就这样。如果系统中已经存在,则可以直接使用;

/home/oracle/dump 是操作系统的物理路径;您必须确保该路径确实存在。并有足够的空间存放备份文件;

3.2授权

< tr class="firstRow">

SQL> 授予对目录 dump_dir 的读、写权限给 public;

dump_dir是上面创建的目录的名称;

public表示该目录是公开的;也可以授权给某个用户;

3.3执行导入导出

$ expdp system /dbmanager 目录=dump_dir full=Y dumpfile=full_20230101.dmp logfile=full_expdp_20230101.log

$ impdp system / dbmanager目录=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log

system是导出命令所使用的用户;

dbmanager为系统用户的密码;

dump_dir是上面创建的目录的名称;

full=Y 表示全库导出;

dumpfile/logfile可以根据实际情况命名;命名需要可以记录备份内容、时间等基本信息;如果名称重复,则会覆盖

4. 常用方法

4.1 expdp 导出

##导出表格,例如:

expdp system/dbmanagerdirectory=dump_dir dumpfile=emp_20230101.dmp logfile=emp_expdp_20230101.logtables=scott.emp

##导出多个表,例如:

expdp system/ dbmanager 目录=dump_dir dumpfile=empdept_20230101.dmp logfile=empdept_expdp_20230101.log table=\(scott.emp,scott.dept\)

##导出一个用户(导出该用户的所有对象),例如:

expdp system/dbmanager directory=dump_dir dumpfile=scott_20230101.dmp logfile=scott_expdp_20230101 .log schemas=scott

##导出乘数e 用户,例如:

expdp system/dbmanager directory=dump_dir dumpfile=scotthr_20230101.dmp logfile=scotthr_expdp_20230101.log schemas=\(scott,hr\)

##导出整个数据库(sys用户数据不会导出),例如:

expdp system/dbmanager directory=dump_dir dumpfile=full_20230101 .dmp logfile=full_expdp_20230101.log full=y

##并行导出,例如:

expdp system/dbmanager directory=dump_dir dumpfile=scott_20230101_%U.dmp logfile=scott_expdp_20230101.log schemas=scott parallel=8

< p>##导出用户元数据(包括表定义、存储过程、函数等),例如:

expdp system/dbmanager directory= dump_dir dumpfile=scott_20230101.dmp logfile=scott_expdp_20230101.log schemas=scott content=metadata_only

##导出用户存储过程,示例:

expdp system/dbmanager directory=dump_dir dumpfile=scott_20230101.dmp logfile=scott_expdp_20230101.log schemas=scott include=procedure

##导出用户函数和视图 ,例如:

expdp system/dbmanager directory=dump_dir dumpfile=scott_20230101.dmp logfile=scott_expdp_20230101.log schemas=scott include=\(function,view\)

# #导出用户,但排除索引,例如:

expdp system/dbmanager directory=dump_dir dumpfile=scott_20230101.dmp logfile=scott_expdp_20230101.log schemas= scott except=index

4.2 impdp导入

##导入dmp文件中的所有数据,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log full=y

##导入表格,例如:

impdp system/dbmanager目录=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log table=scott.emp

##导入多个表,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log rows=\(scott.emp,scott.dept\)< /p>

##导入用户,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile= full_impdp_20230101.log schemas=scott

# #导入多个用户,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log schemas=\(scott,hr \)

##并行导入,例如:

impdp system/dbmanager 目录=dump_dir dumpfile=full_20230101_%U. dmp logfile=full_impdp_20230101.log parallel=5

##导入元数据(包括表定义、存储过程、函数等),例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log content=metadata_only

##导入存储过程,示例:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101。 log include=procedure

##导入函数和视图,示例:

impdp system/dbmanager directory=dump_dir dumpfile= full_20230101.dmp logfile=full_impdp_20230101.log include=\(function,view\)

##导入数据,但排除索引,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log except=index

< p>##重命名表名导入,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log remap_table=scott.emp:emp1

##重命名架构名称导入,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log remap_schema=scott:tim

##重命名表空间名称导入< /strong>,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile=full_impdp_20230101.log remap_tablespace=users:pams

##dmp文件的ddl语句导入到文件中,而不是导入到数据库,例如:

impdp system/dbmanager directory=dump_dir dumpfile=full_20230101.dmp logfile =full_impdp_20230101.log sqlfile=import.sql

5. 常用参数

5.1 expdp参数说明

attach =[schema_name.]job_name

描述:无默认值。连接到作业并进入交互模式。

##导出模式,以下五个参数互斥:

full=[ Y | N ]

描述:导出所有数据和元数据。要执行完整导出,需要 datapump_exp_full_database 角色。

schemas=schema_name[,...]

描述:导出用户。

tables=[schema_name.]table_name[:partition_name][,...]

描述:导出表。

tablespaces=tablespace_name[,...]

描述:导出表空间。

transport_tablespaces=tablespace_name[,...]

描述:导出可移动表空间。

##过滤条件,以下三个参数互斥:

query=[schema.][table_name: ] query_clause

说明:根据查询条件导出。

排除=object_type[:name_clause][,...]

描述iption:排除特定对象类型。

include=object_type[:name_clause][,...]

描述:包含特定的对象类型。

##其他参数:

directory=directory_object

说明:导出路径。

dumpfile=file_name[,...]

描述:导出的文件名。

logfile=file_name

描述:导出的日志文件名。

内容=[ 全部 |仅数据 | [metadata_only]

描述:指定要导出的数据。

parallel=integer

描述:并行度,该值应小于或等于dmp文件的数量,或者可以使用替换变量'%U' '转储文件='。在RAC环境中,当并行度大于1时,注意该目录应该是共享目录。

压缩=[全部|仅数据 | 仅元数据|无]

说明:压缩。

parfile=[目录路径]文件名

描述:指定导出参数文件的名称。

filesize=integer[b|kb|mb|gb|tb]

描述:指定每个 dmp 文件的最大大小。如果该参数小于要导出的数据大小,则会报错ORA-39095。

5.2 impdp参数说明

attach=job_name

描述:连接到作业并进入交互模式。

导入模式下,以下五个参数是互斥的。

完整=[ Y | N]

描述:导入dmp文件的所有数据和元数据。

schemas=schema_name[,...]

描述:导入用户。

tables=[schema_name.]table_name[:partition_name][,...]

描述:导入表。

tablespaces=tablespace_name[,...]

描述:导入表空间。

transport_tablespaces=tablespace_name[,...]

描述:导入可移动表空间。

过滤条件,以下三个参数互斥:

query=[schema.][table_name:]query_clause

说明:根据查询条件导入。

exclude=object_type[:name_clause][,...]

描述:排除特定对象类型。

include=object_type[:name_clause][,...]

描述:包含特定的对象类型。

其他参数:

directory=directory_object

说明:导入路径。

dumpfile=file_name[,...]

描述:导入的文件名。

logfile=file_name

描述:导入的日志文件名。

内容=[ 全部 |仅数据 | [metadata_only]

描述:指定要导入的数据。

parallel=integer

描述:并行度,该值应小于等于dmp文件的个数,也可以使用替换变量'%U' 代表'转储文件='。

parfile=[directory_path]file_name

描述:指定导入参数文件的名称。

REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename

描述:允许在导入过程中重命名表名。

REMAP_SCHEMA=source_schema:target_schema

描述:允许在导入过程中重命名架构名称。

REMAP_TABLESPACE=source_tablespace:target_tablespace

描述:允许在导入过程中重命名表空间名称。

SQLFILE=[directory_object:]file_name

描述:根据其他参数将所有SQL DDL写入指定文件。

TABLE_EXISTS_ACTION=[ 跳过 | 附加 |截断| REPLACE]

说明:默认:跳过(如果指定content=data_only,则默认为append)< /p>

6. 笔记

6.1目录相关SQL语句:

##查看目录

从 dba_directories 中选择 *;

##创建目录< /strong>

创建目录dump_dir为'/home/oracle/tmp';

##目录授权

授予对目录 my_dir 的读、写权限给 public;

6.2 expdp导出

1.衍生数据库用户需要对directory_object有正确的读写权限。

2. Directory_object 指定的路径必须已存在于操作系统中。

3. oracle用户对directory_object指定的路径具有读写权限。

4.系统用户导出用户时,创建用户并授予系统权限的元数据离子也将被输出。普通用户无法导出这些元数据。

6.3 impdp导入

1. expdp导出的文件无法使用imp导入,只能通过impdp导入数据库。

2.如果导入时遇到已有的对象,默认会跳过该对象,继续导入其他对象。

3.导入时确认dmp文件和目标数据库的t。ablespace和schema是否对应。

4.导入dmp文件时,应确定导出dmp文件时的命令,以便数据顺利导入。

6.4 交互模式

输入交互操作导入和导出作业。

如何进入交互模式e:

1。导入导出命令行执行过程中按Ctrl + c

2. expdp Attach=jobname 或 impdp Attach=jobnam

可以通过查看导入导出日志看到作业名,也可以通过查询 dba_datapump_jobs 找到作业名。

6.5 常见错误

《Oracle数据泵技术的常用操作有哪些?》的学习到此结束。希望能够解答大家的疑惑。理论与实践相结合,能够更好的帮助大家学习,去尝试吧!如果您想继续了解更多相关知识,请继续关注网站。小编会继续努力,给大家带来更多实用的文章!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Oracle数据泵技术的常见操作有哪些?

用户评论

未创建系统目录,错误:

ORA-39002 : 无效操作

ORA-39070: 无法打开日志文件。

ORA-29283: 无效文件操作

ORA-06512: at "SYS. UTL_FILE",第536行

ORA-29283:无效的文件操作

impdp导入exp导出的dmp文件,错误:

ORA-39000:错误的转储文件规范

ORA-39143:转储文件“/orabak/pams_20230101.dmp”可能是原始导出转储文件

如果导出的数据库版本高于导入的数据版本rsion,导出时需要添加参数version=要导入的数据库版本。否则,报告错误:

ORA-39001:无效的参数值

ORA-39000:错误的转储文件规范

ORA-31640 :无法打开转储文件“/orabak/pams_20230101.dmp”进行读取

ORA-27037:无法获取文件状态