邢台网站建设/营销案例分析
1引言Oracle数据库是目前最流行的数据库开发平台之一,广泛应用于金融、通信、航空等领域。Ora-cle数据管理系统以其处理的并发数据量极大,极高的可靠性、安全性和可扩展性赢得了较大的市场占有率和众多高端用户的青睐,成为大型数据库应用系统的首选后台数据库系统[1]。而Delphi作为一种面向对象的可视化编程工具,具有功能强大、运行速度快、易于学习和使用以及开发效率高等特点,特别适合分布式系统的开发[2],因此它越来越多地被用作大型数据库系统的前台开发工具,与后台的Oracle数据库相结合,是高性能的客户机/服务器解决方案的最佳编程工具。在利用Delphi开发Oracle数据库应用系统中,由于对数据库的操作方式不同,以及网络、数据库连接等原因,往往会出现数据库操作与应用程序执行的不同步问题,从而可能导致错误的操作结果。因此,数据库操作的同步问题是数据库管理系统需要解决的关键问题之一。本文主要讨论Delphi7.0和Oracle10g环境下数据库同步备份和自动压缩问题。2Oracle数据库备份[3~4]所谓数据库备份就是把数据库复制到转储设备的过程,备份的目的是为了防止不可预料的数据丢失和应用错误。如果丢失了原始数据,那么可以使用备份还原数据,从而避免了在异常情况下的数据丢失。通常Oracle10g数据库有三种数据备份方式:用户管理备份、RMAN管理备份、导出备份。在实际应用中,最常用的备份是导出备份,导出备份是一种逻辑备份,是将Oracle数据库对象的元数据(对象结构)或数据备份成一个称为“导出转储文件”的二进制系统文件,该文件在需要时能重新生成数据库。3Oracle数据库的逻辑备份3.1逻辑备份方法Oracle的逻辑备份主要是通过以下述两种方法来实现的:一是通过服务器端EXPDP导出工具来实现;二是通过客户端EXP导出工具来实现。这两种方法都能将数据库部分或全部对象的结构和数据导出,存储到操作系统(OS)文件中,导出方法如图l所示。图1Oracle数据库的逻辑备份Oracle的逻辑备份可以在实际应用系统中,通过应用程序调用Oracle的EXP命令来实现数据库系统的逻辑备份,这样可以实现应用系统功能的完整性及用户操作的方便性。3.2逻辑备份实现在Delphi开发环境中,若要在应用程序中执行EXP命令,可以通过windows系统提供的API函数Winexec、ShellExecute、ShellExecuteEx、Cre-ateProcess来实现。这四个函数都可以在Delphi环境执行Oracle的EXP命令。但是这些函数都是以异步方式来执行其所调用的程序的。也就是说,这些函数启动的EXP程序后,就不管EXP程序是否执行行完,就开始执行这些函数的后继语句了。这样,在Oracle数据库备份过程中,容易导致用户对正在备份的数据库继续进行操作,致使产生某些错误或得到非预期的结果。对于Delphi系统本身,由于其不具备进程的管理、控制功能,因此,若要在应用程序中解决数据库操作的异步问题,必须调用Windows操作系统的API函数来解决这一问题。4Oracle数据库的同步备份在Delphi环境中,要想实现对Oracle数据库备份操作的同步,可以用WaitForSingleObject函数管理外部程序的进程句柄的执行情况,以便对外部程序的进程进行控制。使用API函数ShellExe-cuteEx和CreateProcess启动外部程序,并获得外部程序的句柄,然后使用函WaitForSingleObject等待程序执行结束,然后使用CloseHandle函数关