TTS—01-基础知识

一、关于可传输表空间(TransportableTablespaces)

可传输表空间的特性主要用于进行库对库的表空间复制,要进行传输的表空间必须置于read-only 模式。如果生产库不允许表空间置为只读模式,没关系,方法还是有的,通过RMAN 备份也可以创建可传输表空间集。要使用可传输表空间的特性,oracle 至少是8i 企业版或更高版本。如果是相同操作系统平台相互导入,则8i 及以上版本均可支持,但如果是不同操作系统平台,数据库版本至少10g。被传输的表空间即可以是字典管理,也可以是本地管理。并且自oracle9i 开始,被传输表空间的block size 可以与目标数据库的block size 不同。

可传输表空间(还有个集)最大的优势是其速度比export/import 或unload/load 要快的多。因为可传输表空间主要是复制数据文件到目标路径,然后再使用export/import 或Data Pump export/import 等应用仅导出/导入表空间对象的元数据到新数据库。

提示:
本节中将完全采用Data Pump(数据泵)做为导入导出的工具。(什么是Data Pump,说来话短,Data Pump。。。。。其命令形式是impdp/expdp 分别对应导入/导出功能,是自oracle10g 开始提供的一种新的应用。功能和命令形式都与imp/exp 极其类似,但其相互之间的导出文件并不兼容)不过,Data Pump 和常规的imp/exp同样都能够被transportable tablespaces 特性支持。但是如果被传输的表空间包含XMLTypes,就必须使用imp/exp。

通常有两种方式传输表空间:
手工操作。按本节中的步骤操作,含SQL*Plus, RMAN, IMP/EXP 或Data Pump 等各种指令操作。
使用OEM 中的传送表空间向导。

要运行传送表空间向导:
1、使用具有EXP_FULL_DATABASE 角色的用户登陆到OEM 中;
2、点击维护(Maintenance)链接;
3、点击标题下方的”Transport Tablespaces”。

二、关于跨平台传输表空间
从oracle10g 开始,你终于可以实现跨平台传输表空间了。无数的dba 欢呼着, 雀跃着。。。。
尽管仍非全部, 但已经有很多平台可以支持跨平台的传送。可以通过查询V$TRANSPORTABLE_PLATFORM 视图来确认哪些平台可以支持, 该视图同时也可以获取各平台的ENDIAN_FORMAT(字节顺序byte ordering)

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 64-bit for AMD         Little
13          Linux 64-bit for AMD                     Little
15          HP Open VMS                              Little
16          Apple Mac OS                             Big
17          Solaris Operating System (x86)           Little
18          IBM Power Based Linux                    Big
已选择17 行。

提示:关于字节顺序(byte ordering)
一些操作系统(包括Windows)在低位内存地址中用最低有效字节存储多字节二进制数据;因此这种系统被称为低地址低字节序。相反,其它的操作系统(包括Solaris)将最高有效字节存储在低位内存地址中,因此这种系统被称为低地址高字节序。当一个低地址高字节序的系统试图从一个低地址低字节序的系统中读取数据时,需要一个转换过程— 否则,字节顺序将导致不能正确解释读取的数据。不过,当在相同字节顺序的平台之间传输表空间时,不需要任何转换。

如果平台间的endian 不同,那么在执行导入操作之之前必须首先转换源平台的表空间到目标格式,如果平台间endian format 相同,则可以跳过转换的步骤,即使是不同平台。当然前提是各平台的数据库版本都不低于10g。

在表空间可被传输到不同平台之前,数据文件的文件头必须能够识别其所属的原平台是什么,对于oracle数据库初始化参数中COMPATIBLE 置为10.0.0 或更高之后,你必须至少将表空间置为read-write 一次,这点非常重要,你现在还不知道我在说什么?没关系,很快就会知道的。

1、当你计划进行传输表空间之前,你有必要了解下列的一些信息:
源库和目标库的字符集和国家字符集必须相同。
要传输的表空间不能与目标服务器现有表空间名称重复。
有关联关系的对象(比如物化视图)或包含对象(比如表分区)一般情况下不能被传送,除非所有的关联对象都在表空间集(tablespace set)中。
自oracle10gR2 开始,可以传输含XMLTypes 的表空间,不过必须使用imp/exp 而不能选择数据泵(impdp/expdp)。并确保imp/exp 命令的CONSTRAINTS 和TRIGGERS 参数设置为Y。

下列脚本可以列出数据库中哪些表空间含XMLTypes:

select distinct p.tablespace_name
from dba_tablespaces p, dba_xml_tables x, dba_users u, all_all_tables t
where t.table_name = x.table_name
and t.tablespace_name = p.tablespace_name
and x.owner = u.username

2、传输表空间的特性并非万能的,还有些其它方面的限制:
高级队列(Advanced Queues):可传输表空间的特性并不支持8.0 兼容的高级队列
系统表空间(SYSTEM Tablespace Objects):不能传输SYSTEM 表空间或者SYS 用户拥有的对象。
映射类型(Opaque Types):由应用指定并且映射到数据库(如RAW,BFILE 等)的类型可以被传输,但是它们并不会被做为跨平台转换的一部分。其实际类型是什么只有指定它的应用清楚,所以必须保证这个应用解决读取各种endian 问题后再考虑将其传输到新平台。
浮点数据(Floating-Point Numbers):BINARY_FLOAT 和BINARY_DOUBLE 类型可以使用数据泵导入导出但不支持EXP。

Trackback

no comment untill now

Add your comment now

切换到手机版