您的位置:首页 > 数据库 > Oracle

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

2014-08-27 22:32 525 查看
传输表空间(tansporttablespace)用于将表空间从一个数据库传输到另一个数据库,速度快,相当于直接复制数据文件.传输表空间有以下特性:

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

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

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

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

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

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


限制:

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

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

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

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

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

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

以下为手工传输步骤:

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

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

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

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

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

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

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

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

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

SQL>CREATETABLESPACEtansport_tsDATAFILE'/oracle/oradata/orcl/tans01.dbf'SIZE5M;
Tablespacecreated


创建一个表,插入数据

CREATETABLEkdzr.transport(IDINT)TABLESPACEtansport_ts;
SQL>insertintokdzr.transportvalues(1);
1rowinserted
SQL>insertintokdzr.transportvalues(2);
1rowinserted
SQL>insertintokdzr.transportvalues(3);
1rowinserted
SQL>insertintokdzr.transportvalues(4);
1rowinserted
SQL>commit;


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

目标数据库:

16:02:15SQL>SELECTA.*
2FROMV$TRANSPORTABLE_PLATFORMA,V$DATABASEB
3WHEREA.PLATFORM_ID=B.PLATFORM_ID;
PLATFORM_IDPLATFORM_NAMEENDIAN_FORMAT
-----------------------------------------------------------------------
12MicrosoftWindowsx8664-bitLittle


源数据库:

SQL>SELECTa.*FROMv$transportable_platforma,V$databaseb
2WHEREa.PLATFORM_ID=b.PLATFORM_ID;
PLATFORM_IDPLATFORM_NAMEENDIAN_FORMAT
----------------------------------------------------------------------------
13Linux64-bitforAMDLittle


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

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

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

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

EXECUTEDBMS_TTS.TRANSPORT_SET_CHECK('tansport_ts',TRUE);

执行完后执行以下查询:

SQL>SELECT*FROMTRANSPORT_SET_VIOLATIONS;
VIOLATIONS
----------------------------------------------


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

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

SQL>altertablespacetansport_tsreadonly;
Tablespacealtered


导出表空间元数据:
expdpsystemdumpfile=expdat.dmpdirectory=data_pump_dirtransport_tablespaces=tansport_ts

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

SQL>SELECTA.file_nameFROMdba_data_filesaWHEREa.tablespace_name=UPPER('tansport_ts');
Warning:connectionwaslostandre-established
FILE_NAME
--------------------------------------------------------------------------------
/oracle/oradata/orcl/tans01.dbf


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

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

SQL>SELECTa.directory_pathFROMdba_directoriesaWHEREa.directory_name='DATA_PUMP_DIR';
DIRECTORY_PATH
--------------------------------------------------------------------------------
D:\app\wj/admin/orcl/dpdump/


D:\app\wj\admin\orcl\dpdump的目录
2014-08-2721:54<DIR>.
2014-08-2721:54<DIR>..
2014-08-2511:41120dp.log
2014-08-2721:4569,632expdat.dmp
2014-08-2721:445,251,072tans01.dbf


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

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

例如:

RMAN>CONVERTDATAFILE
2>'C:\Temp\sales_101.dbf',
3>'C:\Temp\sales_201.dbf'
4>TOPLATFORM="MicrosoftWindowsIA(32-bit)"
5>FROMPLATFORM="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>impdpSYSTEM/systemdumpfile=expdat.dmpDIRECTORY=data_pump_dirtransport_datafiles=D:\app\wj\admin\orcl\dpdump\tans01.dbfremap
_schema=kdzr:scottLOGFILE=transport.logVERSION=10.2.0.1.0
Import:Release11.2.0.1.0-Productionon星期三8月2722:17:402014
Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.
连接到:OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
已成功加载/卸载了主表"SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01"
启动"SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":SYSTEM/********dumpfile=expdat.dmpDIRECTORY=data_pump_dirtransport_datafiles=D:\app\wj\admi
n\orcl\dpdump\tans01.dbfremap_schema=kdzr:scottLOGFILE=transport.logVERSION=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*FROMscott.TRANSPORT;
ID
---------------------------------------
1
2
3
4


自从导入成功.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: