在AnySQL.net中搜索标签(Tags) 'Edian' 的结果:
使用iconv来进行CLOB数据的恢复
一个韩国的Oracle数据库, System表空间的文件被删除了需要进行恢复. 还好整个的数据文件的大小只有500MB, 在免费的范围内, 不用交钱他们自已就可以恢复. 但今天被他们问了太多的问题, 有些烦了, 所以我将免费的范围缩小了, 第一, 只能免费打开2个文件了, 原来是4个, 第二, 相对文件号为1的还可免费读取前512MB, 不为1的则只能读取256MB了. 他的数据库中有CLOB字段, 还好值都不大, 而且是Enable Storage In Row的CLOB, 因此虽然丢失了System表空间, 但还是能恢复出CLOB数据的, 他们真是好运啊. 由于使用的字符集是变长的, 因此存放在CLOB中的数据是以Unicode(UCS-2)字符集存放的, 虽然恢复出来了, 但装载前还得将恢复出来的文件进行转换. 由于Unicode用两个字节来存放一个字符, 因此这中间有Byte Edian的问题. 到10g以后, Oracle的CLOB总是用Big Edian的, 而在10g以前, 则看数据库运行的平台, 运行在SUN...
什么是Byte Edian?
不时在itpub网站上看到有人问byte edian是什么意思. 在这儿说一下我的理解吧. 在计算机中最小的单位是一个字节,不过一个字节能表示的范围太小了,我们可以将一个字节理解成一个0-9间的任何一个数字, 因此我们要表示一个千位数时就需要四位来表示, 给定一个四位数8765, 这个值是不会变的, 但我们记录这个数字时可以写成8765也可以记录成5678, 只要我们自已记住是如何存贮就可以了. 在三十二位的系统中, 一个整数由四个字节来组成, 所在在不同的硬件系统中放在内存中时, 就有两种顺序, Big Edian指将千位写在前面, Little Edian指将个位写成前面. 有些人理解成一个Byte中各个bit的顺序是不对的. 在Oracle的数据文件中, 记录了各种信息, 有一些信息是用多于一个字节来表示的, 如相对数据块地址(RDBA)由四个字节组成, 而Row index则只需要两个字节组成, 不同硬件平台下的Oracle在将这些信息写入文件时, 就出现了不同的写入顺序, 因此不同硬件的Oraclce数据文件并不能在相互拷贝使用. 由于字节对齐方式只有2种, 而实际上我们有很多的不同的硬件平台, 所以有的不同硬件平台他们的字节对齐方式是相同的, 在相同的平台上, Oracle数据库文件其实是相同的, 理论上应当是可以互通的, 只是Oracle可以记录了一些OS的信息, 导致数据文件不能通过. 我曾经将Windows下的文件拷贝到Linux下和Solaris(在PC上的)平台下测试,...
站内搜索 | Search
总数: 536 | 留言: 1707
- Name: Fangxin Lou
- MSN: anysql©live.com
- Mail:anysql©yahoo.com
anysql©gmail.com - Skype: anysql
- AIM: loufangxin
- Mobile:008615925611590
分类 | Categories
软件下载:
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql