首页 > 大数据 > 正文

大型EAI项目中的数据库管理

2009-06-04 09:15:11  来源:CIO时代网

摘要:以下我们以ORACLE8.1.7为例介绍一下大型EAI项目中的数据库管理问题。
关键词: 数据库

  数据库在大型EAI(企业应用集成)项目中扮演着至关重要的角色。目前许多企业都迫切需要将其自身传统的管理与运作模式转化为先进、高效的信息化管理与运作模式。在实施企业信息化的过程中,怎样将该企业原有大量数据有机的结合起来以供应用软件使用是一件十分重要的事情。不夸张的说,数据库是项目实施成败的决定性因素之一,维护好数据库、对其进行有效的优化使其在项目中充分发挥其作用正是我需要做的事情。以下我们以ORACLE8.1.7为例介绍一下大型EAI项目中的数据库管理问题。
  维护数据库
  一般来说,数据库的维护任务是由专职的DBA(数据库管理员)来担当,如果人员紧张也可以由有数据库经验的开发人员来兼职这项工作。数据库管理员的职责包括以下几点:
  . 在项目初期参加需求分析工作,分析企业的数据情况;
  . 协同系统设计人员做好数据库的设计工作;
  . 维护使用数据库用户的权限等,同是保证数据库重数据及程序的一致性;
  . 定期备份数据库;
  . 优化数据库各项参数,使数据库处于最优的运行状态;
  . 管理用户
  在数据库的维护工作中管理用户是一件很重要的事情,做好用户·的管理不仅可以保证数据库的安全性而且可以保证数据库在项目实·施工程中和今后系统运行中数据的一致性。
  数据库管理的工作是由专职的DBA(数据库管理员)来负责的。由于项目的规模比较大,参与项目的角色自然会比较多,但一般可划分为几个大角色,即开发角色、测试角色、浏览角色。开发角色是指项目的程序开发人员,他们每人负责开发一个或多个模块,需要对数据库中和本模块有关的数据进行添加、修改、删除,同时也会根据其需要在数据库中建立相应的trigger、procedure、package等,所以要给其分配connect和resource系统角色,必要时可以给其分配select_catalog_role角色,并根据每个人的需要分配对trigger、procedure、package等操作的权限,至于对象权限一定要将模块相关的表的_delete、_update、_insert权限赋予相关的开发人员;测试角色是指项目的测试人员,他们每人负责的整个系统的一个或多个模块进行各个级别的测试,需要对数据库中和本模块有关的数据进行添加、修改、删除,一般情况下不需要对trigger、procedure、package的操作权限,至于对象权限可以根据需求要将模块相关的表的_delete、_update、_insert权限赋予相关的测试人员;浏览角色是指项目中除开发角色、测试角色的其他角色,例如:项目经理、需求分析人员、设计人员等,他们需要经常查看数据库中的数据及程序以便了解项目的情况和控制项目的进度,可以赋予他们对数据和程序包的查看权限。
  在权限的维护方面一定要慎重,应该在项目进展的不同阶段及时清理过期的权限保证数据库用户的准确性和一致性。
  定期备份数据库
  数据库是一种大型关系型的数据库,可以存贮达到存贮TB的数据,保证这些数据的安全尤其至关重要的,我们一直采用Oracle作为我们项目的数据库系统,在这里我们介绍一下Oracle数据库的备份方法。Oracle的内核提供数据库的备份和恢复机制,SQL*DBA按表空间进行数据的备份和恢复。Oracle提供两种方式:备份恢复和向前滚动,保证意外故障恢复数据库的一致性和完整性。
  . 份恢复方式
  对数据库的某个一致状态建立副本,并储存在介质上脱机保存,以此作为数据库恢复的基础。现以Oracle实用程序Export/Import来介绍备份恢复方式。
  是Oracle提供的两个互补性程序,即卸载和装载。它们既完成数据库与操作系统文件的互为转载,同时可以有效地回收数据库的碎片,提供不同版本间Oracle 数据传送的手段,进行不同用户间的数据传送。
  数据卸载,将数据从Oracle写到指定的操作系统文件进行备份。卸载的对象、内容与数量有三种模式:TABLE MODE(表模式)、USER MODE(用户模式)、FULL DATABASEM ODE(所有数据库模式)。使用方式既可用交互方式,也可采用命令行方式,以关键字=值 将所需信息在命令行中逐一描述来进行卸载。Export要求用户具有CONNECT或DBA特权。
  与Export互逆,将操作系统文件重新装载至Oracle数据库中,使用方式如Expo rt。使用者要求具有CONNECT和RESOURCE特权,且可选择部分或全部装入。
  非常方便,系统开销小,它的限制是输出的操作系统文件采用专门的压缩方式存放,仅提供给Import使用。
  也可采用SQL*PLUS和SQL*LOADER实用工具进行备份。使用SQL*PLUS的SPOOL命令通过脱机定向输出,使用PLUS格式化结果,形成指定格式的ASCII文件,需要时可用SQL*LOADER 进行加载。它的方便之处是ASCII文件可以编辑,可方便地加载至其他数据库(如FoxPro、 Sybase中)。
  . 前滚动方式
  提供向前滚动方式,使建立备份后成功的事务不会丢失。恢复的基础是数据库的某个一致性状态(即方式1完成的备份恢复),恢复的依据是存档的重作记录文件。启动重作记录文件方法如下
  (1)启动Oracle;
  (2)连接Oracle:CONNECT SYSTEM/PASSWORD;
  (3)启动ARCHIVE LOG。
  出现介质故障时,可用SQL*DBA的RECOVER命令,利用存档的重作记录文件恢复一个或多个表空间。RECOVER命令对DATABASE或TABLASPACE进行恢复。前者要求SQL*DBA START UP已被排斥方式装载且未被打开;后者对无活跃回退段的表空间执行脱机,要求数据库已装载且被打开。
  由于向前滚动方式恢复的依据是存档的重作记录文件,因而系统开销大,但恢复的是建立备份以后的成功事务,所以恢复的程度更高、更完备。
  .优化数据库
  优化策略
  保证数据库能在最佳的性能状态下运行对于整个项目来说是至关重要的,在开发工作开始之前就应该考虑数据库的优化策略。优化策略一般包括服务器操作系统参数调整、数据库参数调整、网络性能调整、应用程序SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信息系统开发之前完成的。
  分析评价Oracle数据库性能主要有数据库吞吐量、数据库用户响应时间两项指标。数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即:
  数据库用户响应时间=系统服务时间+用户等待时间
  因此,获得满意的用户响应时间有两个途径:一是减少系统服务时间,即提高数据库的吞吐量;二是减少用户等待时间,即减少用户访问同一数据库资源的冲突率。
  数据库性能优化包括如下几个部分:
  调整数据结构的设计 这一部分是我们在开发整个系统之前要做的事情,开发人员需要考虑是否使用Oracle数据库的分区功能,对于经常访问的数据库表是否需要建立索引等等。
  调整应用程序结构设计 这一部分也是我们在开发整个系统之前要做的事情。开发人员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。在这里我们选择Client/Server模式。
  调整数据库SQL语句 数据库端应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了Oracle数据库的性能。 Oracle公司提供了Oracle语句优化器(Oracle Optimizer)和行锁管理器(Row-Level Manager)来调整优化SQL语句,这两者都是非常好的优化工具。
  调整服务器内存分配 内存分配是在信息系统运行过程中优化配置的。数据库管理员根据数据库的运行状况不仅可以调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小,而且还可以调整程序全局区(PGA区)的大小。
  调整硬盘I/O 这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O 负载均衡。
  调整操作系统参数 例如:运行在Unix操作系统上的 Oracle数据库,可以调整Unix数据缓冲区的大小、每个进程所能使用的内存大小等参数。
  实际上,上述数据库优化措施之间是相互联系的。Oracle 数据库性能恶化的表现基本上都是用户响应时间比较长,需要用户长时间的等待。而性能恶化的原因却是多种多样的,有时是多个因素共同造成了性能恶化的结果,这就需要数据库管理员有比较全面的计算机知识,能够敏感地察觉到影响数据库性能的主要原因所在。另外,良好的数据库管理工具对于优化数据库性能也是很重要的。
  性能优化工具
  下面介绍几种Oracle数据库常用的数据库性能优化工具:
  数据库在线数据字典 Oracle在线数据字典能够反映出Oracle的动态运行情况,对于调整数据库性能是很有帮助的。
  操作系统工具 例如使用Unix操作系统的Vmstat、 Iostat等命令可以查看到系统级内存和硬盘I/O的使用情况,这些工具能够帮助管理员弄清楚系统瓶颈出现在什么地方。
  语言跟踪工具(SQL Trace Facility)
  语言跟踪工具可以记录SQL语句的执行情况,管理员可以使用虚拟表来调整实例,并使用SQL语句跟踪文件调整应用程序性能。SQL语言跟踪工具将结果输出成一个操作系统的文件,管理员可以使用TKPROF工具查看这些文件。
  (OEM) 这是一个图形的用户管理界面,用户可以使用它方便地进行数据库管理而不必记住复杂的Oracle数据库管理的命令。
  ——SQL语言优化命令 使用这个命令可以帮助程序员写出高效的SQL语言。
  系统性能评估
  信息系统的类型不同,需要关注的数据库参数也是不同的。数据库管理员需要根据自己的信息系统类型来着重考虑不同的数据库参数。
  在线事务处理信息系统(OLTP) 这种类型的信息系统一般需要有大量的_insert、_update操作,典型的系统包括民航机票发售系统、银行储蓄系统等。OLTP系统需要保证数据库的并发性、可靠性和最终用户的速度,这类系统使用的Oracle数据库需主要考虑以下参数:
  数据库回滚段是否足够;
  是否需要建立Oracle数据库索引、聚集、散列;
  系统全局区(SGA)大小是否足够;
  语句是否高效。
  数据仓库系统(Data Warehousing) 这种信息系统的主要任务是从Oracle的海量数据中进行查询,以得到数据之间的某些规律。数据库管理员需要为这种类型的Oracle数据库着重考虑下述参数:
  是否采用B*索引或者Bitmap索引;
  是否采用并行SQL查询以提高查询效率;
  是否采用PL/SQL函数编写存储过程;
  有必要的话,需要建立并行数据库以提高数据库的查询效率。
  系统参数的调整
  参数
  是服务器的一项重要资源,服务器良好的工作状态表现为在工作高峰时CPU的使用率高于90%。如果空闲时间CPU使用率就在90%以上,说明服务器缺乏CPU资源;如果工作高峰时CPU使用率仍然很低,则说明服务器CPU 资源还比较充足。
  使用操作命令可以看到CPU的使用情况,一般Unix操作系统的服务器,可以使用sar-u命令查看CPU的使用率;NT操作系统的服务器,可以使用NT的性能管理器来查看CPU的使用率。
  数据库管理员可以通过查看v$sysstat数据字典中的 “CPU used by this session”统计项得知Oracle数据库使用的CPU时间;查看“OS User level CPU time”统计项得知操作系统用户状态下的CPU时间;查看“OS System call CPU time” 统计项得知操作系统系统状态下的CPU时间,操作系统总的CPU时间就是用户状态和系统状态时间之和。如果Oracle数据库使用的CPU时间占操作系统总CPU时间的90%以上,就说明服务器CPU基本上被Oracle数据库使用着,这是合理的,反之,则说明服务器CPU被其他程序占用过多,Oracle数据库无法得到更多的CPU时间。
  内存参数
  内存参数的调整主要是指Oracle数据库的系统全局区(SGA)的调整。SGA主要由3部分构成:共享池、数据缓冲区、日志缓冲区。
  共享池由两部分构成:共享SQL区和数据字典缓冲区。共享SQL区是存放用户SQL命令的区域,数据字典缓冲区则存放数据库运行的动态信息。
  总结
  在大型EAI项目的实施过程中,数据库的维护是一项艰巨的任务,用户权限的管理、数据库的定期备份、数据库的优化都是十分重要的环节。数据库的维护不仅需要DBA的认真负责,也需要项目所有成员的积极配合,只有这样才能保质保量的满足整个系统对数据的要求,保证项目实施成功。


第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。