首页 | 摘要显示 | 1 2 3 4 5 下一页

Research Archives

August 17, 2006

什么是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上的)平台下测试, 8i的数据文件在拷贝上去后, 通过重建控制文件和resetlogs成功打开, biti用9i做了试验, 在9i的第一个块上记录了平台信息, 通过交换第一个block后, 成功地在Linux上打开了Windows下9i的数据文件, 需要注意的是这只能作为测试, 而不是官方的, 请大家在不同平台移植时还是用exp/imp方式吧.

   只是在学习的过程中可以大胆设想, 小心求证.

Oracle的压缩块的初步研究之一

    Oracle Compress是一种在DW中节约空间的有效方式, 虽然在Oracle 9i中有些bug, 但相信在以后的版本中会比较强壮的, 因为在MYDMP中不支持Compress 的表,我想在以后的版本中增强一些, 所以先做了一些简单的研究, 下面是我偶然在火车上发现的规律.

   Compress需要一些额外的信息. 在Oracle中Compress是以块为单位的, 也就是说一个表的所有数据块中有的块可能是Compress的, 而有的却不是. 根据块中的信息就可以解压的, 而不需要查询数据字典.

  我建了一张测试表, 只有两个字段(col1和col2), col1的值为"Compress1"和"Compress2", col2的值为"Compress Row1"和"Compress Row2", 我用不同的组合插入了很多记录, 发现一个块中存贮了709条记录. 这说明数据是压缩了(block_size=8192).

  Compress块的结构有点类似于Cluster的块, 在块中显示的表数为2个, 其中Table 0为单词列表,或组合, 如对于上述值, 则有如下值组合:

阅读全文

February 26, 2007

将继续进行对Oracle Log文件的研究

    两前以前的这个时间, 我刚刚完成了AUL/MyDUL的第二版本, 到现在已经很成熟了, 那么接下来要研究什么呢? 我想来想去只有继续进行对Oracle日志文件的研究了. 过去的一年半时间中, 我断断续续地进行过一些研究, 但没有什么成果. 早期曾经设想过开发一个Log有关的免费工具, 用于对Log文件的格式进行分析, 2007年是时侯向这个方面入手了.

    在数据文件研究的过程中, 发现开发一个工具来研究Log格式是有必要的, 边开发边研究, 循环地进步. 今天晚上做出了一个原型, 还是一个命令行的工具, 界面如下所示:

MyLOG : AnySQL Log Analyzer for Oracle 8i/9i, release 1.0.0

(C) Copyright Lou Fangxin 2007 (AnySQL.net), all rights reserved .

LOG>

    将会一步一步地加入一些命令, 目标是要做成一个可以在日志文件中自由搜索Oracle特定操作的小工具, 最好也能解出Log文件中的REDO SQL和UNDO SQL, 其他的还没有想好, 走一步算一步了. 事先说明, 研究日志格式可比研究数据文件格式难多了, 因此请大家不要抱太大的希望.

    顺便希望能将10g的日志文件格式也研究出来, 10g变了好多, 希望11g不要变化太多, 否则研究太累了.

March 24, 2007

加强MyLOG软件, 以进行Log格式研究之一

    对于Log格式的研究, 我是持犹豫态度的, 第一研究很费力, 第二研究出来了也没用. 随着Oracle推出逻辑Standby及更新进的流(Stream)复制解决方案后, 随着新版本的推出, 这方面的功能会越来越强, 同样基于Log格式的备份或实时同步软件(如: SharePlex和DSG), 都会受到一定的影响. 而Log格式的研究, 要想出成果, 也只有在这一方面, 要是在上世纪90年代中或末期开始研究, 则情况就大不相同了.

    但是我还是一直想研究的, 在这样的研究中, 关键是可以找到一些乐趣. 但研究Log这事不能过急, 从上次决定要继续研究, 到现在已经有快一个月了, 没有花什么时间. 只是在昨天晚上花了一个小时, 改进了一下MyLOG工具, 这个工具现在还和Log挂不上一点边, 因为现在仅支持以下几个命令.

    1, HELP. 显示帮助信息

LOG> help
  SET        -- change the default setting.
  HOST/!     -- run OS command.
  QUIT/EXIT  -- exit the program.

    2, SET. 现在只有两个选项BLOCK_SIZE和BYTE_ORDER, 不过我还没见过BLOCK_SIZE不是512字节的Oracle日志文件.

LOG> set
Valid options are BLOCK_SIZE, BYTE_ORDER.
LOG> set block_size
BLOCK_SIZE = 512
LOG> set byte_order
BYTE_ORDER = LITTLE

    3, HOST. 在工具中调用操作系统命令, SQL*Plus中有这个功能, 我也将它加了吧.

LOG> host dir mylog.*
Volume in drive C has no label.
Volume Serial Number is 5CF4-08FE

Directory of C:\MYDUL\utility

2007-03-24  09:29             6,055 mylog.c
2007-03-24  09:29            36,864 mylog.exe
2007-03-23  22:21               511 mylog.h
               3 File(s)         43,430 bytes
               0 Dir(s)   5,268,729,856 bytes free

    当然EXIT和QUIT命令肯定是有的, 用来退出这个程序.

March 25, 2007

加强MyLOG软件, 以进行Log格式研究之二

    周日闲来无事, 因为周五忙到比较晚, 所以干脆不回南京了, 一个人的周末能做什么呢? 洗了一大堆衣服和床单, 留下了一点时间来改进一下MyLOG软件, 增加了一个OPEN命令, 正式将一个命令行的外壳和以前研究Log格式时写的程序挂上钩了. 这个OPEN命令的输出和以前写的lslog工具一样. 下面我在Windows上打开了一个Solaris Sparc上生成的归档日志文件:

LOG> set byte_order big
BYTE_ORDER = BIG
LOG> open c:\mydul\utility\ARCH_24112.arc
DBID = 0x9d671cf9 = 2640780537
GROUP      = 8, SEQUENCE   = 24112
File Type  = 2, Next Block = 16059
Start SCN  = 0x031f.05c00824 = 3431775340580
Start Time = 2006-08-23 19:08:21
End SCN    = 0x031f.05c00990 = 3431775340944
End Time   = 2006-08-23 19:08:58
LOG>

    接下来要加入的命令就是SEARCH了, 可以在打开的日志文件中查找特定的操作, 将块的地址打出来, 然后可以用Oracle中的DUMP日志命令来获得详细的信息, 以进行进一步的研究.

1 2 3 4 5 下一页

当前分类: Research

Creative Commons License
本站版权: 共用创作 CC
署名-非商业性-相同方式分享
本站基于MT-3.36免费版
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql