暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,数据迁移之可传输表空间(Transportable Tablespaces)是什么?

DB宝 2020-05-13
796


题目部分

在Oracle中,数据迁移之可传输表空间(Transportable Tablespaces)是什么?


     

答案部分


数据迁移也是面试官经常性问的一些问题。最常见的问题是:异构平台迁移有哪些常用的办法?若异构平台迁移可以考虑exp/impexpdp/impdp、可传输表空间、OGGOracle 11gR2也支持了部分异构平台的数据库。本节着重介绍可传输表空间。

可传输表空间主要用于库对库的表空间复制,要进行传输的表空间必须置于READ ONLY模式。如果生产库不允许表空间置为READ ONLY模式,那么也可以通过RMAN备份创建可传输表空间。要使用可传输表空间的特性,要求Oracle至少是8i企业版或更高版本。如果是相同操作系统平台相互导入,那么Oracle 8i及以上版本均可支持,但如果是不同操作系统平台,那么数据库版本至少是Oracle 10g,被传输的表空间既可以是字典管理,也可以是本地管理,并且从Oracle 9i开始,被传输表空间的BLOCK SIZE可以与目标数据库的BLOCK SIZE不同。

可传输表空间最大的优势是其速度比exp/impunload/load要快得多。因为可传输表空间主要的工作方式是复制数据文件到目标路径,然后再使用exp/impexpdp/impdp等工具来导出导入表空间对象的元数据到新数据库。

Oracle 10g开始,可以实现跨平台传输表空间了。尽管不能支持所有的平台,但已经有很多平台可以支持跨平台的传送。可以通过查询V$TRANSPORTABLE_PLATFORM视图来确认哪些平台可以支持,该视图同时也可以获取各平台的ENDIAN_FORMAT(字节序)。

 1SYS@lhrdb> col PLATFORM_NAME for a35
2SYS@lhrdb> SELECT * FROM V$TRANSPORTABLE_PLATFORM ORDER BY PLATFORM_ID;
3PLATFORM_ID PLATFORM_NAME                       ENDIAN_FORMAT
4----------- ----------------------------------- --------------
5          1 Solaris[tm] OE (32-bit)             Big
6          2 Solaris[tm] OE (64-bit)             Big
7          3 HP-UX (64-bit)                      Big
8          4 HP-UX IA (64-bit)                   Big
9          5 HP Tru64 UNIX                       Little
10          6 AIX-Based Systems (64-bit)          Big
11          7 Microsoft Windows IA (32-bit)       Little
12          8 Microsoft Windows IA (64-bit)       Little
13          9 IBM zSeries Based Linux             Big
14         10 Linux IA (32-bit)                   Little
15         11 Linux IA (64-bit)                   Little
16         12 Microsoft Windows x86 64-bit        Little
17         13 Linux x86 64-bit                    Little
18         15 HP Open VMS                         Little
19         16 Apple Mac OS                        Big
20         17 Solaris Operating System (x86)      Little
21         18 IBM Power Based Linux               Big
22         19 HP IA Open VMS                      Little
23         20 Solaris Operating System (x86-64)   Little
24         21 Apple Mac OS (x86-64)               Little
2520 rows selected.


在执行可传输表空间之前,需要注意以下几点内容

① 源库和目标库的字符集和国家字符集必须相同。

② 要传输的表空间不能与目标服务器现有表空间名称重复。

③ 有关联关系的对象(例如物化视图或包含对象(例如表分区一般情况下不能被传送,除非所有的关联对象都在表空间集tablespace set中。

④ Oracle 10gR2开始,可以传输含XMLTypes的表空间,不过必须使用imp/exp而不能选择数据泵impdp/expdp),并确保imp/exp命令的CONSTRAINTSTRIGGERS参数设置为Y

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

1SELECT DISTINCT P.TABLESPACE_NAME
2FROM DBA_TABLESPACES P, DBA_XML_TABLES X, DBA_USERS U, ALL_ALL_TABLES T
3WHERE T.TABLE_NAME = X.TABLE_NAME
4AND T.TABLESPACE_NAME = P.TABLESPACE_NAME
5AND X.OWNER = U.USERNAME;


可传输表空间在功能方面有如下的限制:

① 高级队列(Advanced Queues):可传输表空间的特性并不支持高级队列。

② 系统表空间(SYSTEM Tablespace Objects):不能传输SYSTEM表空间或者SYS用户拥有的对象(使用SYS用户可以导入的)。

③ 映射类型(Opaque Types):由应用指定并且映射到数据库(如RAWBFILE等)的类型可以被传输,但是它们并不会被作为跨平台转换的一部分。其实际类型是什么只有指定它的应用清楚,所以,必须保证这个应用能解决读取各种ENDIAN问题后再考虑将其传输到新平台。

④ 浮点数据(Floating-Point Numbers):BINARY_FLOATBINARY_DOUBLE类型可以使用数据泵导入导出,但不支持exp

Oracle 10g开始,无论目标库运行在相同或不同的平台,利用传输表空间都可以将一个表空间传输到相同或更高版本的Oracle库。但是,如果目标库的版本比源库低的话那么就不能利用可传输表空间了

& 说明:

有关可传输表空间的具体的实验过程案例可以参考我的BLOGhttp://blog.itpub.net/26736162/viewspace-1987949/http://blog.itpub.net/26736162/viewspace-1987953/http://blog.itpub.net/26736162/viewspace-1987957/http://blog.itpub.net/26736162/viewspace-1987961/http://blog.itpub.net/26736162/viewspace-1987971/http://blog.itpub.net/26736162/viewspace-1987974/



本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗



---------------优质麦课------------

详细内容可以添加麦老师微信或QQ私聊。



About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:618766405

 提供OCP、OCM和高可用部分最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

DBA宝典

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。


最后修改时间:2020-06-12 12:40:14
文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论