欢迎来到天天文库
浏览记录
ID:28446691
大小:66.50 KB
页数:5页
时间:2018-12-10
《oracle系统设计的优势和原则》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Oracle系统设计的优势和原则收到一个命题,2TB容量的数据,1000并发,7*24的系统,如果就可维护性,可扩展性和系统性能几方面考虑该如何进行系统设计。这是一个很大的题目,牵涉到从硬件到软件,从应用设计到数据库设计的方方面面,足够写一本厚厚的书,其实,我们的梦想不就是有一个维护简单,扩展性良好,性能优秀的系统吗?7*24意味着对于高可用性的要求严格,那么Oracle数据库在高可用性方面的选项包括哪些呢?1.RAC也许很多人仍然对于RAC抱有怀疑,就跟很多人对于RAC抱有迷信一样,持有RAC的性能还不如单节点这样论调的人跟持有性能不好实施RAC就能解决这样论调的人恐怕人数不相伯仲。其实RA
2、C在性能因素上对于应用的提升仅仅是一个方面,RAC对于高可用性的贡献才是真正无可替代的,目前我还不知道有任何其它一种技术可以当Oracle数据库的一个实例损坏的时候(比如主机的网卡出现故障或者主机根文件系统被充满导致机器没有响应等等)另外一个实例可以立刻顶上并提供服务。普通的HA做不到,DataGuard做不到,Streams也同样做不到。RAC多节点能够提供数据库软件滚动升级,对于Oradellg之前的数据库来说这个功能大大减少了系统down机时间,当然实际上DataGuard也可以做到这点,不过即使是DataGuard也仍然有一个Switchover的过程,这仍然需要更多一些的down机时
3、间。1.DataGuardRAC的所有节点持有同样一份数据文件,那么对于RAC来说,致命的故障可能发生在盘阵的损坏或者连接盘阵的光纤交换机损坏,这种情况下有多少个节点也无济于事,因为数据文件出问题了。而DataGuard弥补的是这方面的需求,两个或者多个实例,两份或者多份存储,在一个实例一份存储坏掉的情况下,可以通过Failover或者Switchover命令来进行主备角色的互换。同时延时Apply功能在Oracle还没有大大增强Hashback的前几个版本中也同样有很大的实用价值。2.Strearns个人认为Streams终将取代AdvancedReplication,即使不提及Stream
4、s使用AQ技术而AR使用数据字典表来做延迟队列这两种技术的孰优孰劣,仅仅从最近几个版本的Oracle数据库对AR没有做任何加强这一点上也可以求得佐证。当然,物化视图的刷新由于其操作的简单性以及技术的成熟性在今后很长一段时间内应该还会继续成为多个数据库实例之间同步数据的有效手段。1.Partition为什么这里要提到分区?因为大多数人认为分区带来的是性能提升,但是实际上我们认为分区带来的最大好处是高可用性的提升,诚然,正确地使用分区以及分区索引会带来性能上的提升,带来扩展性的提升,但是即使这些不是我们考虑的问题,为了一个系统能够有优越的高可用性仍然强烈建议使用分区技术来规划数据库。举一个最简单的
5、例子,当我们要卸载历史数据的时候,分区的DDL操作比起对于整表数据的DML操作而言带来的高可用性的提升无疑是巨大的。那么对于上面那样一个系统,我的建议数据库架构是双节点RAC+PhysicalStandby+Partition,也许应用只会使用到RAC中的一个节点,但是仍然需要RAC;也许这份健壮的存储永远不会坏,我们仍然需要DataGuard,至少RMAN备份不用占据产品数据库的资源;也许单表数据只有几G,即使索引全扫描也仍然可以接受,我们仍然要分区。更加Detail的一些设计和维护准则:1.并发度1000,这并不代表会有1000进程同时操作同一个datablock,所以对于表和索引的ini
6、ttrans设计可以参STATISTICS视图中的ITLwaits值,V$SEGMENTSTATISTICS是0racle9i之后很有用的但是经常被大家忽略掉的性能视图。2.Segment使用LMT且uniformsize,避免systemautomaticsize可能产生的空间碎片,这要求我们能够对于Segment的可能大小在设计阶段就又预估,大小相差悬殊的Segment分配到uniformsize不同的表空间中去。3.对于高并发的操作在应用层面予以控制,详细的文章可以参见Piner的这篇-并发容易出现的问题和并发的控制。4.注意约束和索引之间的互相影响,对于一个业务繁忙,任何维护操作都可能
7、是在业务繁忙期进行的系统,尽量避免约束和索引之间的相互影响。比如创建唯一性约束,我们可以先创建普通索引,再创建唯一性约束usingindex,这样操作的好处在于删除约束的时候不会影响索引,这里的关键思想是,约束用于控制商业逻辑,索引用于控制系统性能,逻辑和性能是要分开的,商业逻辑可能发生变化,然后性能不能因为商业逻辑的变化而受到影响。这小小的一点考虑却涵盖了可维护性,可扩展性和系统性能三个方面。5
此文档下载收益归作者所有