在审计项目开展过程中,审计人员通常需要对被审计单位所提供的数据进行恢复,并在此基础上开展审计分析。由于不同数据库系统都有自己相对独立的存储体系,交换数据的格式也存在一定差异,因此在数据恢复过程中,审计人员不得不基于被审计单位的应用环境来构建分析环境,并完成数据恢复工作。上述操作显然对审计人员提出了更高的要求,因为它不仅需要审计人员了解被审计单位的具体业务,还要对不同数据库系统的使用有所了解,进一步增加了审计实施的难度。 目前,一种行之有效的方式是要求被审计单位提供存储数据的平面文件,即以特定字符分隔的文本文件,这种类型的文件不仅能够消除异构数据库系统底层间的差异,而且有助于提升数据转化及恢复的效率。对于审计人员来说,了解不同主流数据库产品对平面文件的支持情况及如何实现文件的快速恢复,是十分有必要的,因为它不仅有助于审计工作的顺利开展,同时也有助于加深对不同数据库系统的了解,提高自身计算机操作水平。 为此,本文以平面文件中常见CSV(逗号分隔)文件和审计分析过程中较为常见的关系数据库(Oracle、SQL Server、DB2、Sybase、Informix)为例,对平面文件的恢复方法及其性能进行分析,从而为审计人员的实际应用提供参考依据。 Oracle数据库恢复工具 Oracle是甲骨文公司开发的关系数据库管理系统,该系统在数据库领域一直处于领先地位,并被金融、电力等行业所青睐,同时也是被审计单位应用最多的数据库系统之一。Oracle具有使用方便、功能强大等特点,此外技术文档也比较完善,获取也较为容易。在外部数据交换方面,Oracle提供了一个名为SQL LOADER的数据加载工具,该工具能够支持多种平面文件格式向Oracle中加载数据,并支持传统路径和直接路径两种恢复模式。传统路径是指以SQL语句插入的形式进行加载,而直接路径则以直接格式化数据库文件的形式进行加载,相对来说,后者的执行效率更高。 利用SQL LOADER工具加载数据时,首先要建立对输入数据(如输入数据的位置、数据类型等)进行描述控制文件,该文件通常以文本形式保存,并以.CTL扩展名命名。以下是一个控制文件内容的简单示例: LOAD DATA INFILE文件名INTO TABLE表名FIELDS TERMINATED BY‘,’(字段1,字段2,…,字段n) 上述语句中,大写英文字母为数据库中的关键字。其中,INFILE指明要加载的平面文件,INTO TABLE指明要加载的数据表,FIELDS TERMINATED BY指明文本中列的分隔符,最后一行指出数据要加载到表的哪些列中。上述控制文件编写完成后,可在命令行提示符下执行如下语句即可完成数据加载。 SQLLDR USERID=用户名/密码CONTROL=控制文件名LOG=日志名 SQL Server数据库恢复工具 SQL Server是微软公司开发的关系数据库管理系统,该系统界面十分友好、操作也非常简便,审计人员通常将其作为实际项目中的分析环境。在外部数据交换方面,SQL Server提供两种数据加载方式,一种为BCP工具,一种为BULK INSERT命令。 BCP是SQL Server提供的专门用于大容量导出数据和大容量导入数据并生成格式化文件的命令行实用工具,该工具的使用较为简便,用户只需在命令提示符下执行如下语句即可实现大容量数据加载。其中,参数-c指明使用字符数据作为中间存储类型,-t和-r分别表示以指定的字符作为列和行分隔符。 BCP数据库名.架构名.表名IN文件名-U用户名-P密码-S实例名-c-t,-r\n BULK INSERT是SQL Server提供的将数据直接从数据文件导入到数据库表或未分区视图的SQL语句,该语句可直接在SQL Server Management Studio中执行,下面给出了该语句常用的语法格式,其中FIELDTERMINATOR指明文本中列的分隔符,ROWTERMINATOR指明文本中行的分隔符。 BULK INSERT数据库名.架构名,表名FROM文件名WITH(FIELDTERMINATOR=‘,’,ROWTERMINATOR=‘\n’) DB2数据库恢复工具 DB2是IBM公司开发的关系数据库管理系统,该系统通常被用于大型应用系统及海量数据处理当中,并支持从大型机到单用户的应用环境。在外部数据交换方面,DB2同样提供两种数据加载工具IMPORT和LOAD。 IMPORT与SQL LOADER的传统路径加载模式相类似,在数据加载过程中,IMPORT利用SQL INSERT语句向表或视图中填充数据,并在数据库的日志中记录插入的过程,进而实现数据加载失败时的快速恢复。该工具的调用语句如下所示,其中OF DEL指定文本格式,MESSAGES指定输出日志的文件名。 IMPORT FROM文件名OF DEL MESSAGES日志名INSERT INTO表名 LOAD与SQL LOADER的直接路径加载模式相类似,LOAD对数据的加载采用数据页级别的处理,并绕过数据库管理系统的多个处理层次,使数据的加载效率得到大幅度提升。该工具的调用语句如下所示,其中OF DEL指明加载文本的格式为字符文件,MESSAGES指明输出日志的文件名,NONRECOVERABLE指明执行恢复的类型。