Oracle平台应用数据库系统的设计与开发_oracle

正在看的ORACLE教程是:Oracle平台应用数据库系统的设计与开发。Oracle是目前应用最广泛的数据库系统。一个完整的数据库系统包括系统硬件、操作系统、网络层、DBMS(数据库管理系统)、应用程序与数据,各部分之间是互相依赖的,对每个部分都必须进行合理的配置、设计和优化才能实现高性能的数据库系统。本文讨论笔者使用Oracle开发局域网中、小型数据库应用中,系统硬件的选择与使用、应用数据库系统设计与开发方面的一些心得和建议。应用数据库系统包含应用数据库和应用两方面的内容,应用数据库就是生产数据库,与系统数据库相对。

  系统硬件的选择与使用

  与数据库系统密切相关的硬件主要有CPU、内存、集群、存储设备等,这里不对集群进行讨论。

  1、CPU 

  CPU的数目和速度直接影响数据库操作的速度,Oracle数据库提供并行查询选项,允许SQL操作以协同方式在多个CPU上执行,可以很大程度的发挥多CPU的性能。为系统添加CPU前,首先要对应用程序的SQL代码做优化,提高应用程序的效率,质量低劣的应用可能会引起CPU资源的无谓的消耗;其次,要了解操作系统对CPU数目的限制及系统的可扩展性。在系统CPU资源已定的情况下,要对各类应用进行分析,在保证关键应用正常运行的前提下,尽可能将大量占用CPU资源的应用放在系统相对空闲的时候进行。良好的工作调度可以有效减少对CPU的竞争使用,加快系统的响应时间。

  2、内存

  数据库系统中,应保证有足够大的内存。在UNIX系统中,如果系统的物理内存小于1GB,可将交换区的大小设为内存的4倍,否则,可设为内存的2倍,交换区要放在磁盘速度最快的硬盘上。Oracle 的SGA区大小直接关系到数据库操作的性能,一般来说,SGA区的大小可设为系统可用内存的55%到57%,SGA区过多占用系统内存反而会降低性能。在应用系统运行中,应定期监测系统的内存使用情况,对关键应用进行分析,根据应用适时调整SGA区各部分的大小。Oracle9i可在不重新启动数据库的情况下修改SGA区的参数,实时改变SGA区的大小。

  3、存储设备

  在网络时代,信息资源的积累和广泛应用对数据存储技术的发展提出了更大的挑战,数据存储模式从传统的总线连接模式进入了网络存储模式。但存储设备依然是硬盘、磁带(带库)、磁盘阵列,在中、小型数据库应用中传统存储模式仍占主导地位。

  磁盘I/O是数据库操作的瓶颈之一,磁盘的合理选择和使用在数据库系统中显得尤为重要。在最初做数据库系统规划时,应充分考虑到系统的容量和预期的增长,尽可能为以后的扩展留足空间。在硬盘和磁盘阵列的选择与使用中,应注意以下几点: 

  ·选择支持热插拔功能的硬盘,这样在出现硬盘Oracle 平台应用数据库系统的设计与开发失败时,可以在系统正常运行的情况下更换硬盘; 

  ·不要选择太大的硬盘,切记对Oracle 应用程序,1~4GB大小的硬盘是比较合适的,最好购买大量的中小型硬盘,这样在配置RAID时可提供更大的灵活性; 

  ·如果选用了磁盘阵列,对于Oracle数据库应用,如果经费能够支持,RAID 0+1是最佳的配置方法。在RAID 5中,读操作性能得到了一定的改善,但写性能损失很大,如果某个硬盘失败,硬盘重建的工作量非常大,RAID 5 适用于DSS(决策支持系统)应用,对OLTP(联机事物处理)应用不太合适; 

  ·在实现RAID时,要正确地选择分条的大小,决定分条大小的三个主要因素是:应用程序的特性(DSS、OLTP、批处理)、操作系统与数据库的数据块大小、磁盘阵列中的硬盘数目。数据库的数据块大小应是操作系统数据块大小的整数倍,同样分条大小也必须是操作系统数据块大小的整数倍。如果使用裸设备,分条大小应是操作系统物理数据块的大小。分条可按照水平方向进行,也可按照垂直方向进行。水平分条跨越每个硬盘控制器进行,垂直分条跨越整个硬盘集合进行,分条集合中的成员数应不大于硬盘控制器数。OLTP应用程序,数据访问的数据量不大,一般可选择32KB 或64KB 的分条大小,而DSS应用程序访问的数据量大,可考虑使用64KB、128KB或256KB的分条大小。

  应用数据库的设计与开发

  Oracle数据库软件安装和配置完成后,就进入了应用数据库的设计阶段,应用数据库设计包括逻辑设计与物理设计。合理的逻辑设计会大大提高数据库的性能,增强数据库的可维护性。在设计中根据应用,抽象出实体关系模型,将实体关系图映射为标准化(数据完整、与应用无关、存储优化)的关系模型(数据库对象),当前有一些辅助工具(Oracle Designer等)来实现实体关系图到SQL代码的映射;数据库的物理设计就是数据库对象的存储设计,即如何为数据库对象分配存储空间。

  在进行数据库对象的设计前,数据库的管理和开发人员对应用和应用的数据及其应用关系要有一个详尽的理解,根据应用进行数据库对象的规划和设计,大概包含以下几个方面: 

  ·确定需建立的数据库用户,明确用户的系统权限和表空间限额,为用户设计资源限制profile; 

  ·确定应用数据应分多少个表进行设计,各表分别属于的用户,各用户对各个表的操作权限; 

  ·明确各表的结构,确定表的主键及约束;

  ·明确哪些表是应用运行的关键表,哪些是事务表; 

  ·分析哪些表是主表,哪些表是从表,确定表和表之间的外键约束,选择合适的表作为表连接的驱动表; 

  ·根据应用,确定在哪些表上对哪些列建立合适的索引;

  ·根据表和索引的设计,确定要创建的表空间和回滚段,为表空间和回滚段选择合适的磁盘,尽可能创建本地管理的表空间,减少数据库空间管理方面的工作; 

  ·明确需要编写的触发器及过程; 

  ·为数据库对象选择备份和恢复策略。

  在数据库设计阶段,有时未必能完全确定合适的数据库对象的特征,应用设计和开发中还可能发现不合适的地方,需要回过头来进行调整和修改。但设计阶段的工作越细致,出现问题的可能性就越小,工作的效率就越高。

  创建数据库对象时,要根据数据库对象的特点,结合存储设备的大小、数量及速度等,对数据库对象分类进行存储,最大限度地消除或减少资源竞争。在数据库对象创建时主要应遵循以下原则: 

  ·应用数据应放在单独的表空间,不要将应用数据放在系统表空间,为防止无意的使用系统表空间,将应用用户的系统表空间限额设为0。

  ·索引和表应放在位于不同硬盘上的不同的表空间,这样会提高数据库操作的速度。

  ·需要同时被访问的表要分开存放,利于并发访问的实施。

  ·如果磁盘数量有限,可把不常联合访问的表放在相同的磁盘上。

  ·预分配的原则。创建数据库对象(表空间、回滚段、表、索引等)时,根据对象的情况设置合适的storage参数非常重要。创建对象设计时,对对象的容量和预期的增长有一个估计,这样才能确定存储参数的大小。一般来说,应预先给表和索引等数据库对象分配足够的空间,数据库段不要太多地做动态扩展,因为会影响数据库性能。一个段(segment)由一个区(extent)构成是最理想的,initial 参数可以稍大一点,如果可能,可设为最大容量的大小,initial必须是db_block_size的整数倍;next参数的设置比较灵活,根据应用进行相应的设置,但也必须是db_block_size的整数倍;为了减少数据库碎片的产生,pctincrease参数应该尽量设为0;更新操作比较少的段,pctfree要设置得小一点,更新操作很多的段要设置得大一些;inittrans和freelists的值要相等,大小与并发事务数相关。

  ·分而治之的原则。大的数据库表和索引可考虑进行分区存放,不同的分区可位于不同的磁盘上,更好地均衡I/O。Oracle可以只对表的某些分区进行查询,这样会提高查询的速度;可对分区进行数据的删除、装载,还可以移动分区,对表的管理和控制具有更大的灵活性;可以有更多的策略选择,更好地执行备份和恢复操作。注意,对某些分区进行操作后,在Oracle8i下必须重建全局索引。

  ·大小和增长趋势类似的表最好放在相同的表空间,可以有效控制硬盘碎片的产生,提高空闲块的可重用性。

  ·相同备份和恢复策略的表最好放在同一个表空间,这样有助于备份和恢复工作的完成。

  ·对响应时间要求苛刻的应用所访问的对象放在速度快的磁盘上。

时间: 2024-10-07 18:44:34

Oracle平台应用数据库系统的设计与开发_oracle的相关文章

浅谈Oracle数据库的建模与设计_oracle

正在看的ORACLE教程是:浅谈Oracle数据库的建模与设计.要开发一个基于数据库的应用系统,其中最关键的一步就是整个系统所依据的数据库的建模设计,从逻辑的到物理的,一个环节疏于设计,整个的应用系统便似建立在危房之上,随着开发过程的不断深入,它要随时面临着各种难  以预料的风险,开发者要为修改或重新设计没有设计好的数据库系统而付出难以预料的代价.所以,一个良好的数据库设计是高效率的系统所必须的.  一.逻辑建模  数据库设计的方法因具体数据库而异,但是建模阶段的相同的,所以可以用一些通用的工具

领域驱动设计和开发实战(转)

背景 领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中.大部分关于此主题的著作和文章都以Eric Evans的书<领域驱动设计>为基础,主要从概念和设计的角度探讨领域建模和设计情况.这些著作讨论实体.值对象.服务等DDD的主要内容,或者谈论通用语言.界定的上下文(Bounded Context)和防护层(Anti-Corruption Layer)这些的概念. 本文旨在从实践的角度探讨领域建模和设计,涉及如何着手处理领域模型并实际地实现它.我们将着眼于技术主管和架构师在实现

分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发

在许多年前,"语言"就等同于"平台",例如C,C++以及最早的Ruby和Python等等.但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这些平台上的语言也越来越多.再后来,某些语言在不同平台上的实现也越来越多,事情也变得有些复杂.技术在发展,但是从目前社区的讨论中,我发现许多朋友的观念还没有跟上.简单地说,如今的观念,一定要从"语言即平台"切换成"语言及平台",当分清"语言"和&quo

云管理平台中虚拟网络设计与实现

云管理平台中虚拟网络设计与实现 大连理工大学   王鑫涛 伴随着网络技术的日益成熟和电子商务的飞速发展,在3G移动互联网和信息化硬性的需求带动下,IaaS云管理平台是将云计算概念运用于运用于互联网数据中心(IDC)的一种新型的云管理平台.IaaS云管理平台中虚拟网络管理系统的采用J2EE体系结构MVC设计模式.数据库服务器采用Oracle DataBase数据库产品,它的高可靠性.高可伸缩性特点将为系统的稳定运行提供坚实的基础.应用服务器选用IBM公司的WebSphere Application

一起谈.NET技术,分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发

在许多年前,"语言"就等同于"平台",例如C,C++以及最早的Ruby和Python等等.但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这些平台上的语言也越来越多.再后来,某些语言在不同平台上的实现也越来越多,事情也变得有些复杂.技术在发展,但是从目前社区的讨论中,我发现许多朋友的观念还没有跟上.简单地说,如今的观念,一定要从"语言即平台"切换成"语言及平台",当分清"语言"和&quo

领域驱动设计和开发实战-住房贷款处理系统

本文先阐述领域驱动设计的基本概念,然后以住房贷款系统的需求为引线,一步一步实战讲解如何进行领域驱动设计的开发,文章来源与网上,先贴出与大家一起分享. 李锡远 2010-8-20   背景 领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中.大部分关于此主题的著作和文章都以Eric Evans的书<领域驱动设计>为基础,主要从概念和设计的角度探讨领域建模和设计情况.这些著作讨论实体.值对象.服务等DDD的主要内容,或者谈论通用语言.界定的上下文(Bounded Context)

会员管理系统的设计和开发(1)

我们在很多情况下,可能都是某种组织的会员,如健身.游泳馆.超市.美容店等其他连锁店,这些针对会员的管理和消费管理,从而提供给会员更多的优惠,一般通过积分的方式实现.本文主要从一个开发者的角度,对会员系统进行的设计开发进行剖析,希望能与大家一起探讨,实现更多的思想碰撞. 如果系统是在一个店铺使用的,那么使用单机版本的操作模式即可,如可以使用Winform + SQLite/Access方式,实现数据的访问,并且方便软件复制和备份工作,如果需要性能好一点或者数据更加安全一点,可以采用独立的数据库方式

深聊APPLE WATCH平台认知与产品设计

  编者按:超多干货!今天腾讯同学@C7210 这篇良心万字长文,从平台认知.产品形态及设计模式三个层面分析Apple Watch,是目前看到的分析最透彻的 Apple Watch 文章 >>> 时至今日,Apple Watch已然高调进入我们的视野,却仍未正式进入我们的世界,绝大多数人的信息来源仍限于Apple官方的介绍.大家有期许,有探索,也有失望.持负面态度者的普遍看法是,"这些事情在iPhone上都能做-手机屏幕那么大,看起来更爽用起来更舒服-令人心塞的续航能力仅支持5

Web设计和开发:2012年Web设计和开发的趋势

文章描述:2012年Web设计和开发的15个趋势. Craig Grannell 访问了行业的精英们关于2012年Web设计和开发的趋势. 2012看来注定是有趣的一年.经济的下滑继续广泛地打击行业,看不到结束的尽头.政府极力审查网络,否认公民的基本权利,支撑摇摇欲坠的媒体公司. 对网页设计和开发,2012还是比较混乱的一年.我们处于很多小矛盾当中:移动贪婪地占领市场份额:原生App威胁开放的互联网:收费墙阻碍曾经免费的信息:合作与分裂的冲突:复古(Skeuomorphism)的交互模式挑战创新