前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试798】在Oracle中,数据迁移之可传输表空间

【DB笔试面试798】在Oracle中,数据迁移之可传输表空间

作者头像
AiDBA宝典
发布2020-05-15 14:25:22
8110
发布2020-05-15 14:25:22
举报
文章被收录于专栏:小麦苗的DB宝专栏

题目部分

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

答案部分

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

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

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

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

代码语言:javascript
复制
 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命令的CONSTRAINTS和TRIGGERS参数设置为Y。

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

代码语言:javascript
复制
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):由应用指定并且映射到数据库(如RAW,BFILE等)的类型可以被传输,但是它们并不会被作为跨平台转换的一部分。其实际类型是什么只有指定它的应用清楚,所以,必须保证这个应用能解决读取各种ENDIAN问题后再考虑将其传输到新平台。

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

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

& 说明:

有关可传输表空间的具体的实验过程案例可以参考我的BLOG:http://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程序员面试笔试宝典》,作者:小麦苗

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档