ORACLE 传输表空间介绍与实验操作

传输表空间(tansport tablespace)用于将表空间从一个数据库传输到另一个数据库,速度快,相当于直接复制数据文件.传输表空间有以下特性:


1)可以传输一个表空间集合

2)将表空间设置成read-only模式传输或者用RMAN做可传输的表空间

3)字典管理和本地管理的表空间均可传输

4)从9I开始,要传输的表空间的块大小可与目标数据库的标准块大小不同

5)传输表空间比imp exp快的多,不需要抽取和加载数据,数据包含在表空间中,用数据泵转换元数据(从11GR1开始,必须要用数据泵转换元数据)

6)从10G开始,可以跨平台传输,视图 V$TRANSPORTABLE_PLATFORM显示哪些平台可以互相转换及大小端.如果平台的大小端不同,必须要转换

 

 

限制:

1)源平台与目标平台字符集相同;或者源平台字符集是目标平台字符集的严格子集,并且源数据库兼容性是10.1.0.3

2)要传输的表空间不能与目标数据库表空间重名

3)表空间上有加密的表时不能传输,必须用数据泵导入这些对象,再导入到目标数据库

4)不能传输SYSTEM表空间或sys的对象

5)如果要传输的表空间上的表有TIMESTAMP WITH TIMEZONE的列,则源数据库和目标数据库时区必须相同.

 

两种方式实现传输表空间:EM或手工.

以下为手工传输步骤:

1.查询V$TRANSPORTABLE_PLATFORM视图确定可转换的平台和大小端

2.检查表空间是否是自包含的

3.在源数据库将表空间置于read-only模式,导出表空间元数据.

4.将数据文件和导出文件复制到目标主机上,如果源平台与目标平台大小端不同,转换表空间

5.可选步骤,将源数据库表空间设置为read/write模式

6.导入表空间到目标数据库

 

 

实验,从linux平台迁移到window上:

1.检查源数据库和目标数据库

创建表空间tansport_ts,数据文件tans01.dbf

 

SQL> CREATE TABLESPACE tansport_ts DATAFILE '/oracle/oradata/orcl/tans01.dbf' SIZE 5M;

Tablespace created

创建一个表,插入数据

 

CREATE TABLE kdzr.transport (ID INT) TABLESPACE tansport_ts;

SQL> insert into kdzr.transport values(1);

1 row inserted

SQL> insert into kdzr.transport values(2);

1 row inserted

SQL> insert into kdzr.transport values(3);

1 row inserted

SQL> insert into kdzr.transport values(4);

1 row inserted

SQL> commit;

在源数据库和目标数据库上执行以下查询

目标数据库:

 

16:02:15 SQL> SELECT A.*

2 FROM V$TRANSPORTABLE_PLATFORM A, V$DATABASE B

3 WHERE A.PLATFORM_ID = B.PLATFORM_ID;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT

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

12 Microsoft Windows x86 64-bit Little

源数据库:

 

SQL> SELECT a.* FROM v$transportable_platform a ,V$database b

2 WHERE a.PLATFORM_ID=b.PLATFORM_ID;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT

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

13 Linux 64-bit for AMD Little

发现linux和windows大小端相同,不需要转换.

 

2.检查表空间是否是自包含的

自包含指表空间上的对象不依赖对其他表空间的对象.

执行以下过程检查表空间tansport_ts是否是自包含的:

EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('tansport_ts', TRUE);

执行完后执行以下查询:

 

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

VIOLATIONS

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

为空说明表空间不依赖于其它表空间.

 

3.将表空间tansport_ts设置为read-only,导出表空间元数据

 

SQL> alter tablespace tansport_ts read only;

Tablespace altered

导出表空间元数据: 

expdp system dumpfile=expdat.dmp directory=data_pump_dir   transport_tablespaces=tansport_ts

 

 

4.将表空间拷到目标主机上

 

SQL> SELECT A.file_name FROM dba_data_files a WHERE a.tablespace_name=UPPER('tansport_ts');

Warning: connection was lost and re-established

FILE_NAME

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

/oracle/oradata/orcl/tans01.dbf

表空间对应的数据文件为/oracle/oradata/orcl/tans01.dbf.

 

 

把表空间拷到目标主机的DATA_PUMP_DIR

 

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

DIRECTORY_PATH

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

D:\app\wj/admin/orcl/dpdump/

 

D:\app\wj\admin\orcl\dpdump 的目录

2014-08-27 21:54 <DIR> .

2014-08-27 21:54 <DIR> ..

2014-08-25 11:41 120 dp.log

2014-08-27 21:45 69,632 expdat.dmp

2014-08-27 21:44 5,251,072 tans01.dbf

可以看到表空间数据文件和相应的元数据已经复制到目标主机上.

 

如果源和目标主机大小端不同,需要用RMAN转换

例如:

 

RMAN> CONVERT DATAFILE

2>'C:\Temp\sales_101.dbf',

3>'C:\Temp\sales_201.dbf'

4>TO PLATFORM="Microsoft Windows IA (32-bit)"

5>FROM PLATFORM="Solaris[tm] OE (32-bit)"

6>DB_FILE_NAME_CONVERT=

7>'C:\Temp\', 'C:\app\orauser\oradata\orawin\'

8> PARALLELISM=4;

 

 

5.导入表空间

用数据泵将表dump文件和数据文件导入到目标数据库中

 

C:\Users\wj>impdp SYSTEM/system dumpfile=expdat.dmp DIRECTORY=data_pump_dir transport_datafiles=D:\app\wj\admin\orcl\dpdump\tans01.dbf remap

_schema=kdzr:scott LOGFILE=transport.log VERSION=10.2.0.1.0

Import: Release 11.2.0.1.0 - Production on 星期三 8 27 22:17:40 2014

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

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

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

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

启动 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": SYSTEM/******** dumpfile=expdat.dmp DIRECTORY=data_pump_dir transport_datafiles=D:\app\wj\admi

n\orcl\dpdump\tans01.dbf remap_schema=kdzr:scott LOGFILE=transport.log VERSION=10.2.0.1.0

处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK

处理对象类型 TRANSPORTABLE_EXPORT/TABLE

处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

作业 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 已于 22:17:44 成功完成

注意:如果用高版本的数据泵导入低版本的DUMP,要加上version参数,否则导入出错.version可以查询源数据库的v$version视图得到.

 

验证导入的表:

 

SQL> SELECT * FROM scott.TRANSPORT;

ID

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

1

2

3

4

自从导入成功.

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值