及然后导出,将EXP出来的数量IMP进差异的表空间

经常有人会问:原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的用户的默认表空间,为什么结果还是IMP到USERS表空间中了呢。

 

本文内容

  • 数据泵与传统的 IMP/EXP 工具的区别
  • 开始使用 datapump 导出
  • 创建数据库目录
  • 再次尝试导出
  • 导入另一个数据库
  • 网络导入
  • 从 PL/SQL 调用
  • Oracle 11g Release 1 (11.1) Data Pump 导出和导入概述
  • Oracle 11g Release 1 (11.1) Data Pump 导出和导入模式
  • 兴發国际娱乐手机登录,参考资料
  • 修改记录

导出/导入是逻辑备份,用于数据迁移,不能跟冷备份和热备份相比。

从 Oracle 10 g 开始,Oracle 引入了一个新的导入和导出工具数据泵(Oracle
Data pump),是一个服务,基于大容量数据迁移的结构,用来取代传统的
IMP/EXP 工具。数据泵与传统的导入/导出工具完全不同。传统的 IMP/EXP 是
Oracle 最古老的两个命令行工具,但不支持所有的 Oracle 10g 和 11g
的功能。这个新的工具名为 expdp 和 impdp。

关于此问题,作如下解释:

虽然是按照用户的方式导出的,但导入之前,还是必须要有相同的用户存在,删除用户以后,是无法进行导入的
–重新创建回zlm用户 SQL> create user zlm identified by zlm;

数据泵与传统的 IMP/EXP 工具的区别


  • 传统的 IMP/EXP
    工具,都作为客户端程序运行,如果在导出过程中发生网络中断或客户端程序异常,都会导致导出操作失败;而数据泵主要工作在服务器端,通过新的
    API 来建立和管理,主要由 DBMS_DATAPUMP
    来完成。数据泵完全成为一个客户端应用,IMPDP/EXPDP
    执行的命令实际上都是在调用服务器端的 API
    在执行操作,一旦一个任务被调度或执行,客户端就可以退出连接,任务会在服务端继续运行。
  • 传统的 IMP/EXP
    工具,是单线程操作,这在很多情况下成为一个瓶颈;而数据泵多线程的,建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行IO服务器进行。
  • 此外,数据泵还有其他优势。其实,它们的差异都归于结构的差异。传统的
    IMP/EXP 完成是在客户端进行,而数据泵是在调用服务端的 API。

Oracle并没有提供什么参数来指定要导入哪个表空间,数据默认将导入到原本导出时数据所在的表空间中,但是我们可以通过以下的方法来实现导入到不同的表空间。

尽管zlm用户的默认表空间是USERS,但是用imp导入后的表还是会去找原来的表空间进行恢复,即“ZLM”,那么我们把原来的表空间也删除掉,会怎么样呢?
–删除ZLM表空间后测试恢复情况 SQL> drop tablespace zlm including
contents;

 

1.在IMP时候使用INDEXFILE参数

注意,使用including
contents只是把可控制文件中相应的信息删除,物理上还是存在于OS的磁盘上的,如果要连同文件一起删除,那么就要使用including
contents and datafiles,那么就连渣渣也不剩了

开始用 datapump 导出


$ expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

 

Export: Release 10.2.0.1.0 - 64bit Production on Friday, 31 March,  2006 11:36:07

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

ORA-39002: invalid operation

ORA-39070: Unable to open the log file.

ORA-39087: directory name DMPDIR is invalid

说明:

  • “dmpdir” 为导出目录;
  • “scott.dmp” 为导出的 datadump 文件;
  • scott 用户下的表在默认表空间 USERS 和临时表空间 TEMP
    下。所以这个命令将 scott 用户把自己的表(对象)导出来;
  • 因为,Oracle
    已经有这两个表空间,所以,直接导入即可。但是,如果是自己创建的表空间,就先要创建这个表空间,然后再导入。

导出失败了!因为,我们需要先创建目录!

 

当给此参数指定了某一文件名,IMP的时候所有的index将不会直接导入到表空间中,而是在指定的文件中生成创建index的脚本。
然后用文本编辑器打开此文件,直接编辑脚本中的storage参数,修改为想要导入的表空间名称。
然后重新执行IMP,使用INDEXS=n参数将除Index之外的Objects导入。
最后进入SQL*PLUS,直接运行刚才编辑的脚本,生成索引。
该方法适用于将index以及constraints导入指定的表空间。
2.改变目的用户的默认表空间
这就是上面说的经常有人提问的方法。但是上述的问题之所以没有成功,是因为缺少了下面的几步。
首先,收回目的用户的”UNLIMITED TABLESPACE”权限: revoke unlimited
tablespace from username;
其次,取消目的用户在原数据导出表空间中的配额,这样才能迫使IMP把数据导入到用户的默认表空间中去。
然后,将希望导入的表空间设为目的用户的默认表空间,并添加配额。

当我们把原来zlm用户导出时的表空间ZLM删除以后再倒入,此时会发现imp会把用户导到数据库缺省的USERS表空间上去,基于这种原理,当我们做逻辑导入导出的时候,尽量保持源端与目标端有相同的环境,当然还包括字符集(这里没有做测试)等。否则在导入数据后,可能会产生意外地状况,比方说源库的表空间是很大的,但是由于在目标库中没有创建相应的表空间,默认放到了USERS表空间中,环境和源库产生了不同,可能导入的时候就直接报错了。当然了,字符集更是一个要注意的问题。

创建数据库目录


执行如下命令,创建一个数据库导出目录。该目录必须指向一个同一个服务器的有效目录作为数据库:

SQL> CREATE DIRECTORY dmpdir AS '/opt/oracle';

Directory created.

 

SQL> GRANT read, write ON DIRECTORY dmpdir TO scott;

Grant succeeded.

说明:

  • “dmpdir” 为导出目录,”/opt/oracle”
    为数据库路径(也可以操作系统的绝对路径,如”d:\db_backup”);
  • 导出目录授权。让 scott 用户对该目录可读写。这样,scott
    用户才能正常访问该目录,将数据库内容和导出的日志文件放在这里。

备注:Oracle 从 Oracle 10g R2 开始,引入了一个称为 “DATA_PUMP_DIR”
的默认目录,如下所示:

SQL> SELECT directory_path FROM dba_directories WHERE directory_name = 'DATA_PUMP_DIR';

 

DIRECTORY_PATH

--------------------------------------------------------------------------------

/app/oracle/product/10.2.0/rdbms/log/

 

最后,执行IMP。 3.使用TOAD
TOAD是强大的Oracle数据库管理软件,是Quest出品的第三方软件,我们可以使用其中的Rebuild
Multi Objects工具来实现将多个Object转移到指定的表空间。
于是我们可以不管三七二十一,先IMP,然后再用TOAD作事后的修改。
关于TOAD的使用,此处不作详细解释。

exp/imp通常在Oracle
8i/9i等早期的版本中用得较多,到了10g以后基本全面被数据库泵(Data
Pump)取代,即expdp/impdp,虽然说已经是过时的技术,但作为DBA也不能完全不了解,因为和数据泵还是有异曲同工之处的,只是数据泵的功能更强大了。本篇实验采用了一个最不实用的方法来演示exp/imp的使用方法,即:交互方式,该方式可支配的参数非常少,如,不能指定log,feedback等参数,也不能指定按条件进行导出,且每次使用起来都要一步步确认非常多的步骤,非常繁琐,不推荐使用,即便要使用,也推荐采用另外两种方式:1.命令行模式、2.参数文件模式(推荐)。

再次尝试导出


$ expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

 

Export: Release 10.2.0.1.0 - 64bit Production on Friday, 31 March, 2006 11:41:02

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Starting "SCOTT"."SYS_EXPORT_SCHEMA_01":  scott/********  DIRECTORY=dmpdir DUMPFILE=scott.dmp

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 175.2 MB

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/COMMENT

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Processing object type SCHEMA_EXPORT/JOB

. . exported "SCOTT"."BIGEMP"                            145.2 MB 3670016 rows

. . exported "SCOTT"."DEPT"                              5.656 KB       4 rows

. . exported "SCOTT"."EMP"                               7.820 KB      14 rows

. . exported "SCOTT"."ORD_CHARGE_TAB"                    5.296 KB       2 rows

. . exported "SCOTT"."SALGRADE"                          5.585 KB       5 rows

. . exported "SCOTT"."BONUS"                                 0 KB       0 rows

. . exported "SCOTT"."NEWOBJECT1_T"                          0 KB       0 rows

. . exported "SCOTT"."T1"                                    0 KB       0 rows

Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:

  /app/oracle/scott.dmp

Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 11:44:50

 

 

导入到另一个数据库


$ impdp system/oracle DIRECTORY=dmpdir DUMPFILE=scott.dmp

 

Import: Release 10.2.0.1.0 - 64bit Production on Friday, 31 March, 2006 12:00:59

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Master table "SYSTEM"."SYS_IMPORT_FULL_02" successfully loaded/unloaded

Starting "SYSTEM"."SYS_IMPORT_FULL_02":  system/******** DIRECTORY=dmpdir DUMPFILE=scott.dmp

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

. . imported "SCOTT"."BIGEMP"                            145.2 MB 3670016 rows

. . imported "SCOTT"."DEPT"                              5.656 KB       4 rows

. . imported "SCOTT"."EMP"                               7.820 KB      14 rows

. . imported "SCOTT"."ORD_CHARGE_TAB"                    5.296 KB       2 rows

. . imported "SCOTT"."SALGRADE"                          5.585 KB       5 rows

. . imported "SCOTT"."BONUS"                                 0 KB       0 rows

. . imported "SCOTT"."NEWOBJECT1_T"                          0 KB       0 rows

. . imported "SCOTT"."T1"                                    0 KB       0 rows

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Processing object type SCHEMA_EXPORT/JOB

Job "SYSTEM"."SYS_IMPORT_FULL_02" successfully completed at 12:02:22

备注:

  • expdp 和 impdp 命令都是操作系统下执行;
  • 而创建导出目录,并为其授权,都是 SQL PLUS 下执行。
  • 以上例子对于刚开始的你已经足够。更多信息,请参看 Oracle
    工具指南。输入下面命令可以列出该命令的所有参数。

    $ expdp help=yes

    $ impdp help=yes

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注