关系型数据库:理论背后的灵感(转)
关系型数据库:理论背后的灵感(转)[@more@] 不运用关系型数据库的理论就想使用关系型数据库管理系统(relational database management system,RDBMS)与不踩离合器就想使用启动标准变速器一样不现实。你不要在歧途上走得更远了。实际上,你的应用程序的问题可能就是起因于一个不合格的数据库。但是情况可能会更糟,你创建的数据库可能会错误报告数据、甚至还会破坏数据。在本系列文章中,你将会学到如何运用关系规则并从中学会如何开发一个可以保护数据合法性的数据库。让我们以回顾关系型数据模型的方式开始本系列文章。 在最
关系型数据库:使用范式创建数据库(转)
关系型数据库:使用范式创建数据库(转)[@more@] 关系型数据库理论可能是20世纪60年代和70年代存储系统先锋的救星,但是从那是开始它就成了许多数据开发人员的毒药,就是因为现代数据库系统发展得如此之好,以至于它将其关系型支柱对开发人员隐藏了。设计良好的关系型数据库很容易使用、很灵活,并且能够保护数据的有效性。而设计不良的数据相反仍然能够发挥相当的作用,但是最终可能会导致数据的无效、错误或者丢失。 开发人员有一些专用的规则,叫做范式(normal forms),他们根据这些规则来创建设计良好的数据库。在这里,我
关系型数据库:实现正规化(转)
关系型数据库:实现正规化(转)[@more@] 设计阶段,花在数据正规化上的时间可能比花上其他任何任务上的时间都要多。而且数据越多,这个过程所花的时间更长。根据以往的经验,你可能发现最困难的就是满足第一范式(1NF)的所有要求,因为将重复的值移动到另一个表时,经常会消除不恰当的依赖。 完成最困难的部分后,你可能选择在1NF之后就停止了,但不要这样做。请继续对数据进行正规化,尽可能地通过第二范式(2NF),第三范式(3NF),甚至通过Boyce-Codd范式(BCNF)。这样就能找出那些具有依赖性的数据元素,否则它们会在设计
使用特制的报表来检查Oracle的缓存效率(转)
使用特制的报表来检查Oracle的缓存效率(转)[@more@] 对Oracle进行优化时,一个要点在于对RAM数据缓冲区进行有效的管理。如果能将数据块存储到作为数据缓冲区使用的RAM中,从而避免物理性的写盘操作,Oracle的性能就能获得显著增强。以前,Oracle专家在分配RAM缓存区域时,需要定义db_block_buffers参数(在Oracle 9i中是db_cache_size)来指定这个缓存的大小。然后,让Oracle来管理这个RAM区域中的数据块。但在Oracle 9i中,由于增加了对多个块大小的支持,所以你能管理每个单独的数据缓冲池,并将表和索引隔离到几个独立的数据缓冲区中
调节Oracle数据缓冲区参数,缓冲整个数据库(转)
调节Oracle数据缓冲区参数,缓冲整个数据库(转)[@more@] 在本篇Oracle高级教程里,我会探讨Oracle数据缓冲区的内部机制――Oracle用这一内存来防止不必要的数据块从磁盘重读。理解Oracle数据缓冲区如何操作,是成功地运用它们调整数据库性能的关键。 在Oracle 8i以前的版本里,当数据块被从磁盘送进数据缓冲区的时候,数据块会被自动地放置到最近使用过的数据列表的前部。但是,这种行为从Oracle 8i开始就变了:新数据缓冲区被放置在缓冲区链的中部。在调节数据库的时候,你的目标就是为数据缓冲区分配尽量多的内存
使用script查找DDL语句统计数据(转)
使用script查找DDL语句统计数据(转)[@more@] 在监控Oracle数据库的行为时,数据库管理员需要知道一个表或者索引的创建细节信息,例如日期和时间等。 在DBA_OBJECTS视图中,Oracle提供了一个新的叫做CREATED的栏,管理员可以使用它来显示对象创建时的数据。在实际开发中需要对DDL语句进行相关的审计时,这一栏可以作为鉴定的报告。 下面的script生成了一个很好的管理报告,它显示了过去14天内创建的所有表和索引。 alter session set nls_date_format='YY-MON-DD HH24'; set pages 999 column
用Oracle用户自定义合计函数来提高代码重用性(转)
用Oracle用户自定义合计函数来提高代码重用性(转)[@more@] 合计函数(aggregate functions)就是对一组数据行进行处理的函数,如max和min(对一组数据取最大值和最小值)函数,合计函数用来简化开发者执行某个任务的逻辑复杂度。从Oracle 9i开始,开发者可以创建用户自定义的合计函数,它们可以重复使用而无需做任何修改。通过强有力的编程构造,合计函数实际上很容易编写。现在让我们看看它是如何工作的。 创建toList 为了看看构造合计函数是多么的简单,我举了一个合计函数的例子,即toList函数。该函数的参数为一
寻找没有使用的索引(转)
寻找没有使用的索引(转)[@more@] 那些存在但是没有使用的索引是以个导致DML语言执行效率低下的严重问题,所有的 SQL语句如:INSERTS、UPDATES、和DELETES当它们要更新表中含有很多索引的行时将运行得很慢。 ORACLE专业人士看到一列应用到SQL查询语句的WHERE语句时将会重新设置索引,这有可能使得SQL语句运行更快。ORACLE提供的索引功能可能会重新配置索引到这些表中的列,这种重新配置的索引将削弱装载ORACLE自关联表的执行效率。 在ORACLE9i前,没有办法表示哪些SQL查询语句没有使用的索引。现在我们通过ORACL
减少ORACLE中的磁盘I/O(转)
减少ORACLE中的磁盘I/O(转)[@more@] 使用Muliple block sizes 提供了DBA们在UNIX磁盘I/0子系统上附加的控制能力。ORACLE 的DBA应该理解一些UNIX磁盘I/O的基本原理。 磁盘I/O是ORACLE响应时间的重要组成部分。减少磁盘I/O将为任务提供更高的执行效率 建立更大的blocks将允许ORACLE在一个I/O操作中访问更多的行数据。ORACLE9i支持Muliple block sizes ,ORACLE9i DBA可以很容易的把表从表空间的一个block size移动到另外一个block size。因此便减少了I/O瓶颈。 ORACLE9I DBA 使用工具来很容易的对表进行重组,利用
Oracle9i的物理内存管理(转)
Oracle9i的物理内存管理(转)[@more@] 在Oracle9i以前的版本中,你只能在启动数据库的时候控制Oracle使用的UNIX内存。Oracle提供了一些INIT.ORA参数来检测系统全局区(system global area,SGA)的RAM大小。一旦启动了数据库,你将不能再改变SGA的大小和配置。 Oracle向一个24/7数据库迈进的目标,提出了调整UNIX内存区的大小而不必停止和重启数据库的要求。更重要的是,Oracle9i的动态SGA特性允许你监控SGA内的物理内存使用,并根据现有的Oracle数据库的需求调整SGA内存区域。 Oracle9i还加入了一项新的内存管
谨慎做数据库技术的标准化(转)
谨慎做数据库技术的标准化(转)[@more@] 一些专栏文章之中,我提到过几年前我曾经工作过的财富100强中的大型公司。那里确实是一个工作的好地方,每天的工作都充满了挑战,如果你不喜欢你所做的事情,通常等上几个星期就会有新的事物出现。大型公司所面临的一个挑战就是各种不同的技术的增多。在我们的公司中,我们一直有一个标准化的开发体系结构,问题是每三到五年,这个体系结构就会发生变化。从数据库的角度来讲,我们有面向flat-file(由不包括重复组的一组同类型记录构成的文件)的应用软件(我知道不是数据库),VSAM(我知道它不是
oracle基础入门(转)
oracle基础入门(转)[@more@] 一、ORACLE的表的分类: 1、REGULAR TABLE:普通表,ORACLE推荐的表,使用很方便,人为控制少。 2、PARTITIONED TABLE:分区表,人为控制记录的分布,将表的存储空间分为若干独立的分区,记录按一定的规则存储在分区里。适用于大型的表。 二、建表 1 CREATE TABLE 表名 (EMPNO NUMBER(2),NAME VARCHAR2(20)) PCTFREE 20 PCTUSED 50 STORAGE (INITIAL 200K NEXT 200K MAXEXTENTS 200 PCTINCREASE 0) TABLESPACE 表空间名称 [LOGGING|NOLOGGING]所有的对表的操作都要记
RH9下最简单的WebMail的实现方案(转)
RH9下最简单的WebMail的实现方案(转)[@more@] 笔者挖空心思,终于找到了RH9中的邮件服务的简单配置方法,原来在添加删除中有提示信息,我抓住了SquirrelMail(小松鼠邮件.不错耶)!!! RH9自带了一个php写的webmail,可以提供基于sendmail的邮件web界面,配置的方法也非常的简单,大家只要按照我下面的步骤进行,就可以很轻松的为自己搭建一台Web邮件服务器(大概需要10分钟左右时间!) 1.配置 DNS(在我的另一贴子中) 添加mail.xxx.com的解析记录和邮件,使邮件地址简化为user@xxx.com 格式. 2.配置httpd. 用gedit(我一直用它)编
用.NET新提供的managedprovider来访问Oracle数据(转)
用.NET新提供的managedprovider来访问Oracle数据(转)[@more@] 微软公司把SQL Server提升为.NET应用程序的数据库,但是,由于Oracle很高的市场占有率,你无疑需要在.NET应用程序中使用Oracle数据。在ADO.NET中,Oracle数据是利用通用的OLE-DB provider来访问的,但是这在性能上落后于SQL Server的管理提供者(managed provider)。微软公司认识到了有必要专门为Oracle提供管理者(provider),因此它发布了 .NET Managed Provider For Oracle。 让我们看看如何利用它来访问数据的。 得到你所需要的 在以前,人们常常
在ADO.NET中使用Oracle存储程序(转)
在ADO.NET中使用Oracle存储程序(转)[@more@] 随着近来 .NET Managed Provider For Oracle 的发布,.NET开发人员最终拥有一套通过使用ADO.NET来快速访问Oracle数据库的方法。在 前一章节 里,我讨论了如何使用Oracle管理提供者来连接和执行SQL数据库。现在让我们看看如何在Oracle存储程序中使用一个新的管理提供者。 可能和你以前的方法不一样 如果你习惯于SQL服务器程序的开发,你会发觉Oracle数据库世界里是另一番天地。当运行SQL服务器程序时,访问SQL查询结果的过程正如把一个数据赋予DataReader, DataSet等那样
在Oracle里加快SQL执行的三种方法(转)
在Oracle里加快SQL执行的三种方法(转)[@more@] Oracle提供了多种方法用于减少花在剖析Oracle SQL表达式上的时间,在执行带有大量执行计划的复杂查询时剖析过程会拖累系统的性能。现在我们来简要地看看这些方法中的几种。 使用ordered提示 Oracle必须花费大量的时间来剖析多表格的合并,用以确定表格合并的最佳顺序。如果SQL表达式涉及七个乃至更多的表格合并,那么有时就会需要超过30分钟的时间来剖析,因为Oracle必须评估表格合并所有可能的顺序。八个表格就会有40,000多种顺序。Ordered这个提示(hint)和
理解数据库的统计集聚函数(转)
理解数据库的统计集聚函数(转)[@more@] 为了选用正确的函数,你必须详细地了解现在Oracle SQL中用到的一系列集聚函数。Oracle8和Oracle9都支持的函数包括: AVG CORR COUNT COVAR_POP COVAR_SAMP MAX MIN REGR_ STDDEV STDDEV_POP STDDEV_SAMP SUM VAR_POP VAR_SAMP VARIANCE 几乎所有的集聚函数都将忽略那些NULL列。但是有一个例外,那就是COUNT(*),这个函数将计算所有的纪录而不管是否存在NULL列。在一般集聚函数所有数据都为NULL时,集聚
Oracle9i的自动分段空间管理改善了分段存储的本质(转)
Oracle9i的自动分段空间管理改善了分段存储的本质(转)[@more@] 为了保持其最强大和最灵活数据库的地位,Oracle在最近发布的几个版本里一直都在创建新的机制来对表格和索引的存储进行简化和分块。从Oracle8i开始,Oracle开始在tablespace内部将对象管理进行自动化。第一个增强的地方原来叫做本地管理tablespace(或者简写作LMT)。在LMT里,Oracle将tablespace里的信息从数据字典的表格空间里移出去,而直接将其保存到tablespace自身里。这在Oracle9i里已经成为了一个事实的标准,因为它减轻了数据字典的负担。 表格空
学会使用Oracle9i带有tablespace的空间管理管理工具(转)
学会使用Oracle9i带有tablespace的空间管理管理工具(转)[@more@] 本地管理tablespace(LMT)和自动分段空间管理(ASSM)提供了一种管理数据库里个体对象freelist的新方法。除了这些ASSM特性,Oracle9i还提供了几个新的DBMS PL/SQL工具包,用来使用ASSM查看和管理tablespace。这些工具包包括: dbms_space.space_usage dbms_repair.rebuild_freelists 现在让我们来看看这些工具包是如何使用ASSM的tablespace的。 关于ASSM的补充材料 要获得更多关于ASSM的信息,请阅读我的 上一篇文章 。
GRUB学习笔记(转)
GRUB学习笔记(转)[@more@] 声明:本笔记并非原创,只是我个人的学习笔记! 很多的内容来自www.linuxsir.com www.linuxfans.org www.linuxAID.com 非常感谢以上网站对我的学习提供的莫大的帮助,本着学习和分享的原则我贴出我的学习笔记,更希望兄弟们能给我指出其中错误的地方.谢谢!!! 学习这部分知识,首先要学到问题的思路,其次你还要记住一些东西,是死记硬背下来!你会发现这点东东的确是很有用的! 尽管如此,本文档归属linuxsir-probing!转载请注明出处!更不能被用到商业用途上! 1 首先要了解的几个概念 1.1 启动管