intermilandll/
共8个网摘 [
1 ] |
访问intermilandll的个人空间
intermilandll收录,使用标签:数据库,时间:2008-5-8 13:35:15 | 相关网摘,我也收藏
出处:中国IT实验室
这篇文章主要介绍了几种超大型Oracle数据库应用系统的设计方法,详细内容请参考下文。
一、概论
超大型系统的特点为:
1.处理的用户数一般都超过百万,有的还超过千万,数据库的数据量一般超过1TB;
2.系统必须提供实时响应功能,系统需不停机运行,要求系统有很高的可用性及可扩展性。
为了能达到以上要求,除了需要性能优越的计算机和海量存储设备外,还需要先进的数据库结构设计和优化的应用系统。
一般的超大型系统采用双机或多机集群系统。下面以数据库采用Oracle 8.0.6并行服务器为例来谈谈超大型数据库设计方法:
确定系统的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最小化及使各节点的负载大致均衡。
三、数据库物理结构的设计
数据库物理结构设计包括确定表及索引的物理存储参数,确定及分配数据库表空间,确定初始的回滚段,临时表空间,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并行服务器通过操作系统提供的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的状态下进行。表空间及数据文件的恢复可在数据库运行的状态下进行。
使用逻辑备份恢复
当数据库中的某一对象被损坏,或用户的误操作使数据破坏(如误删表) 时可用逻辑备份恢复。用逻辑备份只能恢复到备份时刻的状态。
http://soft.chinabyte.com/189/8102189.shtml
intermilandll收录,使用标签:数据库,时间:2008-5-8 13:34:40 | 相关网摘,我也收藏
来源: 狼族博客
有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,数据量的增加,MYSQL渐渐地出现不堪重负的情况:连接很慢甚至宕机, 于是就有把数据从MYSQL迁到ORACLE的需求,应用程序也要相应做一些修改。本人总结出以下几点注意事项,希望对大家有所帮助。
1.自动增长的数据类型处理
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
2. 单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
3. 翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;PHP里还可以用SEEK定位到结果集的位置。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位 置, 并且只能用ROWNUM80。
以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 ):
语句一:
SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
语句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
4. 长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长 度字段值都应该提出警告,返回上次操作。
5. 日期字段的处理
MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01','YYYY-MM-DD')年-月-日 24小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.日期型字段转换成字符串函数TO_CHAR(‘2001-08-01','YYYY-MM-DD HH24:MI:SS')
日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用 DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;
MYSQL中插入当前时间的几个函数是:NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以 直接存到DATE字段中。CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())
而oracle中当前时间是sysdate
6. 空字符的处理
MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
7. 字符串的模糊比较
MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快,用字符串比较函数 instr(字段名,'字符串')>0 会得到更精确的查找结果。
8. 程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
http://www.liuxuan.net/blog/posts/253/mysqlheoracledeyixiecaozuoqubie/
intermilandll收录,使用标签:数据库,时间:2008-5-8 13:31:08 | 相关网摘,我也收藏
来源:上海热线
数据库管理专才难觅
RHI咨询公司执行董事凯瑟琳·斯潘塞·李认为:“精通Oracle和微软SQL Server管理,并能把电子商务应用中收集到的大量数据转变成‘商业智能’的人员,越来越受到企业的青睐。” 什么叫“商业智能”?下面的例子也许能说明。
美国沃尔玛超市的一位数据管理人员在进行信息整理时,意外地发现了一个数据联系:啤酒与尿布的销售成正比。这位数据管理员由此断定,很多父亲在给孩子买尿布的同时会捎上些啤酒。于是他建议在尿布旁边放上啤酒。这样一来,尿布和啤酒的销量都在不经意间上升了。
商业智能如此重要,但能将数据转化为商业智能的人才却不多见。在上海银河教育中心举行的数据库管理职业前景说明会上,数据库管理专家李耿告诉记者,目前市场中的数据库管理人才主要由软件专业应届毕业生或其他专业的人才转行而来,接受过系统化数据库管理培训和认证的人员相对较少,多数人对各种数据库管理的工具与产品认识不足,实际操作能力欠缺。可以说,市场对这类人才需求日益增大,但现有人员不能完全满足需要。
如何从新人成长为专才
数据库管理是最近几年兴起的职业,由于人才紧缺,其平均收入在IT领域居于高端。据统计,持有MCDBA(微软认证数据库管理员)证书的IT专业人员要比持有MCP、MCSE的专业人员的平均年薪高出30—50%。
高薪使得很多人趋之若骛,但数据库管理是一项比较枯燥的工作,每天要面对浩如烟海的原始数据,通过对数据的整理、抽取、合并来获取有用信息。这个过程十分艰难,何况不一定每次都能获取有用信息,甚至有时会获取一组“垃圾”。因此,从事数据库管理,一定要对这份工作怀有强烈的愿望和热爱,这样才能保证原始的工作热情,否则很难在这个行业坚持下去。
座右铭:要为你热爱的东西而工作,或者学会热爱你的工作。
第二步:寻找合适的工作平台
数据库管理是一个复杂的系统工程,想进入这个领域,知识准备固然重要,经验准备更加关键。要想成为优秀的数据库管理人员,一定要去应聘那些真正依赖于数据库管理的大型企业或机构。一般而言,政府机构中的劳动局、建设局,以及电信、银行、证券等几类企业对数据库管理的要求比较高。进入这些企业或机构,你才有机会参与大型数据处理项目,接触到一些数据库管理的初步工作。当然,如果有幸进入专业的数据库管理公司,那你的专业能力一定会突飞猛进。
座右铭:电信公司、证券公司、社保基金管理办公室……是你的就业方向。
第三步:自我学习
大学里掌握的软件知识不足以应付数据管理工作,自学是必不可少的步骤。学习可以分成两方面:一方面是技术上的学习。现在流行的数据库管理软件是Oracle和微软SQL Server,你必须对它们有足够的认识,并且能够熟练地运用。还要对各种辅助产品有相当的认识,明白进行什么任务时应该采用何种工具,如SPSS、INFOR?鄄MATICA、COGNOS等。另一方面是专业的学习。包括在整理数据方面的专业知识,如统计学的一些基本概念;还有就是与所从事业务相关的知识,比如要整理银行客户信息,你就必须了解银行会关心贷款申领人的哪些基本条件,年龄、基本收入、银行存款,婚否……这些要素在整理数据时一个都不能少。总之,数据库管理几乎是一个全新的职业,你必须天天学习,每天进步一点。
座右铭:好好学习,天天向上。
第四步:在团队中崭露头角
一般而言,一个机构会由整个团队来完成信息系统管理的任务,并不设置专门的数据库管理人员。如果你刚刚进入这个团队,可能只做一些基础性质的工作。经过学习,经过团队中一定的磨练,你也可以毛遂自荐,在数据建模、数据开发、数据挖掘等方面主动承担一部分任务。这样,你就会在团队中树立起精通数据库管理的形象,而且能够积累实际操作经验。一旦有了真正的大项目,你就能大显身手了。
座右铭:关键时刻,敢于充当“出头鸟”。
http://edu.online.sh.cn/education/gb/content/2005-05/09/content_1173501.htm
共8个网摘 [
1 ]