数据库和表空间数据移动

数据库和表空间数据移动

[@more@]

数据库和表空间数据移动

跨平台可传输表空间

在数据仓库之间简单的数据分布

允许数据库从一个平台到另一个平台的迁移

最小兼容水平

源数据库和目标数据库必须兼容到10.0.0或者更高

数据文件头是platform-aware

Oracle中有不同的endian的区别不同的平台有不同的endian究竟什么是endian在网上找到关于Big-endianLittle-endian的区别,其实Big-endianLittle-endian就是字节排序。

Big-Endian Little-Endian 字节排序

字节排序

含义

Big-Endian

一个Word中的高位的Byte放在内存中这个Word区域的低地址处。

Little-Endian

一个Word中的低位的Byte放在内存中这个Word区域的低地址处。

必须注意的是:表中一个Word的长度是16位,一个Byte的长度是8位。如果一个数超过一个Word的长度,必须先按Word分成若干部分,然后每一部分(即每个Word内部)Big-Endian或者Little-Endian的不同操作来处理字节。一个例子:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
(
注意:0xab换算成2进制是10101011,是个8位的数。我刚才居然当成4位了,自己把自己搞晕了,shit)

疑问:为什么要以一个Word为基础单位来分割而不是一个DoubleWord或者Byte?究竟就是这么定义的还是跟具体的CPU有关,跟具体的模式(比如说16位模式、32位模式、64位模式的LEBE定义会不同)有关?我实在是不清楚,望知道的大侠不吝指点,也希望有这方面资料(文章、代码)的朋友贴一些上来。

网友“问题男”回复:

目前的存储器,多以byte为访问的最小单元,于是endian的问题应运而生了,当一个逻辑上的整理必须分割为物理上的若干单元时就存在了先放谁后放谁的问题

存在“如果说"word或者说字长根本就没关系",假设有一数据文件里面有N多数顺序排布,如果想以Little-Endian format读入内存某区域,那么应该怎么读?怎么排?”这样的问题是由于对于endian的实质理解的偏差,endian指的是当物理上的最小单元比逻辑上的最小单元小时,逻辑到物理的单元排布关系。这里的“有一数据文件里面有N多数顺序排布”,这个“有一数据”显然不是逻辑上的最小单元,而其中的“N多数”的一个才是逻辑最小单元,于是可应用楼主表格中的原则排列,而“N多数”之间的顺序则是由这“N多数”的宿主决定的,比如是你写的程序,这个顺序由你决定

刚才谈到了,endian指的是当物理上的最小单元比逻辑上的最小单元小时,逻辑到物理的单元排布关系。咱们接触到的物理单元最小都是byte,在通信领域中,这里往往是bit,不过原理也是类似的。

实践可以给你更多的经验,比如在一个嵌入式系统的通信协议中,从底层射频驱动到上层的协议栈全部需要实现,那么很可能遇到多个endian的问题,底层的bit序、协议层的byte序、应用层的byte序,这些都是不同的概念

网友“rovershen ”回复:

没记错的话,除了moto68K系列和decsparcbig endian外,常见的cpu都是little endianARM同时支持biglittle,实际应用中通常使用little endian。我所说的指针转换,实际上指编译器的隐式处理。

假设有个32位的整数,地址是0x10000000,现在要将它作为16位整数处理,忽略高位,如果是little endian,则直接从0x10000000取得,而如果是big endian,则要从0x10000002取得。

网友“穿越无边”回复:

这两个术语来自于 Jonathan Swift 的《《格利佛游记》其中交战的两个派别无法就应该从哪一端--小端还是大端--打开一个半熟的鸡蛋达成一致。:)

在那个时代,Swift是在讽刺英国和法国之间的持续冲突,Danny Cohen,一位网络协议的早期开创者,第一次使用这两个术语来指代字节顺序,后来这个术语被广泛接纳了

摘自《深入理解计算机系统》

很好的一本书:)

endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。

我们一般将endian翻译成“字节序”,将big endianlittle endian称作“大尾”和“小尾”。

可以通过查询视图v$transportable_platform来确定当前数据库的endian。例如在Windows平台上可以看到他的时litter

SQL> SELECT tp.endian_format

2 FROM v$transportable_platform tp,

3 v$database d

4 WHERE tp.platform_name = d.platform_name

5

SQL> /

ENDIAN_FORMAT

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

Little

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-907890/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/222350/viewspace-907890/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值