在oracle10g之前,导入和导出(imp/exp)都作为客户端程序运行,导出的数据由数据库实例读出,通过网络连接传输到导出客户程序,然后写到磁盘上。所有数据在整个导出进程下通过单线程操作,如果再导出过程中发生网络中断或客户端程序异常,都会导致导出操作失败。
在oracle10g中,推出了服务器端的实用程序----数据泵(data pump)。它的所有工作都由数据库实例来完成,数据库可以并行来处理这些工作。通过impdp/expdp执行的命令实际上都是在调用server端的API在执行操作,一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server端继续执行。如果一个7小时的导出任务在运行了6小时后因为磁盘空间不够而失败,那么也不用从头开始重新启动该任务,此时可以连接到这个失败的任务,增加一个或多个新的转储(dmp)文件,从失败的地方重新启动,这样只需1小时就可以完成任务了。
源平台
OS:redhat linux as4 DB:oracle 10.2.0.4 instance_name:linux10g |
目的平台
OS:windows2003 DB:oracle 10.2.0.1 instance_name:ora11g |
源平台redhat linux as4 + oracle 10.2.0.4
1:首先在操作系统层面创建一个目录/oradata/expdir,然后修改该目录的用户为oracle,并授予该目录读写权限
[oracle@VM-10 ~]$ sqlplus / as sysdba
SQL> create or replace directory expdir as '/oradata/expdir';
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------------------------------------------------------------
SYS EXPDIR /oradata/expdir
SQL> grant read,write on directory EXPDIR to scott;
2:查看scott用户所在的表空间
SQL> select username,default_tablespace from dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ -------------
SCOTT USERS
可以看到scott用户默认的表空间是USERS,也就是说scott用户下的所有对象都属于USERS表空间
3:在源平台导出数据
[oracle@VM-10 expdir]$ expdp scott/tiger directory=expdir dumpfile=scott_20131008_%U.dmp parallel=4 version=10.2.0.1 logfile=scott1008.log
Export: Release 10.2.0.4.0 - 64bit Production on Wednesday, 09 October, 2013 11:22:37
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SCOTT"."SYS_EXPORT_SCHEMA_01": scott/******** directory=expdir dumpfile=scott_20131008_%U.dmp parallel=4 version=10.2.0.1 logfile=scott1008.log
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 192 KB
. . exported "SCOTT"."DEPT" 5.648 KB 4 rows
. . exported "SCOTT"."EMP" 7.812 KB 14 rows
. . exported "SCOTT"."SALGRADE" 5.578 KB 5 rows
. . exported "SCOTT"."BONUS" 0 KB 0 rows
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
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/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:
/oradata/expdir/scott_20131008_01.dmp
/oradata/expdir/scott_20131008_02.dmp
Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 11:22:42
注意:这里面加了参数version=10.2.0.1,表示导出的dmp文件将要导入到版本为10.2.0.1的目的库中
然后将导出的dmp文件上传到目的库所在的导入目录中(expdir)
目的平台 windows2003 +oracle 10.2.0.1
1:创建新的表空间
C:\>sqlplus / as sysdba
SQL> create tablespace trans datafile 'C:\oradata\wn10g\trans.dbf' size 20m;
表空间已创建。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
TRANS
IDX_TBS
TEST
2:查看导入目录
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
--------------------------------------------- -----------------------------------
SYS EXPDIR C:\expdir
3:创建新的用户trans01,指定该用户的默认表空间为TRANS,并授权
SQL> create user trans01 identified by trans01 default tablespace TRANS;
SQL> grant dba to trans01;
SQL> grant read,write on directory expdir to trans01;
4:在目的库中导入dmp文件
将原用户scott的数据导入到trans01用户下,存储的表空间从users变更到test,同时开启4个并行程序运行
C:\>impdp trans01/trans01 dumpfile=scott_20131008_01.dmp,scott_20131008_02.dmp directory=expdir remap_schema=scott:trans01 remap_tablespace=users:test content=all parallel=4
Import: Release 10.2.0.1.0 - Production on星期三, 09 10月, 2013 11:54:44
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已成功加载/卸载了主表"TRANS01"."SYS_IMPORT_FULL_01"
启动"TRANS01"."SYS_IMPORT_FULL_01": trans01/******** dumpfile=scott_20131008_0
1.dmp,scott_20131008_02.dmp directory=expdir remap_schema=scott:trans01 remap_ta
blespace=users:test content=all parallel=4
处理对象类型SCHEMA_EXPORT/USER
ORA-31684:对象类型USER:"TRANS01"已存在
处理对象类型SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型SCHEMA_EXPORT/ROLE_GRANT
处理对象类型SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型SCHEMA_EXPORT/TABLE/TABLE
处理对象类型SCHEMA_EXPORT/TABLE/TABLE_DATA
. .导入了"TRANS01"."DEPT" 5.648 KB 4行
. .导入了"TRANS01"."EMP" 7.812 KB 14行
. .导入了"TRANS01"."SALGRADE" 5.578 KB 5行
. .导入了"TRANS01"."BONUS" 0 KB 0行
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
处理对象类型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作业"TRANS01"."SYS_IMPORT_FULL_01"已经完成,但是有1个错误(于11:54:57完成)
5:验证导入的结果是否正确
C:\>sqlplus trans01/trans01
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
SQL> select index_name,table_owner,table_name,tablespace_name from user_indexes;
INDEX_NAME TABLE_OWNER TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------ -----------------------------------------------
PK_DEPT TRANS01 DEPT TEST
PK_EMP TRANS01 EMP TEST
SQL> select count(*) from emp;
COUNT(*)
-----------------------
14
可以看到新导入的表及表上的所有都在test表空间,导入成功
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24862808/viewspace-774037/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24862808/viewspace-774037/