Oracle数据泵的使用

时间:2021-11-09 08:14:40

原文地址:http://blog.163.com/guanrui_111/blog/static/3452484720120410553261/

Oracle数据泵的使用  

使用数据泵导出数据

1.创建一个操作目录

SQL> create directorydump_dir as 'e:\dump';

注意同时需要使用操作系统命令在硬盘上创建这个物理目录。

2.使用以下命令创建一个导出文件目录

scott用户操作dump_dir目录的权限,

SQL>grant read,writeon directory my_dir to scott;

3.使用命令expdp导出数据(可以按照用户模式导出、按照表、按照表空间导出和全库导出)

C:\>expdp scott/tigerdirectory=dump_dir dumpfile=20090517scotttab.dmp tables=dept,emp

常见错误:

 如果没有在指定的硬盘上建立物理文件,则会出现如下错误提示信息:解决的方法是现在硬盘上创建指定的物理文件目录,然后在执行expdp程序。Oracle 中的 create directory dump_dir as'e:\dump';命令只是在逻辑上创建了一个Oracle能够识别的目录和硬盘上的一个物理目录之间的联系,并不能真正的在硬盘上创建物理目录。

使用数据泵导入数据

impdp scott/tiger directory=dump_dir dumpfile=20080601.dmp tables=dept,emp

 

对Oracle10g中的数据泵导出数据的分析

    Oracle10g中的数据泵只能用于服务器端,而不能用于客户端,它可以导出表、方案、表空间和整个数据库。

1.导出表

C:\>expdp scott/tiger directory=dump_dir dumpfile=20080601.dmptables=dept,emp

2.导出方案

导出方案将方案的所有数据库对象和数据库表导出到一个文件中。

C:\>expdp scott/tigerdirectory=my_dir dumpfile=20090517scottschema.dmp  schemas=scott

3.导出表空间

expdp system/sysadmindirectory=dump_dir dumpfile=tablespace.dmp tablespaces=users

4.导出整个数据库

expdp system/sysadmin directory=dump_dir dumpfile=full.dmp full=y

 

对Oracle10g中的数据泵导入数据的分析

1.导入表

impdp scott/tiger directory=dump_dir dumpfile=dumptab.dmp tables=dept,emp

2.导入方案

一般只能导入自己的方案,如果想导入其他方案,必须具有EXP_FULL_DATABASE或者DBA权限。

impdp scott/tiger directory=dump_dir dumpfile=dumptab.dmp schemas=scott

3.导入表空间

impdp system/sysadmin directory=dump_dir dumpfile=tablespace.dmptablespaces=users

4.导入整个数据库

impdp system/sysadmin directory=dump_dir dumpfile=full.dmp full=y

 

使用Oracle10g的数据泵可以移动表空间

使用impdp和expdp可以实现在不同的数据库之间移动表空间。在Oracle10g以前,只能在同一个操作系统平台之间移动表空间。在Oracle10g之后,不仅可以在同一个操作系统平台之间移动表空间,还可以在不同的操作系统之间移动表空间

 

要移动表空间必须满足如下条件:

1.原数据库和目标数据库必须有相同的数据库字符集和国家字符集

2.不能移动到具有同名表空间的目标数据库中。如果出现同名,只能使用ALTER TABLESPACE RENAME命令更改源数据库或者目标数据库的表空间名称。

3.不能移动SYSTEM或者SYS用户对象所在的表空间。

4.要将表空间在不同的操作系统之间移动,必须将初始化参数COMPATIBLE参数设置为10.0以上。因为Oracle10g以前的版本不支持在不同操作系统之间移动表空间。

5.要移动的表空间集合必须满足自包含,可以使用DBMS_TTS的过程TRANSPORT_SET_CHECK检查是否自包含,然后在临时表transprot_set_violations内查询检查结果。