数据库oracle 8初学者指南_第1页
数据库oracle 8初学者指南_第2页
数据库oracle 8初学者指南_第3页
数据库oracle 8初学者指南_第4页
数据库oracle 8初学者指南_第5页
已阅读5页,还剩25页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面(7~10章),已经初步学习了Oracle8i的SQL*Plus、PL/SQL以及数据是如何在大多数团体和个人软件以帮助处理日常的各种有人都希望这一软件所建立的系统能有效地工作—希望系统吸收大量的信息并迅速准确地处理事务。实际上,如果应用程序能被调节,就可以做到这一点。调节是一个应用程序的优化处理过程,它通过尽可能提高运行速度和尽可能减少资源的使用,以达到最好的应用效果。OracleOracle提供的一些工具:SQL*Plus(第7章和第12章OracleDeveloper(第9章),Jdeveloper(第21章),PL/SQL(第8章)。开发者(也被称作程序员)Oracle8i服务器的程序。当安装一个新的计算机系统时,用户常常抱怨系统速度如何的慢、查询的屏幕响应时间如何的长等等。到本章结束时,用户可掌握如下基本内容:共享池(SharedPool)或SQL利用共享池中的SQL为什么要调节Oracle当新的应用程序出现时,常常会听到有关系统如何不理想的抱怨。在设计应用程序时,用户应注意系统的性能,并将其视为与程序设计同等重要的组成部分。调节应用程序有如下长期和短期的好处:任何计算机的计算能力都是有限的,在多用户系统中,当一个以上的用户同时使用系统时,这一点尤为突出。吞吐量是在给定时间片内系统处理数据的能力,调节应用程序将会提高系统的吞吐量。用户花在调节应用程序上的时间越多,系统获取的信息量越大,作为图形、报表以及屏幕查询结果返回的信息就越多。调节应用程序可能是耗时和艰难的操作,但使用本章的概念和准则,用户将会获得极大的收益。在第13章中,将讨论调节应用程序更具体的内容。查询(Query)(该键查询结果(QueryResult)即满足查询要求的数据。例如在ATM取款机上,帐户余额就是磁盘(DiskAccess 等待状态(WaitSituation) 视图(View) 是汇集在内存中以满足SQL语句查询结果的一个或多个表的数据的子集。例如,列出某公司在西部地区所有雇员的数据,而建立视图的表包括了所有地区的所有雇员的数据。同义词 公共同义词(PublicSynonym)是由数据库管理员创建,用以指明对象在数据库中的位置。任何用户都可以使用公共同义词对象。数据字典(DataDictionary)由Oracle它。Oracl字典获取有哪些用户登录到数据库上、什么样的数据文件与数据库相连以及允许用户系统进,Oracle来有关例如Oracle的数据字典中定义了南部地区代码为三位数字()(其中不含数字和特殊字符)。对象(Object)指对所有在数据字典中数据源名称的定义,通常的对象指表,但也高速缓存(Cache)是内存的一个部分,Oracle借助它来完成诸如数据库操作这样的指定作业。高速缓存中包含已从数据库中的数据、处理过的SQL语句信息以及运行作业所需运行方案(Executionn)是一张Oracle所建立的“图”,用以获得满足用户查询要求的数Oracle建立运行方案时,寻找图11-1从AI块(Block)指Oracle中使用的最小单位,数据库的容量在数据库创建时设定,其范围从2K(2048字节)到32K(32768字节),Oracle负责内存中空闲数据库块的,并放置I/O 行标识符(Rowid)Oracle为数据块中的数据分配一个行标识符,它唯一标识数据库中的索引(Index)是由表产生的单独结构,其中含有一个或多个表列以及这些表列值所在行选择列表(SelectList)是一组跟在select后面,到from为止的表列的列表,在下面的SQL语句中,“last_name,first_name,date_of_birth”部分称为选择列表。selectlast_name,first_name, pin=100720安全性数据库操作(SecureDatabaseOperation)通常是限定在DBA用户中的Oracle数系统(SystemPrivilege)由系统赋给用户,允许其完成安全数据库操作。例如,系统“selectanytable”允许所有者在任何数据库的任何对象中选择数据。调节Oracle应用程序几乎与Oracle运行所在计算机的设备无关,调节处理过程首先把计算机主要组成部分调整归零并确保它们的有效运行,所有计算机都由以下部分组成:•处理器(CPU)计算机所操作,常到的有机486和奔腾计算机、K6和PentiumIII以及小型机DEC、Alpha,这些都是处理器的分类名称,现在已成为计算机的专用术语。处理器速度越快,计算机速度越快。提 辅助器设备如硬盘、软盘、磁带和DVDs、CD-ROMs等,用来应用程序运行计算机内存计算机监视器和键盘提示调节处理中有两个主要成分:从内存中数据和减少I/O操作本章在下一节讨论调节处理中从内存中信息和减少I/O操作的办法由于所有计算机的内存容量有限,因此优化内存使用是调节的最大的贡献。本节中将讨论以下基本内容。当运行racle图11- 注意图11-2中的4用户到内存(UM)Oracle在内内存到用户 磁盘到内存 内存到磁盘 数据库和用户之间没有直接的交流途径,所有的读、写和数据修改过程都要经过Oracle内 Oracle一直将先前的查询结果保存在内存中,直到所占的空间被的新的查Oracle在内存中开辟一个共享SQL区域,也称为共享池(SharedPool),所有的SQL语句都从共享池中运行。当SQL语句传递到Oracle时,在把这一条SQL语句装入共享池之前,Oracle当一条SQL语句传递到Oracle时,首先将其放在共享池中,然后Oracle提示 Oracle一直将已经准备好的SQL语句保留在共享池中,当接受到来自用户的一图11-2和表11-1标出了Oracle处理用户的五个查询的四条通信路径UM、MU、DM和MD在表中,指示器PR代表了“准备SQL 图1-2SQL语句Q1、Q2、Q3、Q4以及查询结果QR1、QR2、QR3和QR6。在图1-2中,该表的列值过程指明了用来处理每个查询和返回结果的通信路径。对查询语句Q1、Q2、Q3的处理过程是最令人满意的,因为它没有对磁盘的操作。其次是Q6,尽管SQL语句必须被准备,但也没有对磁盘的。Q4需要对磁盘的,虽然语句已经在内存中;但其查询结果却不在内存里;而对于Q5,Oracle既要准备语句,又要从磁盘中检索结果。提示如果用户写的SQL语句与共享池中准备好的语句相匹配,准备阶段可以跳过去。从磁盘中信息称为磁盘。当从磁盘信息时,在计算机完成给定的操作过程中,最小化磁盘是很重要的。由于在信息时要花时间去精确定位磁盘上驻留的数据,因此定位时间在该过程中就显得十分重要了。本节将就以下内容进行讨论:Oracle如何数据Oracle如何数据一节中,介绍了在为用户提供可用数据之前,怎样将数据从磁盘传输到内存,传输需要I/O操作。Oracle把数据放在构成数据库的数据文件的数据块中,当一个数据块满了,Oracle就将数据放在文件的另一块里。数据块的每一行都由块地址或行标识符来标识。Oracle使用下几节介绍的两种方法之一来获取用户查询数据。本节首先讨论使用索引进行最小化磁盘。通过了解Oracle在有无索引情况下处理数据的过程,将会明白应用程序调节的好处。如果索引存在,且SQL语句可利用索引,则Oracle首先查找索引。Oracle按表11-2的步骤提示使用索引处理查询,所需I/O操作数目明显低于无索引的I/O索引相当于一本手册:数据行是名称,行标识符只是街道地址。如果知道Jacobs住在Rideau大街234号,读者可以直接到他们家的位置。如果只知道Jacobs住在Rideau街而不知道门牌号码,只能挨个房子寻找,直到找到为止。使用索引时,Oracle采用的是相同的操作,索引可提供对数据的快速。图1-3是一个非常简单的例子,假如表A所示的列值在ID列,索引包含ID表列的值加上具有I值的第一列的位置ID15的第一行在005)。图11-3用户传递一条SQL语句到Oracle,在表AID=15Oracle从索引A中读相应的项,寻找所需的数据行的位置。如果Oracle从头至尾读索引A,可在索引表的第4项遇到ID=15的地址,并在地址005的行位置中取得数据。如果索引A不存在,Oracle 无索引时,Oracle做全表搜索以满足查询。对照查询条件表中的每一行数据,放弃不满足条件的行,接受符合条件的行。Oracle读表中的每一行,并按表11-2中的步骤进行处理。表11-2 一步13.有无索引的I/O varchar2 varchar2 varchar2且表里有80000个数据行,Oracle把40个记录压缩在一个数据块,则编号为0001~2000的数有索引,获得该书的信息需要两个I/O操作。首先索引项,得到存放该书的第882122行的行标识符,然后检索和印刷年份。如果没有索引,这本书的数据必须从0001号数据块开正如在本章开头所说的,有效的使用内存是对应用程序调节处理的一大贡献。再加上索引表的使用(导致最小化磁盘),将会使调节应用程序效果更好。本节中将讨论以下内容:Oracle怎样处理SQL怎样书写SQL语句以重复使用共享池中已有的SQL当Oracle接受到一条SQL语句时,运行一个程序来计算语句的值。为说明如何计算语句值,用表11-3所示的城市运行一个非常简单的程序。 fromPORTLAND /*ORinthis case*/wherecol5>col6; fromPORTLAND /*MEinthis case*/wherecol5>col6;978219446721。同样,在下面三 /*MAincasecol5>col6 /*MAincasecol5>col6 /*MOincasecol5>col6两个语句中城市的代码为893417,第三个语句的结果值为662198 表11-4给出一个概要,表明在处理过程中一个语句是如何被计算的,语句值的计算如表中的第一步。 一步2YES=NO=YES=NO=4)准备要运行的SQL56788)执行准备好的SQL句要使用1~8步进行处理。只经过1、2、3、8的SQL语句要比经过1~8步的语句更为有效。在共享池中重用SQL 当SQL语句被传递给Oracl处理时,其秘决是重复使用已经在共享池中的语句,而不是让Oracle在接受语句时去准备新的语句。前面表明,如果Oracle接受了一个与共享池中的语句相一致的语句,就重用共享池中的语句。在下面两节中,讨论如何编写程序的统一代码规则以及使用在Oracle数据库字典中的重要程序代码。注意建立(Establishing)一旦有了合适的约定,就能开始编制可利用共享池中已有的SQL语句的语句了。要想得到这方面的内容,请阅读第7章和第12章。select sum(co/*)/*2col1>/*3andcol1>10 /*Part3*/groupbycol1,col2/*Part4*/orderbycol1 /*Part5关键字groupby,后跟一个或多个表列名,当数据时,对这些列做汇总关键字orderby,后跟一个或多个表列的列表,列表的内容决定了所需数据行的方式。selectcol1,col2,sum(col3)fromfiscal_yearwherecol1>col2andcol1>10groupbycol1,col2orderbycol1; 可以用一把塑料尺在关键字select后取直,以确保其他行的关键字与select的字母的“t”对齐,在下面的列表中的竖线“|”将代表这把尺子。 |col1,col2,sum(col3) |fiscal_year |col1>col2 |col1>10 |bycol1,col2order|by col1;指导对于SQL语句的每个部分,使用分隔线,将每一行的第一个关键字与第一行关键字SQL关键字用大写,其SELECTcol1,col2, 和selectCOL1,COL2fromFISCAL_YEAR;指导在逗号后面加一个空格,程序代码则更容易阅读。如下面的前一行语句代码比后一行更容易阅读。selectcol1,col2,sum(col3)selectcol1,col2,sum(col3)指导 col1 指导 sum(col3), sum(col6),col7,col8,col9,col10,col11,col12,col13指导将SQL语句中的where和and部分(也称谓词)格式化,每个and指导当where后跟有若干个以andand2列,最后一个字母由于语法的要求,在许多SQL语句中使用括号,最常见的是在select列表中作为一个表列 sum指导语句符告诉Oracle语句代码写完了,并要求开始运行。可使用分号“;”或斜杠“/”指导SQL*Plus语句使用分号“;”作为符,当程序中同时有SQL*Plus和PL/SQL语句时,指导x=d=j= 设计自己的编码约定(或用推荐的约定)并遵守这些约定,使要处理的语句与共 Oracle提供在数据库 (代码可用PL/SQL或Java来编制)假设读者在馆工作,希望每天上午产生一个电子备忘录,以指明借阅超过7天期限的OverdueNote按钮,下面的SQL文本将PL/SQLcreateorre 当在Oracle8i数据库中对象时,使用“createorrece”语句,可以避免提示利用数据库中的程序代码设计应用系统,检查所有的事务处理以及主要的通 在向数据库过程及开始执行它们前,需要与数据库管理员联系。因为使用过程(ablespace)中占用空间,必须由数据库管理员来确保有足够的空间。所以在过程被调用之前,应确保数据库管理员已经为系统表空间分配了空间。为了运行用户的程序,必须给其他用户,用类似“grantexecuteonoverdue_noticetopublic”令。数据库管理员必须为过程创建一个公共同义词,例如,“createpublicsynonymoverdue_noticeforpolly.overdue_notice;” 被过程可以从PL/SQL块中运行(在第8章中讨论过PL/SQL块),如--otherPL/SQLstatementsfollowedbyifsysdate-:due_back>=6thenoverdue_notice(borr_ident);endif;被过程也可以从SQL*PLUS中运行(在第7、12章中讨论SQL*PLUS),如--otherSQLstatementsfollowedbyexecuteoverdue_notice('A45R');注意 当调用过程、程序包和函数时,必须检查参数的个数和对象的数据类型,以确保把合法的参数传过去。否则,Oracle会友好地向用户给出错误提示,告知有非法参数。除了被过程外,Oracle还提供其他三种重要的程序代码,即触发器、函数和程序包,触发器与表相关联,当预先定义碰到表中的数据时开始运行,而触发器的运行是透明的。例如,当帐户收款员降低了未付帐户的款额时,该触发一个数据库触发器记录这一事实。函数接收多个参数并向调用程序返回单一的值。例如,ZIP是否有效。调用带ZIP参数的函数,则根据ZIP提示与使用Oracle8i的SQL 参见Oracle8Tuning(Corey,Abbey,Dechichio;andAbramson;Osborne/McGraw-Hill.1998)一书(该书已由机械工业,书名为《Oracle8优化技术》),在该书的第8章“应用程随着功能更强大的计算机的问世,多CPU计算机的出现提高了Oracle并行查询(又称PQO)能力。使用PQO技术,Oracle可并行处理多个操作。在第10章中,讨论过并行运行OracleLoader。Oracle8i服务器能并行处理分类、连接、表搜索、表密度和创建索引操作。PQO的使通过搜索非常大表(通常超过1000000行)来处理大量数据的查询处理连接非常大的表查询,当数以百万行计的表一起进行并汇集查询结果时,使用处理在SMP(对称多处理器)或MPP(大规模并行处理)群和聚合(多个机器一起工作,同一组盘和主数据库)的机器上的查询。对于CPU工作明显不足或间断使用CPU的机器上的处理。一般是按平均利用率不低于 必须是多个CPU的机器才能显示并行处理的好处。不要在单CPU机上试验并行PO的能力。由于应用程序开发者对系统数据的了解比大多数数据库管理员还多,因此必须与数据库管理员一起,来定义对象的并行度以充分利用PQO。Oracle根据表数据所在的磁盘的个数计算缺省的并行度。在决定有多少个并行处理之前,开发者和数据库管理员必须做如下工作:了解用户系统数据的特征,特别是,当从相同组的表中检索信息并且当多用户进程正在并发运行时,必须减少并行度。确定Oracle8i数据库系统的实质,提出问题并计算决策支持系统(DSS)与联机系统(OLTP)之间的差额。这两类系统有不同的处理要求和不同的目的,可以影响并行处理了解Oracle8i基于代价的优化(称之为CBO)的并行特征。在第13章中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论