EXPDP/IMPDP与EXP/IMP在不同用户和表空间之间迁移数据的实现方法

1. EXPDP/IMPDP方式

SQL> create user zlm identified by zlm;

User created.

SQL> grant connect,resource to zlm;

Grant succeeded.

SQL> create tablespace ts_zlm datafile ‘/u01/app/oracle/oradata/ora10g/zlm01.dbf‘ size 100M reuse;

Tablespace created.

SQL> alter user zlm default tablespace ts_zlm;

User altered.

SQL> select username,default_tablespace from dba_users where username=‘ZLM‘;

USERNAME                       DEFAULT_TABLESPACE

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

ZLM                            TS_ZLM

SQL> col name for a50

SQL> select name,bytes/1024/1024 from v$datafile where name like ‘%users01.dbf‘;

NAME                                               BYTES/1024/1024

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

/u01/app/oracle/oradata/ora10g/users01.dbf                      
5

SQL> set lin 120 pages 120

SQL> col username for a8

SQL> col name for a45

SQL> select a.username,a.default_tablespace,b.name from dba_users a,v$datafile b,v$tablespace c where a.default_tablespace=c.name and b.ts#=c.ts# and a.username=‘SCOTT‘;

USERNAME DEFAULT_TABLESPACE             NAME

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

SCOTT    USERS                          /u01/app/oracle/oradata/ora10g/users01.dbf

SQL> alter database datafile ‘/u01/app/oracle/oradata/ora10g/users01.dbf‘ resize 100M;

Database altered.

SQL> select name,bytes/1024/1024 from v$datafile where name like ‘%users01.dbf‘;

NAME                                          BYTES/1024/1024

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

/u01/app/oracle/oradata/ora10g/users01.dbf                100

SQL> select owner,directory_name from dba_directories;

OWNER                          DIRECTORY_NAME

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

SYS                            DATA_PUMP_DIR

SYS                            SUBDIR

SYS                            XMLDIR

SYS                            MEDIA_DIR

SYS                            LOG_FILE_DIR

SYS                            DATA_FILE_DIR

SYS                            WORK_DIR

SYS                            ADMIN_DIR

SQL> create directory zlm_pump as ‘/u01/expdp‘;

Directory created.

SQL> !mkdir /u01/expdp

SQL> alter user scott identified by tiger account unlock;

User altered.

SQL> grant connect,resource to scott;

Grant succeeded.

SQL> grant read,write on directory zlm_pump to scott;

Grant succeeded.

SQL> conn scott/tiger

Connected.

SQL> create table zlm1 as select * from dba_objects;

Table created.

SQL> insert into zlm1 select * from dba_objects;

50318 rows created.

SQL> /

50318 rows created.

SQL> select count(*) from zlm1;

COUNT(*)

----------

150954

SQL> select table_name from user_tables where tablespace_name=‘USERS‘;

TABLE_NAME

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

ZLM1

SALGRADE

BONUS

EMP

DEPT

[[email protected] ~]$ expdp scott/tiger parallel=2 directory=zlm_pump dumpfile=scott01.dmp,scott02.dmp tablespaces=users

Export: Release 10.2.0.1.0 - Production on Sunday, 31 August, 2014 14:35:29

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

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

With the Partitioning, OLAP and Data Mining options

Starting "SCOTT"."SYS_EXPORT_TABLESPACE_01":  scott/******** parallel=2 directory=zlm_pump dumpfile=scott01.dmp,scott02.dmp tablespaces=users

Estimate in progress using BLOCKS method...--可以通过estimate=block(默认值)指定,还有一个是statistic

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 17.18 MB

Processing object type TABLE_EXPORT/TABLE/TABLE

. . exported "SCOTT"."ZLM1"                              14.06 MB  150954 rows

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

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

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

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

Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

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

Processing object type TABLE_EXPORT/TABLE/COMMENT

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

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

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

Dump file set for SCOTT.SYS_EXPORT_TABLESPACE_01 is:

/u01/expdp/scott01.dmp

/u01/expdp/scott02.dmp

Job "SCOTT"."SYS_EXPORT_TABLESPACE_01" successfully completed at 14:36:10

[[email protected] ~]$ impdp zlm/zlm parallel=2 remap_schema=scott:zlm remap_tablespace=users:ts_zlm directory=zlm_pump dumpfile=scott01.dmp,scott02.dmp

Import: Release 10.2.0.1.0 - Production on Sunday, 31 August, 2014 14:41:30

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

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

With the Partitioning, OLAP and Data Mining options

Master table "ZLM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded

Starting "ZLM"."SYS_IMPORT_FULL_01":  zlm/******** parallel=2 remap_schema=scott:zlm remap_tablespace=users:ts_zlm directory=zlm_pump dumpfile=scott01.dmp,scott02.dmp

Processing object type TABLE_EXPORT/TABLE/TABLE

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

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

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

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

. . imported "ZLM"."BONUS"                                   0 KB       0 rows

. . imported "ZLM"."ZLM1"                                14.06 MB  150954 rows

Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

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

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Job "ZLM"."SYS_IMPORT_FULL_01" successfully completed at 14:41:43

[[email protected] ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Aug 31 14:43:12 2014

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

SQL> conn zlm/zlm

Connected.

SQL> select table_name from user_tables where tablespace_name=‘TS_ZLM‘;

TABLE_NAME

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

ZLM1

SALGRADE

BONUS

EMP

DEPT

SQL> select object_name from user_objects;

OBJECT_NAME

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

DEPT

EMP

BONUS

SALGRADE

ZLM1

PK_DEPT

PK_EMP

SCHEMA SCOTT的表空间USERS中的全部对象已经被导入到SCHEMA ZLM的表空间,包括表和索引

2. EXP/IMP方式

SQL> conn / as sysdba

Connected.

SQL> drop user zlm cascade;

User dropped.

SQL> create user zlm identified by zlm;

User created.

SQL> grant connect,resource to zlm;

Grant succeeded.

SQL> alter user zlm default tablespace ts_zlm;

User altered.

SQL> conn zlm/zlm

Connected.

SQL> select * from cat;

no rows selected

SQL> !

[[email protected] ~]$ exp scott/tiger owner=scott file=/u01/scott01.dmp

Export: Release 10.2.0.1.0 - Production on Sun Aug 31 15:42:00 2014

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

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

With the Partitioning, OLAP and Data Mining options

Export done in US7ASCII character set and AL16UTF16 NCHAR character set

server uses ZHS16GBK character set (possible charset conversion)

. exporting pre-schema procedural objects and actions

. exporting foreign function library names for user SCOTT

. exporting PUBLIC type synonyms

. exporting private type synonyms

. exporting object type definitions for user SCOTT

About to export SCOTT‘s objects ...

. exporting database links

. exporting sequence numbers

. exporting cluster definitions

. about to export SCOTT‘s tables via Conventional Path ...

. . exporting table                          BONUS          0 rows exported

EXP-00091: Exporting questionable statistics.

. . exporting table                           DEPT          4 rows exported

EXP-00091: Exporting questionable statistics.

EXP-00091: Exporting questionable statistics.

. . exporting table                            EMP         14 rows exported

EXP-00091: Exporting questionable statistics.

EXP-00091: Exporting questionable statistics.

. . exporting table                       SALGRADE          5 rows exported

EXP-00091: Exporting questionable statistics.

. . exporting table                           ZLM1     150954 rows exported

. exporting synonyms

. exporting views

. exporting stored procedures

. exporting operators

. exporting referential integrity constraints

. exporting triggers

. exporting indextypes

. exporting bitmap, functional and extensible indexes

. exporting posttables actions

. exporting materialized views

. exporting snapshot logs

. exporting job queues

. exporting refresh groups and children

. exporting dimensions

. exporting post-schema procedural objects and actions

. exporting statistics

Export terminated successfully with warnings.

[[email protected] ~]$ imp zlm/zlm fromuser=scott touser=zlm file=/u01/exp/scott01.dmp

Import: Release 10.2.0.1.0 - Production on Sun Aug 31 15:43:01 2014

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

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

With the Partitioning, OLAP and Data Mining options

IMP-00002: failed to open /u01/exp/scott01.dmp for read   --路径指定错了

Import file: expdat.dmp > /u01/scott01.dmp

Export file created by EXPORT:V10.02.01 via conventional path

Warning: the objects were exported by SCOTT, not by you

import done in US7ASCII character set and AL16UTF16 NCHAR character set

import server uses ZHS16GBK character set (possible charset conversion)

. . importing table                        "BONUS"          0 rows imported

. . importing table                         "DEPT"          4 rows imported

. . importing table                          "EMP"         14 rows imported

. . importing table                     "SALGRADE"          5 rows imported

. . importing table                         "ZLM1"     150954 rows imported

About to enable constraints...

Import terminated successfully with warnings.

[[email protected] ~]$ exit

SQL> col object_name for a15

SQL> select object_name,object_type from user_objects;

OBJECT_NAME     OBJECT_TYPE

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

BONUS           TABLE

DEPT            TABLE

PK_DEPT         INDEX

EMP             TABLE

PK_EMP          INDEX

SALGRADE        TABLE

ZLM1            TABLE

SQL> select table_name,tablespace_name from user_tables;

TABLE_NAME                     TABLESPACE_NAME

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

BONUS                          USERS

DEPT                           USERS

EMP                            USERS

SALGRADE                       USERS

ZLM1                           USERS

注意,用imp导入后的对象,都是存放在exp导出时的表空间的,如果要迁移到别的表空间,就要使用alter table move tablespace来实现,先通过下面的SQL拼接语句来获得批量move的语句:

SQL> select ‘alter table ‘||table_name||‘ MOVE TABLESPACE ts_zlm;‘ from user_tables;

‘ALTERTABLE‘||TABLE_NAME||‘MOVETABLESPACETS_ZLM;‘

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

alter table BONUS MOVE TABLESPACE ts_zlm;

alter table DEPT MOVE TABLESPACE ts_zlm;

alter table EMP MOVE TABLESPACE ts_zlm;

alter table SALGRADE MOVE TABLESPACE ts_zlm;

alter table ZLM1 MOVE TABLESPACE ts_zlm;

SQL> select ‘ALTER INDEX ‘ ||index_name || ‘ REBUILD TABLESPACE ts_zlm;‘ from user_indexes;

‘ALTERINDEX‘||INDEX_NAME||‘REBUILDTABLESPACETS_ZLM;‘

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

ALTER INDEX PK_EMP REBUILD TABLESPACE ts_zlm;

ALTER INDEX PK_DEPT REBUILD TABLESPACE ts_zlm;

SQL> select table_name,tablespace_name from user_tables;

TABLE_NAME                     TABLESPACE_NAME

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

SALGRADE                       TS_ZLM

EMP                            TS_ZLM

ZLM1                           TS_ZLM

DEPT                           TS_ZLM

BONUS                          TS_ZLM

SQL> select index_name,tablespace_name from user_indexes;

INDEX_NAME                     TABLESPACE_NAME

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

PK_EMP                         TS_ZLM

PK_DEPT                        TS_ZLM

可以看到,zlm用户imp导入的数据库对象已经全部迁移到TS_ZLM表空间去了

总结:

EXPDP/IPMDP只能在server上运行,其运行效率完全取决于磁盘I/O,而EXP/IMP不仅可以运行在server上,也可以运行在client上,所以除了磁盘I/O的制约因素,还有网络方面的因素。

EXPDP/IMPDP比EXP/IMP性能有很大的提高,其中影响最大的就是paralle,通常设置为CPU的个数,通过该参数可以并行导出,大大提高导出速度,而EXP/IMP是没有这个功能的,最多也就只有一个DIRECT=Y,使导出不用经过SELECT到SGA的BUFFER中,提高的速度是有限的,注意他们之间的语法也有不小的区别,参数不可互相替代。

EXPDP/IMPDP可以通过remap_schema和remap_tablespace直接实现不同用户和表空间之间的数据迁移;而EXP/IMP则稍微麻烦一点,需要ALTER TABLE xxx MOVE TABLESPACE xxx/ALTER INDEX xxx REBUILD TABLESPACE xxx方式来实现。move相当于把表再重建一次,可以修改storage参数(如initial、pctfree、pctincrease等),还可以move到另外的表空间,如果不指定表空间,则在原来的表空间中move,因此做move操作时,目标表空间需要保证有这个表同样大小的剩余空间,整个操作相当于exp/imp(从表空间A导出到表空间B),move完表后要重建索引。

基于以上几种原因,现在做数据逻辑迁移都是用EXPDP/IMPDP而很少再使用EXP/IMP了。

时间: 2024-12-24 19:51:43

EXPDP/IMPDP与EXP/IMP在不同用户和表空间之间迁移数据的实现方法的相关文章

[转载]expdp\impdp及exp\imp

expdp\impdp及exp\imp 数据泵文件 expdp介绍 EXPDP命令行选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:Expdp scott/tiger ATTACH=scott.export_job 2. CON

expdp\impdp及exp\imp

数据泵文件 expdp介绍 EXPDP命令行选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:Expdp scott/tiger ATTACH=scott.export_job 2. CONTENT该选项用于指定要导出的内容.默认

oracle数据库 expdp/impdp 和 exp/imp

--EXPDP导出,需要系统用户权限,一般不使用--sqlplus--1.创建dmp导出逻辑目录 create directory 目录名 as '目录路径' create directory expdp_dmp as 'D:/expdp_dmp'; --2.查看当前创建的所有dmp导出目录 (验证看是否创建成功) select * from dba_directories select * from dba_directories; --3.登录system用户,为创建的目录赋权限 grant

Oracle 用户、表空间、授权、备份、导入等操作相关

一.基础操作 闲来无事,整理oracle数据库相关操作,以后备用..... ps: satp 为用户   satp_data 为表空间 1 1.删除表空间 2 DROP TABLESPACE satp_data INCLUDING CONTENTS AND DATAFILES; 3 4 2.删除用户 5 drop user satp cascade; 6 7 3.创建表空间 --此命令里面 'F:\app....' 此为表空间存储文件位置 8 9 CREATE TABLESPACE SATP_D

orcale数据库学习---Orcale创建用户和表空间的方法

win+R进入“运行”,键入“cmd”回车,打开命令提示符窗口: C:\Users\asministration>sqlplus --->(回车) SQL*Plus:Release 11.2.0.1.0 Production on 星期五 6月 22 19:46:17 2018Copyright (c) 1982, 2010, Oracle. All rights reserved. 请输入用户名: *****(安装oracle时候的用户名)--->(回车)输入口令:****(安装ora

oracle用户和表空间

oracle中有表空间的概念.一个系统中要创建oracle数据库,首先需要创建一个用户,然后给用户分配表空间,表空间存储的就是表等基础元素.如果不显式地分配表空间的话,就会给用户默认上USERS这个表空间.分配上表空间后,这个用户下的表就存在这个表空间下. 1,创建表空间 create TABLESPACE test_space DATAFILE 'd:\oracle_test_data\test.dbf' size 100M; 表空间可以看作是服务器硬盘上的一个文件.创建表空间时,这个目录必须

创建用户及表空间

Oracle 11.2.0.1 1. 创建新的用户默认表空间DCSOPEN_TBS: 注: (1) 这里设置初始数据文件大小是200M,AUTOEXTEND属性默认自动增长,每次申请新的表空间时会分配32M,最多分配1024M. (2) 这里未使用EXTENT MANAGEMENT LOCAL(可选),但默认是区本地管理模式(EXTENT_MANAGEMENT),区尺寸分配为AUTOALLOCATE(ALLOCATION_TYPE为SYSTEM),段空间管理为自动AUTO(SEGMENT_SPA

oracle 用户、表空间的建立、删除和扩充

create user mcc identified by manager; 这里注意密码不要用单引号扩起来. drop  user  mcc  cascade ;直接删掉用户 create user mcc identified by manager default tablespace mcc01 temporary tablespace tmp;创建用户并制定默认表空间. create tablespace mcc01 datafile '/data/gps01.dbf' size 200

Oracle 11g常用管理命令(用户、表空间、权限)

PS:下面是Oracle 11g最常用的基本管理命令,包括创建用户.表空间,权限分配等.以下命令本人都验证操作过,并加上了本人的小结与说明. 1.启动oracle数据库: 从root切换到oracle用户进入: su - oracle 进入sqlplus环境,nolog参数表示不登录: sqlplus /nolog 以管理员模式登录: sqlplus / as sysdba 启动数据库 startup; 停止数据库 shutdown immediate 远程连接数据库 sqlplus /nolo