ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle数据泵方式更换数据默认表空间.

oracle数据泵方式更换数据默认表空间.

原创 Linux操作系统 作者:sxitsxit 时间:2013-10-10 09:28:43 1 删除 编辑

 oracle10g之前,导入和导出(imp/exp)都作为客户端程序运行,导出的数据由数据库实例读出,通过网络连接传输到导出客户程序,然后写到磁盘上。所有数据在整个导出进程下通过单线程操作,如果再导出过程中发生网络中断或客户端程序异常,都会导致导出操作失败。

 

oracle10g中,推出了服务器端的实用程序----数据泵(data pump)。它的所有工作都由数据库实例来完成,数据库可以并行来处理这些工作。通过impdp/expdp执行的命令实际上都是在调用server端的API在执行操作,一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server端继续执行。如果一个7小时的导出任务在运行了6小时后因为磁盘空间不够而失败,那么也不用从头开始重新启动该任务,此时可以连接到这个失败的任务,增加一个或多个新的转储(dmp)文件,从失败的地方重新启动,这样只需1小时就可以完成任务了。

 

 

源平台

 

OSredhat linux as4

DBoracle 10.2.0.4

instance_namelinux10g

 

 

目的平台

 

OSwindows2003

DBoracle 10.2.0.1

instance_nameora11g

 

 

源平台 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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-04-14

  • 博文量
    98
  • 访问量
    297798