第24卷第7期2003年7月小型微型计算机系统MINI-MICROSYSTEMSVol124No.7July2003REDOLOG文件分析及C语言描述ORACLE(广东省公安厅交通警察总队科技科,广东广州510410)摘要:Oracle数据库系统通过REDOLOG技术来管理数据操作和事务,如何分析跟踪REDOLOG文件,实现对数据库操作的监控,在数据库审计、数据库复制和数据库安全等方面具有重要的实用价值.本文对ORACLEREDOLOG文件进行了详尽的分析,给出了REDOLOG文件头、文件体块结构和文件数据结构的C语言描述,以及REDOLOG关键词:REDOLOG;:TP316数据库;审计;复制文献标识码:A文章编号:100021220(2003)0721243204ORACLEREDOLOGFileAnalysisandDescriptionwithCLanguageLIWei2ming(ScienceandTechnologyResearchInstitutionofGuangdongTrafficAdministration,Guangzhou510410,China)Abstract:OralcedatabasesystemsutilizeREDOLOGtechnologytomanagedataoperationsandtransactions.HowtoanalyzeandtrackREDOLOGfile,realizetheinspectionandcontroloftheDatabaseoperationsindatabaseaudit,databasereplication,databasesecurityandmanysides,whichhasimportantusefulvalues.ThispaperanalyzestheREDOLOGfileindetail,givesthedescriptionofREDOLOGfilehead,filebodystructurewiththeClanguage,andthedescriptionoftheREDOLOGtransactioncontrolmechanism.Intheend,thistechnologyhasbeenutilizedindatabaseauditanddatacopysystemsuccessfully.1引言REDOLOG文件,直接从REDOLOG中读取符合审计条件的数据,就有可能实现对包括数据库管理员(DBA)在内的用户的所有增、删、改操作进行有效的审计.要想通过REDOLOG对数据库的事务和数据变化进行跟踪,对数据库操作进行监控,就必须清楚了解REDOLOG的文件格式和Oracle对REDOLOG的操作机制.但由于ORACLE公司没有公开REDOLOG的技术细节,这就必须要对REDOLOG二进制文件进行分析.本文给出了针对REDOLOG二进制文数据库应用的不断深入,对数据的存储提出了真实性、安全性、可靠性要求,全国大力推广电子政务系统对计算机数据的安全又提出了更高的要求,如何防止数据被非法修改和伪造,特别是如何防止业务数据被具有数据库管理员(DBA)权限用户非授权修改,一直是管理信息系统想解决而没有彻底解决的问题.目前对于Oracle一类的关系型数据库系统主要采用Trigger的方法对数据库进行审计,审计的数据通过网络远程传送到安全的地方存放.这种方法并不能对系统管理员进行有效审计,主要原因是:(1)系统管理员可以控制系统Trigger的关闭和开启;(2)系统管理员以Internal用户登录到Oracle时,系统Trigger对数据库的操作不起作用,此时的各种操作不能被审计下来.同时Trigger的方法加大了数据库系统的开销.由于Oracle数据库有一重要特性是使用REDOLOG文件来实现事务和数据库的恢复,通过REDOLOG文件维护数据库数据和事务一致性,REDOLOG记录了数据库事务和物理操作的所有信息,不管什么用户以何种方式登录,所有的增、删、改操作都会登录在REDOLOG中.因此,如果能REDOLOG文件的分析与C语言描述2ORACLE通过LGWR进程实现对REDOLOG的管理,LGWR进程循环写预先设定的若干个REDOLOG文件来保存数据库操作信息.REDOLOG以二进制格式文件保存,包括文件头和文件体两部分.2.1REDOLOG文件头的分析收稿日期:2002210208作者简介:李伟明,硕士,工程师,主要从事智能交通,交通信息管理系统,数据库系统应用的研究开发工作.2K等,其中文件的第一、二块为文件头,第一块包含文件块大小,块的总数等信息.第二块保存了文件版本号,兼容版本号,数据库ID号,数据库名,控制顺序号,文件大小,文件序号,文件块大小和文件类型等REDOLOG文件的基本信息;从第二块起,每块都有一个块头,包含REDOLOG顺序号,块号等信息.本文以运行在X86平台上的ORACLE数据库系统的REDOLOG存储数据为例,整型数的存放均是低字节在前,高字节在后.其中数据的字节长度和字节顺序跟CPU有关.第一块示例如下:000000000000000000020000000800006D6C6B6A00000010000000000000000000000000000000000000002000000000000000000000000000000000......由上块结构可以得到REDOLOG文件块大小为00020000即512bytes,该REDOLOG...