ITPub博客

首页 > Linux操作系统 > Linux操作系统 > EXPDP/IMPDP 数据泵表空间传输

EXPDP/IMPDP 数据泵表空间传输

原创 Linux操作系统 作者:keungyu 时间:2013-09-17 15:29:17 0 删除 编辑

数据泵表空间传输

检测表空间支持的操作系统以及字节顺序

如果是夸平台的进行表空间传输,需要检查2个平台的是否在oracle的支持列表中,而且他们的字节顺序(ENDIAN_FORMAT)要一致,不然要进行转换(oracle 10g以上才支持)

SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM. ORDER BY PLATFORM_ID;

 

PLATFORM_ID PLATFORM_NAME               ENDIAN_FORMAT

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

          1 Solaris[tm] OE (32-bit)               Big

          2 Solaris[tm] OE (64-bit)               Big

          3 HP-UX (64-bit)                      Big

          4 HP-UX IA (64-bit)                    Big

          5 HP Tru64 UNIX                      Little

          6 AIX-Based Systems (64-bit)            Big

          7 Microsoft Windows IA (32-bit)         Little

          8 Microsoft Windows IA (64-bit)         Little

          9 IBM zSeries Based Linux              Big

         10 Linux IA (32-bit)                     Little

         11 Linux IA (64-bit)                     Little

         12 Microsoft Windows x86 64-bit          Little

         13 Linux x86 64-bit                      Little

         15 HP Open VMS                       Little

         16 Apple Mac OS                       Big

         17 Solaris Operating System (x86)          Little

         18 IBM Power Based Linux                Big

         19 HP IA Open VMS                      Little

         20 Solaris Operating System (x86-64)        Little

         21 Apple Mac OS (x86-64)                 Little

 

20 rows selected

 

检查要传输表空间的自包含

2.1表空间的自包含有2种标准

A.非严格方式:检查要传输表空间的对象是否有引用其他表空间的对象

B.严格方式:(1)检查要传输表空间的对象是否有引用其他表空间的对象

                                (2)检查要传输表空间的对象是否被其他表空间引用

 

2.2 使用DBMS_TTS.TRANSPORT_SET_CHECK检查表空间自包含性

语法:DBMS_TTS.TRANSPORT_SET_CHECK(

                   Ts_list                                   IN CLOB,

                   Incl_constraints                IN BOOLEAN DEFAULT FALSE,

                   Full_check                           IN BOOLEAN DEFAULT FALSE);

其中:

ts_list是要检查的表空间列表,有多个的话,中间用逗号隔开

incl_constraints:是否检查约束,默认为否

full_check:是否执行严格自包含方式的检查,默认为否

 

例如:

DBMS_TTS.TRANSPORT_SET_CHECK(‘MYTEST’,TRUE);--进行非严格方式的检查

DBMS_TTS.TRANSPORT_SET_CHECK(‘MYTEST’,TRUE,TRUE); ---进行严格方式的检查

 

2.3 使用视图TRANSPORT_SET_VIOLATIONS检查结果

如果检查的结果是有违反规则的话,在视图中会查询到相关信息,如果没有违反则视图返回为空。

 

源端生成传输表空间集

3.1 将要传输的表空间置为READ ONLY

SQL> ALTER TABLESPACE MYTEST READ ONLY;

 

3.2 执行expdp导出表空间集元数据

执行导出的用户必须要有EXP_FULL_DATABASE角色或者DBA角色

expdp system/oracle directory=dump_file_dir dumpfile=mytest.dmp transport_tablespaces=mytest logfile=mytest.log

 

复制传输表空间的数据文件以及生成的dump文件至目标数据库

1)数据文件可以自由选择路径存放,后续会在impdp导入的时候用参数进行转换

2dump文件要放在目标数据库的directory目录下

 

将源端数据库的传输表空间置为READ WRITE

SQL>ALTER TABLESPACE MYTEST READ WRITE;

 

导入传输表空间集到目标数据库

6.1 检查源端和目标端的BLOCK SIZE

源端:

SQL> SELECT BLOCK_SIZE FROM DBA_TABLESPACES WHERE TABLESPACE_NAME='MYTEST';

BLOCK_SIZE

----------

  8192

目标端:

SQL> SHOW PARAMETER BLOCK_SIZE;

 

NAME                                 TYPE        VALUE

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

db_block_size                        integer     16384

 

由于2者间的BLOCK SIZE不同则需要设置目标数据库对应的源端的DB_Nk_CACHE_SIZE大小

 

第一次由于没有设置相关的块大小参数导致报错:

C:\Users\Administrator>impdp system/oracle dumpfile=mytest.dmp directory=dump_fi

le_dir logfile=mytest.log transport_datafiles='D:\app\Administrator\oradata\myte

st.ora'

 

Import: Release 11.2.0.1.0 - Production on 星期二 9 17 10:03:21 2013

 

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Produc

tion

With the Partitioning, OLAP, Data Mining and Real Application Testing options

已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01"

启动 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** dumpfile=mytest.dm

p directory=dump_file_dir logfile=mytest.log transport_datafiles='D:\app\Adminis

trator\oradata\mytest.ora'

处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK

ORA-39123: 数据泵可传输的表空间作业中止

ORA-29339: 表空间块大小 16384 与配置的块大小不匹配

 

作业 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 因致命错误于 10:03:29 停止

 

SQL>ALTER SYSTEM SET DB_16K_CACHE_SIZE=20M;

自动会调整为16的整数倍为32M

6.2 导入元数据

impdp system/oracle dumpfile=mytest.dmp directory=dump_file_dir logfile=mytest.log transport_datafiles='D:\app\Administrator\oradata\mytest.ora'

 

 

6.3 将传输表空间置为READ WRITE

SQL> ALTER TABLESPACE MYTEST READ WRITE;

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25269462/viewspace-772834/,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2012-08-31

  • 博文量
    15
  • 访问量
    41001