超大型系统的特点为: 1.处理的用户数一般都超过百万,有的还超过千万,数据库的数据量一般超过1TB; 2.系统必须提供实时响应功能,系统需不停机运行,要求系统有很高的可用性及可扩展性。 这篇是笔者针对以上特点总结的Oracle数据库设计实例。

一、Oracle数据库设计实例之概论

超大型系统的特点为:

1.处理的用户数一般都超过百万,有的还超过千万,数据库的数据量一般超过1TB;

2.系统必须提供实时响应功能,系统需不停机运行,要求系统有很高的可用性及可扩展性。

为了能达到以上要求,除了需要性能优越的计算机和海量存储设备外,还需要先进的数据库结构设计和优化的应用系统。

一般的超大型系统采用双机或多机集群系统。下面以数据库采用ORACLE 8.0.6并行服务器为例来谈谈超大型数据库设计方法:

确定系统的ORACLE并行服务器应用划分策略;

数据库物理结构的设计;

系统硬盘的划分及分配;

备份及恢复策略的考虑。

二、Oracle数据库设计实例之ORACLE并行服务器应用划分策略

ORACLE并行服务器允许不同节点上的多个INSTANCE实例同时访问一个数据库,以提高系统的可用性、可扩展性及性能。ORACLE并行服务器中的每个INSTANCE实例都可将共享数据库中的表或索引的数据块读入本地的缓冲区中,这就意味着一个数据块可存在于多个INSTANCE实例的SGA区中。

那么保持这些缓冲区的数据的一致性就很重要。ORACLE 使用 PCM( Parallel Cache Management) 锁维护缓冲区的一致性,ORACLE同时通过I DLM( 集成的分布式锁管理器)实现PCM 锁,并通过专门的LCK进程实现INSTANCE实例间的数据一致。

考虑这种情况:INSTANCE1对BLOCK X块修改,这时INSTANCE2对BLOCK X块也需要修改。ORACLE并行服务器利用PCM锁机制,使BLOCK X从INSTANCE 1的SGA区写入数据库数据文件中,又从数据文件中把BLOCK X块读入INSTANCE2的SGA区中。

发生这种情况即为一个PING。PING使原来1个MEMORY IO可以完成的工作,变成2个DISK IO和1个 MEMORY IO才能够完成,如果系统中有过多的PING,将大大降低系统的性能。

ORACLE并行服务器中的每个PCM锁可管理多个数据块。PCM锁管理的数据块的个数与分配给一个数据文件的PCM锁的个数及该数据文件的大小有关。

当INSTANCE 1和INSTANCE 2要操作不同的BLOCK,如果这些BLOCK 是由同一个PCM 锁管理的,仍然会发生PING。这些PING称为FALSE PING。当多个INSTANCE访问相同的BLOCK而产生的PING是TRUE PING。

合理的应用划分使不同的应用访问不同的数据,可避免或减少TRUE PING;通过给FALSE PING较多的数据文件分配更多的PCM锁可减少 FALSE PING的次数,增加PCM锁不能减少TRUE PING。

所以, ORACLE并行服务器设计的目的是使系统交易处理合理的分布在INSTANCE实例间,以最小化PING,同时合理的分配PCM锁,减少FALSE PING。设计的关键是找出可能产生的冲突,从而决定应用划分的策略。应用划分有如下四种方法:

1.根据功能模块划分,不同的节点运行不同的应用;

2.根据用户划分,不同类型的用户运行在不同的节点上;

3.根据数据划分,不同的节点访问不同的数据或索引;

4.根据时间划分,不同的应用在不同的时间段运行。

应用划分的两个重要原则是使PING最小化及使各节点的负载大致均衡。

三、Oracle数据库设计实例之数据库物理结构的设计

数据库物理结构设计包括确定表及索引的物理存储参数,确定及分配数据库表空间,确定初始的回滚段,临时表空间,redo log files等,并确定主要的初始化参数。物理设计的目的是提高系统的性能。整个物理设计的参数可以根据实际运行情况作调整。

● 表及索引数据量估算及物理存储参数的设置

表及索引的存储容量估算是根据其记录长度及估算的最大记录数确定的。在容量计算中考虑了数据块的头开销及记录和字段的头开销等等。表及索引的initial和next存储参数一般设为相等,pctincrease设为0。

● 表空间的设计

ORACLE数据库的表和索引是透过表空间tablespace存储在数据库中的。在tablespace设计时一般作以下考虑:

1、一般较大的表或索引单独分配一个tablespace。

2、Read only对象或Read mostly对象分成一组,存在对应的tablespace中。

3、若tablespace中的对象皆是read only对象,可将tablespace设置成read only模式,在备份时,read only tablespace只需备份一次。

4、高频率insert的对象分成一组,存在对应的tablespace中。

5、增、删、改的对象分成一组,存在对应的tablespace中。

6、表和索引分别存于不同的tablespace。

7、存于同一个 tablespace中的表(或索引)的extent 大小最好成倍数关系,有利于空间的重利用和减少碎片。

● DB BLOCK SIZE

超大型数据库DB BLOCK SIZE一般在4KB 至 64KB,而最常用的是8KB、 16KB或32KB。选用较大的DB BLOCK SIZE可使INDEX的高度降低,也会提高IO效率。

● Redo Log Files

ORACLE 使用专用的进程redo log writer (LGWR)将日志写入日志文件。一般日志文件最好建在专用的镜像盘上。日志文件组的个数及文件的大小的设定与系统交易量的大小有关。ORACLE并行服务器中每个INSTANCE使用各自的一组rego log files。一般的每组日志文件的个数为3-7个,每个的大小为200MB-500MB。

● 数据文件大小

建议用标准的文件大小,如200M、1GB、2GB、4GB、8GB等,可简化空间的维护工作。

● 回滚段

回滚段一般建在专用的表空间中。每一个INSTANCE实例拥有各自的回滚段。设置回滚段的一般原则是: initial 及 next 存储参数的值是相等的,同时还是DB BLOCK SIZE的倍数。每个回滚段的minextents设为20,optimal参数的值保证回滚段缩小时不低于20个extents。

● 临时表空间

临时表空间一般建在专用的表空间中。每一个INSTANCE实例拥有各自的临时表空间。这样使用临时表空间时不会有PING。设置临时表空间的initial=next。

四、Oracle数据库设计实例之系统硬盘的划分及分配

在多机集群环境下,ORACLE并行服务器通过操作系统提供的DRD服务来共享同一个数据库。每一个INSTANCE对数据库的数据文件的访问都是通过该数据文件所在的DRD服务进行的。

考虑以下情况:主机1上有DRD服务1,该服务对应的数据文件有1、2、13、35、67等,这时如果主机2上的INSTANCE2需要读取数据文件13,通过DRD服务调度,主机1通过DRD服务访问磁盘阵列上的数据文件13,把INSTANCE2需要的数据读到内存,然后通过MEMORY IO把数据传到主机2的INSTANCE2。写操作是读操作的逆过程。通过以上分析可知,系统硬盘的划分及分配的原则是尽量减少MEMORY IO。

五、备份及恢复策略的考虑

数据库的备份与恢复在系统设计中占很重要的地位。好的备份及恢复策略可以降低系统的运行风险,减少因硬件故障而造成的损失。

ORACLE备份方法:

1.物理备份

将数据库的物理文件通过操作系统的命令或工具备份到备份介质上。物理备份往往用于存储介质故障时恢复数据库系统的数据。

根据数据库运行方式的不同,可进行不同的物理备份:

a)物理冷备份(offline backup)

物理冷备份要求数据库在关闭(所有INSTANCEs停止)的情况下进行。这种备份必须是完全备份,即需备份所有的数据文件、控制文件(control file)、日志文件(redo log file)、初始参数文件等等。物理冷备份的步骤简单,但要求系统能够停止。

b)物理热备份(online backup)

物理热备份是在数据库系统正常运行的情况下进行的数据库备份。这种备份可以是数据库的部分备份,既备份数据库的某个表空间(tablespace)或某个数据文件(datafile),也可备份控制文件(control file)。物理热备份要求数据库在ARCHIVELOG模式下运行。这种备份一般用于应用系统不能停机的情况。

c)归档日志文件备份(archived log file backup)

要使数据库系统能够恢复到故障点前一时刻状态,或恢复到某指定时刻状态,数据库必须采用ARCHIVELOG模式。在ARCHIVELOG模式下,数据库系统会产生归档日志文件(archive log files)。归档日志文件也需备份到备份介质上。在恢复时,这些文件可使数据库恢复到最近状态。归档日志文件产生在指定目录下,这些文件一生成就可以备份到备份介质上,DBA可根据磁盘空间情况,定时将它们备份出去。

2.逻辑备份

逻辑备份是通过ORACLE提供的Export工具,将数据库的结构定义及其数据卸出到特定格式的文件中,并备份该文件。

在实际应用中,逻辑备份与物理备份并用。一般来说,物理备份用于磁盘介质损坏或数据文件损坏;逻辑备份用于数据库中的某些对象被破坏或用户误操作。

备份策略的考虑主要在以下三个方面:

● 存储空间;

● 对现行运行的系统的性能影响;

● 恢复时间的影响。

如果需要节省空间和恢复时间就需要增加备份的频率,但是备份操作会明显增加现行运行的系统的负载。

ORACLE的恢复方法,根据不同的备份方法采用不同的恢复方法。

使用物理备份恢复,ORACLE提供了三种恢复手段:

1、数据库级的恢复;

2、表空间(Tablespace)的恢复;

3、数据文件的恢复。

数据库级的恢复要求数据库在关闭但Mount的状态下进行。表空间及数据文件的恢复可在数据库运行的状态下进行。

使用逻辑备份恢复,当数据库中的某一对象被损坏,或用户的误操作使数据破坏(如误删表) 时可用逻辑备份恢复。用逻辑备份只能恢复到备份时刻的状态。

总之,数据库系统的设计是一门高深的学问。本文是作者基于几年管理超大型计费系统经验和教训,参考ORACLE8.0.6文档的基础上完成的Oracle数据库设计实例。由于本人才疏学浅,难免有不当和错误之处,敬请有识之士批评指正。

超大型Oracle数据库设计实例相关推荐

  1. oracle数据库设计实例

    1)要求 设计一个网上购物程序(使用powerdesigner建立模型并编写测试数据).有一下需求: 管理员可以在后台添加商品,每个商品属于一个商品组 可以对管理员进行分组,对每一组进行分别授权,即一 ...

  2. Oracle数据库的乘号是什么,(Oracle数据库设计实验指导书yk.doc

    (Oracle数据库设计实验指导书yk Oracle数据库设计实验指导书 <Oracle 数据库设计>课程实验 一.本实验课在培养实验能力中的地位及作用 Oracle 数据库设计是软件工程 ...

  3. Oracle - 数据库的实例、表空间、用户、表之间关系

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  4. Oracle数据库设计要做到五戒

    众所周知,数据库设计的好坏直接关系到数据库运行的效率.根据笔者的经验,对于提升数据库性能来说,合理的数据库设计,比升级服务器的硬件配置,还要来的有效.但是,笔者无论是在跟同事合作,又或者是在论坛上跟相 ...

  5. linux数据库实例开机启动,Oracle数据库之Linux下实现Oracle数据库单实例开机自启动设置...

    本文主要向大家介绍了Oracle数据库之Linux下实现Oracle数据库单实例开机自启动设置,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 步骤思路: 1:查看ORACLE_ ...

  6. oracle数据库与实例的区别与联系

    本文参考相关博客与文档,对oracle数据库和实例做一个总结. oracle数据库与实例是两个截然不同的概念,这一点与其他关系型数据库区别很大. 简单来讲,实例是数据库的一个快照: 打个比喻,数据库就 ...

  7. oracle数据库_实例_用户_表空间之间的关系

    oracle数据库_实例_用户_表空间之间的关系 基础概念:Oracle数据库.实例.用户.表空间.表之间的关系 数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制 ...

  8. 篮球赛场数据统计系统数据库设计实例

    篮球赛场数据统计系统数据库设计实例 研究内容(篮球赛场数据统计系统)    1)比赛前对球队.球员各项基本信息的录入功能: 2)比赛时对进球得分.各种进球类型以及裁判评判情况等数据和信息的记录功能: ...

  9. oracle报错数据复数,Oracle数据库设计策略及规范

    Oracle数据库设计策略及规范 设计策略及规范 1. 目的 定义Oracle数据库设计规范,作为数据库规划.设计.开发以及维护人员的技术参考资料.用以规范和指导相关人员的设计行为. 2. 概述 本文 ...

最新文章

  1. R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图
  2. 德扑 AI 之父解答 Libratus 的13个疑问:没有用到任何深度学习,DL 远非 AI 的全部
  3. 云炬随笔20190419
  4. Android构建流程——篇五
  5. Python面向对象(二)
  6. Shell中的一些小技巧
  7. 《Effective Java》读书笔记 - 5.泛型
  8. [react] Mern和Yeoman脚手架有什么区别?
  9. 下拉列表项过多会导致浏览器卡死
  10. Python vtk学习(1)
  11. 四款优秀的源代码扫描工具简介
  12. CUDA/CUDNN下载安装以及适配pytorch和tensorflow
  13. python 制作抽奖箱_海安当地横幅制作值得推荐,抽奖箱制作-漫谈
  14. ROS与VREP通信
  15. 单机MySQL性能_单机数据库性能测试总结
  16. CSICTF2020随缘Writeup
  17. 基于python的opencv图像处理对交通路口的红绿灯进行颜色检测,无人汽车驾驶第一步!
  18. python语言的实验心得体会范文_实验心得体会四篇
  19. lr中的lr_output_message,Lr_debug_message,Lr_error_message,Lrd_stmt,Lrd_fetch函数
  20. 3D 空间中拟合曲线

热门文章

  1. 洛谷 p1010 幂次方 python实现
  2. android m3u8离线播放器,android上实现离线缓存播放加密HLS视频和未加密的HLS视频...
  3. 【python】利用python计算A类不确定度
  4. 译者后记 ——《DOOM启示录》读后感(二) 1
  5. wireless-tools源码分析-iwpriv
  6. python代码运行不了怎么办_Python编程之运行出错怎么办
  7. 基于java+ssm+vue+mysql的银行排队叫号系统
  8. Java:图书管理系统
  9. 关于JQuery源码解析
  10. python网页信息违法吗_爬虫到底违法吗?这位爬虫工程师给出了答案