oracle入门系列.doc_第1页
oracle入门系列.doc_第2页
oracle入门系列.doc_第3页
oracle入门系列.doc_第4页
oracle入门系列.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

Oracle数据库应用 ACCP4.0理论部分提前进教室一:检查是否带教案,U盘;二:检查教师机;三:检查幻灯机;四:填写教室州占用情况表幻灯片1时间2分钟。第一章 oracle入门 同学们好,今天,我和大家一起来学习oracle数据库应用这门课,首先,自我介绍一下,我叫崔霄,是oracle数据库应用的老师,这学期将和大家一起学习这门课。我的EMAIL:xiao_,同学们有问题可以直接通过Email联系,沟通。 这门课程,我们的学时分配如下:同学们可以看一下课本,oracle数据库应用理论部分的教材共九章,理论课分18个学时,加上上机、培训和学习指导,我们使用44个学时来完成这们功课。希望同学们可以渡过一个愉快的学习过程。幻灯片2 时间三分钟。在开始学习本课程之前,首先,我们有必要先了解一下本课程在accp4.0的整个课程体系中的地位。在整个计算机科学课程体系中,数据库是处于比较高端的位置,在accp4.0的课程体系结构中,我们可以看一下幻灯片2,幻灯片中蓝色的部分是相关性较强的课程,第一阶段的SQL Server base和第二阶段的SQL Server是本课程的基础,通过前两个阶段的学习,大家对数据库的基本概念、SQL语言、存储过程、触发器等已经比较熟悉了,到第三阶段,我们将学习“关系-对象”型数据库oracle,即本课程。 黄色的部分是相关性较弱的课程,但是oracle的知识可能会在这些课程中涉及到。包括Java程序设计、JSP/Servlet、WinForms、EJB/Web Service等都可能会使用到oracle中所学的知识。我们可以回顾一下Java的数据库编程。在Java中通过JDBC连接到oracle数据库,并实现对数据库的查询,更新等操作。是不是都要用到相关的SQL和oracle数据库的一些知识,Java Services 和Jsp/Struts,.net框架中的B/S程序设计分客户端和服务器端程序设计。服务端是不是要和后台数据库打交道?所以在这些课程中会用到Oracle的一些知识。白色部分和本课程的相关性不大。幻灯片3 时间三分钟幻灯片3是本课程的总体学习目标,通过学习oracle数据库的应用,经过课堂学习和上机实习,我们将达到这样的教学目标。教学目标: Oracle数据库体系结构是指Oracle数据库的组成、工作过程和原理,以及数据在数据库中的组织与管理机制。学习一门课程,首先要了解它的组成和原理,然后在实践的基础上才能更好的理解这门课程,达到事半功倍的效果。知道原理,下面就需要具体实践,实践中需要熟练掌握SQL命令和SQL函数,我们已经在SQL SERVER的学习中学习了的SQL命令和函数。计算机很聪明,它运算很快,存储的知识很多,可以处理许多人处理不了的事,但是,计算机也很笨,必须使用规范的语言和它交流。否则它的智商难以理解。SQL语言是用户和计算机交流的语言。数据库对象包括表、视图、索引、簇、同义词、序列、数据库链接、存储过程、PL/SQL程序包、存储函数、触发器等。这些数据库对象我们会再以后慢慢给大家讲解。这些数据库对象,是数据库的核心内容。也是SQL要操作的对象。为了提高代码重用和封装代码,简化开发,我们要学习使用PL/SQL编写存储过程。大家都学习过面向对象语言基础,我们可以简单把存储过程理解成一个函数或方法,然后在应用程序中调用这些函数或方法。使用存储过程可以提高程序代码的封装性和模块化,提高可重用性。使用PL/SQL编写存储过程、触发器、数据库备份与恢复等将在以后的学习中介绍。掌握Oracle的配置和管理工具就不再赘述。公欲善其事,必先利其器。SQL语言,PL/SQL编写存储过程,数据库配置和管理工具等,都是器!无论是像Jbuilder、Vc+这样的集成开发环境还是像SQL SERVER企业查询分析器这样的开发工具,都是为了提高使用和管理的方便而提供的用户操作环境。熟练掌握工具可以极大的提高工作效率,简化操作等。板书:ORDBMS,这里OR先不讲,在S上打个圈!Oracle数据库是一个综合的面向对象的数据库管理系统。那么,请同学们回答一下什么是系统?(板书:“系统“并根据学员的回答把系统的概念填写完毕。)幻灯片4 时间三分钟俗话说“三个臭皮匠,胜过一个诸葛亮”。三个个体的组合可以发挥超过三个个体简单相加的能力。三个臭皮匠加起来就是一个专家决策系统,对吧?诸葛亮算得上专家了,在民间,诸葛亮是智慧的化身。民间还有个勇敢的化身是谁?同学们知道吗?系统:泛指由一群有关连的个体组成,根据预先编排好的规则工作,能完成个别组件不能单独完成的工作的群体。Oracle既然是一个系统,必然是由一群有关联的个体并按照预先编排好的规则协同工作,提供对数据的组织管理,对数据库的操作控制等功能。什么是组件呢?我们可以把组件理解成积木游戏中的一块块积木。或者一个系统中的个体。oracle是一个数据库管理系统,那么,它必然有数据库,有数据库的管理,控制,处理部分,有任务(进程)管理和会话(用户连接)管理部分,这些都是它的组件;所以我们本章的目标之一是了解Oracle体系结构的各种组件。通过本章的学习。我们将达到以下目标:了解 Oracle 体系结构的各种组件 既然是一个数据库管理系统,它的核心自然是数据库,数据库提供数据,数据信息可以理解成产品,要不Oracle公司整天说Oracle多么先进,性能多么优良,大家都来买啊!是产品就有使用和消费人员,这些是数据库的用户,也有数据库的维护操作人员,这些都是oracle的用户;大家以后将成为oracle开发人员,应用程序开发人员或数据库管理人员,那么大家也都是oracle的用户。本章的目标之二就是掌握 Oracle中的基本用户管理。掌握 Oracle 中的基本用户管理 为了更好的使用,必须了解 Oracle 的工具 为了使用,必须了解 Oracle 的安装和卸载用一句话叙述:为了使用ORACLE,我们要知道/安装和卸载(引导学生回答);为了简化使用,更好的使用,我们要了解/ORACLE的工具(引导学生回答);使用ORACLE,必然由用户来使用,所以(引导学生回答)为了知道为什么要这样使用ORACLE,我们要/(引导学生回答).幻灯片5 5分钟Oracle 数据库简介 2-1 对象关系型的数据库管理系统 (ORDBMS)在管理信息系统、企业数据处理、因特网及电子商务等领域使用非常广泛在数据安全性与数据完整性控制方面性能优越跨操作系统、跨硬件平台的数据互操作能力数据库技术是信息社会的重要基础技术之一。在当今这样一个信息时代里,随着计算机技术,尤其是Internet技术的迅猛发展,人类积累的数据量以指数速度增长,对数据的存储、交换、集成提出了更高的要求。如企业产品信息,人事财物信息,航空订票,网上购物等,数据库的使用无处不在。所以,数据库的使用领域非常广泛。不用多讲。 从数据库技术的起源和发展历史来看,六十年代IBM的数据库管理系统IMS的推出,是层次型数据库的代表。其后,数据库又经历了层次,网状、关系、对象、和对象关系型等发展阶段。在数据库出现之前,数据保存在专用文件中,数据库概念的一个重要贡献就是将数据从各种应用系统中独立出来而统一由DBMS来管理,实现数据共享。但在实际的使用中,数据之间的关系是千丝万缕的,层次结构不能很好的表达数据之间的关系,基于图论的网状数据库开始出现,由于网状数据库对数据的访问和操纵过于复杂。70年代初,关系数据库理论应运而生。目前绝大多数数据库产品是关系数据库产品,如DB2、Oracle、Sysbase、Infomix等。层次数据的例子: 随着面向对象的概念深入人心,面向对象的数据库在八十年代初开始提出并在八十年代中期实现。但面向对象的数据库并未如人们期望的那样如面向对象编程技术一样取得巨大的成功并成为数据库技术的发展主流。但是许多数据库厂商吸收了面向对象的概念,提出、改进并实现了面向对象的关系数据库(ORDBMS)。ORDBMS 的“OR”部分是什么呢?它是关系数据库的可扩展性部分。我们一旦在概念上完成这一飞跃,就会了解数据库的可扩展性是关系数据库的自然演变的一部分。我们都了解存储过程,存储过程就是关系数据库扩充自身的例子。关系数据库扩充了允许系统和数据库管理员设计处理的“用户接口”和“存储过程“。但仅有这些扩充是不够的。数据类型越来越复杂,对象关系数据库允许用户以抽象对象的方式来存储和操纵一些具有对象特征的数据,数据库设计(模式)是否支持应用系统的对象模型,这是判断是否是面向对象数据库系统的基本出发点。具有关系数据库的全部功能,同时又支持对象的数据库!q Oracle数据库的主要特点q 支持多用户、大事务量的事务处理q 数据安全性和完整性控制q 支持分布式数据处理q 可移植性Oracle支持各种数据类型,支持多用户、大事务量的事务处理。以教材上举的Oracle公司公布的数据为例,Oracle可以支持并发用户数多达20000,支持的数据量多达512PB(1024*1024GB),教材引用的应该是Oracle9的数据,目前Oralce10g的官方数据应该是允许一个最多包含800万TB(800万*1024GB)数据的数据库(bit, Byte, KB, MegaByte, GigaByte, TeraByte, PetaByte, ExaByte, ZetaByte)。数据安全性和完整性控制:Oracle通过权限设置限制用户对数据库的使用、对数据的存取、实施数据审计、追踪以监控数据库的使用情况。支持分布式数据处理:使用分布式计算环境可以充分利用计算机网络系统,使不同地域的硬件、数据资源实现共享。将数据的处理过程分为数据库服务器端和客户应用程序端,共享的数据由数据库管理系统集中管理。用户无需了解数据库的物理位置。Oracle提供数据的共享控制和数据同步。在每个本地数据库副本使用一个本地队列保存更改信息,并通知其它地域的数据库服务器更新数据副本。可移植性:Oracle数据库可以在不同的操作系统上运行,不同的操作系统的Oracle应用软件可以相互移植,移植时其代码修改量仅为4%(来自Oracle公司公布的资料)。从一种操作系统移植到另一种操作系统,不需要修改或只要修改少量的代码。Oracle的主流运行平台是各种UNIX操作系统,同时Windows平台上也有很高的市场份额。幻灯片6Oracle 数据库简介 2-2 Oracle数据库基于客户端/服务器技术1.1.2 c/s简介 2分钟 oracle基于c/s系统结构,此概念将应用程序的处理划分到两个系统中,client和server。前端是客户机,即用户界面(Client)结合了表示与业务逻辑,接受用户的请求,并向数据库服务提出请求,通常是一个PC机;后端是服务器,即数据管理(Server)将数据提交给客户端,客户端将数据进行计算并将结果呈现给用户。还要提供完善的安全保护及对数据的完整性处理等操作,并允许多个客户同时访问同一个数据库。我们为什么要这么划分呢?现代社会是一个信息化的社会,信息无处不在,海量信息随之带来了巨大的存储,管理问题。对信息的处理也随之越来越复杂。客户端和服务器的解决方案应运而生。服务器系统执行数据库相关的所有活动,客户端系统执行与用户交互的活动。分别又称为前端系统和后端系统(前台和后台)。客户机 - 用户和数据库之间的接口服务器 - 存储和管理数据举个例子:学员电话报名(应用程序)-请求报名-前台接听(服务器端启动用户进程)-寻找业务受理人员(服务器进程,调用资源学员姓名,年龄,报的班级,课程,交钱方式,课程等等报名)幻灯片7 10分钟1.1 Oracle9i体系结构首先,什么是数据库的体系结构?数据库体系结构是指数据库的组成,工作过程与原理,以及数据在数据库中的组织与管理机制。 要了解oracle的体系结构,我们可以先回顾一些基本概念:数据,数据库,数据库管理系统,数据库系统,数据库系统结构。数据:数据是什么?信息对吧,抽象现实社会中的信息,信息的组织形式。数据库:数据库是什么?请同学们回答一下。简单来说,数据库是数据的库,也就是一堆数据的集合。是一堆杂乱无章的数据吗 ?(请同学们说。)是排列整齐的,一堆有组织有纪律的数据。严格一点的定义是,一组相互关联的数据集合,是数据的一种结构化高级组织形式,数据库中以文件的方式存储数据。数据库管理系统:是对数据库进行管理和实现对数据库的数据进行操作的管理系统。既然数据库中的数据是有组织有纪律的数据,那么这些数据除了按照一定的数据模型来存储以外,还需要一个管理者,这个管理者就是数据库管理系统。请注意,首先,数据库管理系统它是管理系统,人事管理系统管理的是人及部门中人事的协同。酒店管理管理的对象是酒店的人和物,客人的住宿就餐等,而dbms管理的对象是数据库,数据库管理系统是数据库系统的核心,紧紧团结在以为核心的领导集体周围。以什么为核心的另一个意思就是以什么为本,如以人为本,数据库管理系统以数据为本。那么什么东西以数据库管理系统为本。下面,我们讲一另一个概念:数据库系统。 数据库系统:数据库系统的实质是一个应用系统,由用户,DBMS,存储在存储介质上的数据,应用程序和计算机硬件组成。应用程序:顾名思义,应用程序是针对某一(应用)而设计的一个面向用户的软件系统。是建立在dbms基础上的具有良好的交互操作性和用户界面,如人事管理,酒店管理,财务管理系统等。它与dbms,数据库一同构成数据库软件系统。这些应用最终都要和数据打交道。对于数据库来说,应用程序是数据库的用户。用户:使用数据库的人,我们可以把数据库用户分三类。 使用应用程序提供的菜单来完成数据库操作和生成报表等任务的终端用户; 负责设计和编制应用程序的应用程序员; 全面负责数据库系统的管理维护,保证系统正常运行的数据库管理员。 数据库管理系统如上所讲的,数据库,应用程序和数据库管理系统一起构成数据库软件系统。我们前面曾经说过,装有数据库及数据库管理系统的计算机就是数据库服务器。Oracle服务器是oracle的核心,是DBMS的主要内容,它用于完成DBMS的功能。我们先看一下oracle服务器的组成。既然是数据库服务器,那么数据库是必不可少的。请看p7。其次,在一个装有oracle数据库的服务器上,一定有一些管理者来管理这些数据,实现数据的存取,恢复,并发处理,安全控制等等。必须运行一系列进程(任务)来管理数据库。如文件修改后读写数据等等,前面已经讲过,DBMS管理的对象是数据库,那么必然有一些管理工具存在,这些管理工具即一系列管理进程。卖菜的老大娘,除了基本的卖菜流程外,如果同时两个人买菜怎么办?根据规则一个一个来。这就是进程管理,买青菜是一个任务,收钱找零也是一个任务,一个任务就是一个进程。老大娘心里很清楚的知道这些流程,因为这些流程都在大脑中存储着。而数据库管理系统中这些进程如果要在计算机内跑起来,运行,必须占用内存。由此可导出一个重要的概念:实例。实例:后台进程和内存结构的集合称为oracle实例。那么请同学们说,数据库里有什么?数据这些数据谁管理?实例实例里又有什么? 很显然,进程和内存!此时在黑板上板书:ORDBMS,划两个等号:把实例和管理之间,信息和数据库之间!幻灯片8: Oracle 实例(此处可以以Accp,学员,教工,数据库,内存cpu耗费等为例)。进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。顾名思义,用户进程也就是由用户启动的任务而运行的进程。而服务器进程就是Oracle数据库服务器为了响应用户的查询、插入、删除等用户进程,或为了管理、维护数据库,编译用户SQL语言操纵数据等任务而由服务器启动的进程。当连接建立时,创建用户会话,启动用户进程,与oracle实例建立会话并联接到oracle服务器上。同学们可以看到ORACLE数据库服务器的组成:每当Oracle服务器启动数据库时,就在内存中创建一个oracle实例。实例加载并打开数据库(即将数据库与实例联系起来),最后由这个实例来访问和控制硬盘中的数据文件。此时在p8上可以看到,实例和数据库是oracle数据库服务器的主要组成部分。内存中装载实例,用户进程,服务器进程,而其它文件都存储在硬盘上。 回到oracle实例,刚才讲到实例是后台进程和内存结构的集合,必须启动实例才能访问数据库中的数据,每当用户与数据库建立连接时,流程如下: 而oracle服务器启动数据库时,分配内存(SGA),启动一系列后台进程(PGA),一个实例只能打开并使用一个数据库。 同学们说实例中的内存中有什么?内存保存数据库的控制和维护信息,进程运行所必须的一些信息资源。卖菜的老大娘,当有人买菜,一斤白菜多少钱?付费后找钱给菜。如果有两个人同时买菜怎么办?老大娘脑子里面一查,发现处理结果是“对不起,请大家一个一个来,你先来,后面的稍微等一下”。买青菜,和买白菜都使用同一流程。共享同一个处理规则。这些共享信息存放的地方叫SGA。有些信息时公用的,多个进程都要使用它,如果每个进程单独保存这些信息就会造成内存浪费。所以,我们把共享的数据信息和资源保存在一个公共区域内,这个公共区域就叫SGA(system global area)。PGA(Program Global area)是一个和SGA对应的概念,还有一些内存区域用来保存服务进程的数据和控制信息的内存结构,只有服务进程本身才能够访问她自己的PGA。每个服务进程都有它自己的PGA区(私有的)各个服务进程PGA的总和即为实例PGA的大小。青菜3毛钱一斤,萝卜5毛钱一斤,这些数据对应不同的菜,客户买青菜时老大娘查看内存中青菜的PGA,是3毛钱一斤。而不去想萝卜的价格(即不去查看萝卜的PGA)。Oracle数据库是由若干个物理文件组成,这些文件为数据库信息提供实际物理存储区。数据文件用来存储实际的数据库数据。控制文件是一个记录数据库结构的文件,如数据库名、数据库建立的时间、数据文件的名称、位置、状态、数据库恢复备份信息等。用卖菜的例子已经不行了,老大娘没ORACLE复杂。她不需要记每个菜什么时候定的价。日志文件记录用户对数据库进行的修改操作等信息。可以利用日志文件需要恢复数据、保护数据等。幻灯片9当数据库实例启动时,分配SGA,启动后台进程。SGA的内存被自动分配。SGA是数据库服务器中占用服务器内存最大的一个区域,同时也是影响数据库性能的重要指标。可以想象老大娘身体不太好,脑筋记不得很多事情,遇到打劫的时候不知道怎么处理,查看手册:打110!这样是不是耽误了不少时间。如果老大娘把这些都记住(SGA足够大)。性能是不是更好?Oracle数据库可以处理多个并发用户请求并进行复杂的数据操作,同时还要维护数据库系统使其始终具有良好的性能。为了完成这些任务,Oracle数据库将不同的工作交给多个系统进程专门进行处理。每个系统进程的大部分操作都是相互独立并且完成指定的一类任务,这些系统进程称为后台进程。后台进程的最主要作用是以最有效的方式为并发建立的多个用户进程提供Oracle的系统服务,如进行I/O操作、监视各个进程的状态、维护系统的性能和可靠性等。幻灯片10:Oracle 数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区;Oracle 数据库包括逻辑结构和物理结构;数据库结构是指存储数据的方式。Oracle数据库结构分为逻辑存储结构和物理存储结构。逻辑存储结构用于描述在Oracle内部组织和管理数据的方式,是从逻辑角度描述数据库的组成。如数据库由一个或多个表空间组成,表空间里又包括段,段由区构成,最小的逻辑单位是数据快。而物理存储结构定义了操作系统中组织和管理Oracle数据文件的方式。刚才我们已经讲过,Oracle数据库是由若干个物理文件组成,这些文件为数据库信息提供实际物理存储区。数据文件用来存储实际的数据库数据。如我们毕诚分一期、二期和二年,每期又分几个班级。我在楼道里面喊:“一期ST100班的张三同学请出来”,张三听到后出来来到我面前。他从R5教室跑出来了,但我不管他在哪个教室上课。这里我的喊就是select 张三。一期ST100班就是逻辑结构。具体R5教室其实就是他的物理地址。他下一节课到R4上课,这就是数据的迁移。数据迁移的概念以后再介绍。幻灯片11:q 会话是用户与 Oracle 服务器的单个连接q 当用户与服务器建立连接时创建会话q 当用户与服务器断开连接时关闭会话举个例子:学员电话报名(应用程序)-请求报名-前台接听(服务器端启动用户进程)-寻找业务受理人员(服务器进程,调用资源学员姓名,年龄,报的班级,课程,交钱方式,课程等等报名)。这样就完成了一次会话,服务器端的进程完成了咨询流程。电话结束,关闭一次会话。很容易理解吧。幻灯片12:Oracle 实例内存结构内存区包括什么?实例,后台进程、用户进程和服务进程等。实例内存区又包括SGA和PGA。那么SGA和PGA又由什么组成呢?幻灯片13:系统全局区 2-1数据库信息存储于SGA,由多个数据库进程共享。共享信息都有什么,Look:在教师机上示例:开始/运行 Services msc启动SQL Plus请输入用户名: system/cx as sysdbaSQL show sgaTotal System Global Area 126950220 bytesFixed Size 453452 bytesVariable Size 109051904 bytesDatabase Buffers 16777216 bytesRedo Buffers 667648 bytes这些数据库的共享信息包括:板书:sql程序分析所必须的共享信息,数据管理以及日志管理信息等。相对应的,SGA主要包括三部分:共享池;数据缓冲区和日志缓冲区;fixed size就是SGA中固定大小的内存,用来指向SGA的其它部分。SGA这一部分的大小是不能改变的。保存一些数据结构和指向variable Size的指针variable size指分配的内存块大小可变。SGA的可变块,分为共享池、大池、JAVA池、游标区和其他结构。Database Buffers和Redo Buffers从字面上很容易理解。不必多讲。下面让我们具体看一下这三部分都有什么作用。幻灯片14:系统全局区 2-2共享池:q 共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域q 共享池由库缓存和数据字典缓存组成。q 共享池的大小直接影响数据库的性能。共享池包括以下几部分:库缓存:解析并保存执行过的SQL语句,PL/SQL程序代码,分析过的格式、执行计划、JAVA类等。数据字典缓存:保存最常使用的数据字典信息,如数据库用户的账户信息、数据库的结构信息等。共享池的容量由SHARED_POOL_SIZE参数指定,默认为MB。共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,老大娘什么东西都查手册当然性能不太好了。太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。老大娘什么东西都记是不是太花费时间?扼杀多少脑细胞?而且其它事都不要做了!SQL语句缓冲(LibraryCache) 当一个用户提交一个SQL语句,Oracle会将这句SQL进行分析(parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL,Oracle会把他的分析结果给保存在Sharedpool的LibraryCache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL比第二次运行的SQL要慢一点的原因。 下面举例说明parse的时间 SQLset timing on /显示每个SQL语句的执行时间SQL select * from v$sqlarea; 这是在Share_pool和Databuffer都没有数据缓冲区的情况下所用的时间 SQL select * from v$sqlarea; 从两句SQL的时间差上可以看出该SQL的Parse时间约为00:00:00.02 对于保存在共享池中的SQL语句,可以从V$Sqltext、v$Sqlarea中查询到,对于编程者来说,要尽量提高语句的重用率,减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Sharepool,提高SQL语句的重用率必须先养成良好的编程习惯,尽量使用Bind变量。 数据字典缓冲区(DataDictionaryCache) 显而易见,数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池,供ORACLE内部使用,没有什么可以说的。 它存放有Oracle数据库所用的有关信息,对用户来说是一组只读的表。数据字典内容包括:数据库中所有模式对象的信息,如表、视图、簇、及索引等。 分配多少空间,当前使用了多少空间等。 列的缺省值。 约束信息的完整性。 Oracle用户的名字。 用户及角色被授予的权限。 用户访问或使用的审计信息。 其它产生的数据库信息。 数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。 数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。数据缓冲区:q 用于存储从磁盘数据文件中读入的数据,所有用户共享。q 服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。q 数据缓冲区的大小对数据库的读取速度有直接的影响。数据缓冲区包括以下几部分:脏数据缓存:用来存储从磁盘文件中读入的数据,所有用户共享。数据被修改时,首先要从数据文件中取出,存储在数据缓冲区中。数据经过修改但还没有写入数据库的数据叫什么?脏数据。数据缓冲区中要保存脏数据,既脏数据缓存。数据需要修改时,存入缓冲区标记为脏,将修改写入重做日志,等待DBWn进程将它们写入数据文件。从以上的分析可以看到日志缓冲和进程,此处在板书上添加DBWn进程和日志缓冲区。空闲缓存块:命中缓存块:从名字上很容易理解空闲和命中缓存块的意思,空闲既不包含任何数据,数据、后台进程和服务器进程都可以使用它并将数据写入空闲区域。命中缓存块也即是在本区域中找到所要找的数据。使用LRU(Least Recently Used)来管理。日志缓冲区:q 日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。 q 当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。q 相对来说,日志缓冲区对数据库的性能影响较小。也叫重做日志缓存,保存用户修改信息,每当用户执行Insert、update、delete等语句对表进行修改,或者执行Create、Alter、DROP等语句创建或删除数据库对象时,oracle都会自动为这些操作生成记录,然后由LGWR后台进程把重做日志缓存中的内容写入联机重做日志文件中。重做日志是Oracle的日记帐本,负责记录所有用户对象或系统变更的信息。安装完成后有多个重做日志文件,它们是几个分为一组,组内的重做日志文件大小要一样; 为了使系统性能更好可以在创建多重做日志文件组; 重做日志文件可以名下面命令查到:SQL select * from v$logfile; /显示重做日志文件此处在板书上添加LGWR进程我们可以看一下更详细的SGA的情况。示例:SQL select * from v$sgastat;POOL NAME BYTES- - - fixed_sga 453452 buffer_cache 16777216 log_buffer 656384shared pool krvxrr 126528shared pool enqueue 171860shared pool KGK heap 3756shared pool KQR M PO 218644shared pool KQR S PO 55040shared pool sessions 410720shared pool sql area 1074560shared pool 1M buffer 2098176上面显示的POOL字段时池名。如JAVA池、共享池和大型池等。JAVA池是SGA中专门为所有JAVA类而分配的内存空间。大型池是为可能需要占用大量内存空间的操作分配的大型内存空间。如进行数据库备份和恢复操作、执行具有大量排序操作的SQL语句或者执行涉及大量数据的数据库操作等。幻灯片15:程序全局区程序全局区PGA:PGA是保存服务进程的数据和控制信息的内存结构,只有服务进程本身才能够访问它自己的PGA区。每个服务进程都有它自己的PGA区,各个服务进程PGA的总合即为实例PGA区的大小。老大娘卖菜。通常实例PGA的内容由私有SQL区和会话内存组成。私有SQL区中包含有联编变量以及SQL语句运行时的内存结构等信息。会话信息用于保存用户会话的变量(登录信息)以及其他与会话相关的信息。如果数据库处于共享服务器模式下,会话内存区是共享而不是私有的。在ORACLE中,从下面几个动态性能视图中可以查询PGA区的内存分配信息:V$sysstat 系统统计信息V$sesstat 用户会话统计信息 V$pgastat 显示内存使用统计信息V$sql_workarea SQL游标所用工作区的信息V$ sql_workarea_active 当前系统工作区的信息Select * from v$sysstat在V$process动态性能视图中可以查询到每个Oracle进程的PGA分配的内存和已使用的内存情况,其中PGA_used_mem表示已使用的,pag_alloc_mem表示已分配的,pga_max_men表示PGA的最大值。SQL select pid,pga_used_mem,pga_alloc_mem,pga_max_mem from v$process; PID PGA_USED_MEM PGA_ALLOC_MEM PGA_MAX_MEM- - - - 1 0 0 0 2 132564 198892 198892 3 135068 1180564 1180564 4 4349880 5386656 5386656 5 144248 265500 265500 6 147352 470084 470084 7 140876 207404 207404 8 141260 207404 207404 9 364980 474900 474900 10 513452 717212 2093468 11 442156 509800 509800幻灯片16 Oracle 实例进程结构Oracle 实例有几种不同类型的进程,它们是用户进程、服务器进程和后台进程。当用户执行客户端工作的应用程序或Oracle工具软件(如SQL Plus)等连接数据库时,由Oracle创建用户进程来运行应用程序。用户进程向服务进程发送请求信息。接收服务进程返回结果。用户通过SGA区与服务器中的服务进程通信。服务进程是Oracle自身创建,用于处理连接到实例中的用户进程所提出的请求。Oracle通过创建服务进程为连接到数据库实例中的用户进程提供服务,用户进程总是通过服务进程与Oracle进行通信。后台进程是Oracle数据库为了保持最佳系统性能和协调多个用户请求而设置的。 Oracle 实例启动时即创建一系列后台进程 (数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程)。幻灯片17后台进程 2-1 数据写进程(DBWn):负责将更改的数据从数据库缓冲区高速缓存写入数据文件。 日志写进程(LGWR):将重做日志缓冲区中的更改写入在线重做日志文件。 系统监控(SMON):检查数据库一致性如有必要会在数据库打开时启动数据库的恢复。 进程监控(PMON):负责在一个Oracle 进程失败时清理资源 。 检查点进程(CKPT):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。 归档进程(ARCn):在每次日志切换时把已满的日志组进行备份或归档 。 恢复进程(RECO):负责自动恢复那些失败的事务操作。调度进程(Dnnn):按一定的算法调度用户进程队列,以分配给空闲的服务进程。 服务进程():用户进程服务。 用户进程:在客户端,负责将用户的SQL语句传递给服务进程,并从服务器端拿回查询数据。 幻灯片18后台进程 2-2幻灯片19 Oracle 物理组件物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成) 1控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件,一般来说控制文件有多个备份。 2 数据文件(分用户数据文件和系统数据文件) 管理用户数据和数据库系统本身的数据,如数据字典,用户建立的表的名字,类型等都记录在系统数据中。 3 重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件。 参数文件:定义Oracle实例的特性,例如它包含调整SGA中一些内存结构大小的参数。 归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。 密码文件:认证哪些用户有权限启动和关闭Oracle例程。幻灯片20 Oracle 逻辑组件 3-1数据库的逻辑结构是从逻辑的角度分析数据库的组成,Oracle 的逻辑组件包括:表空间:是数据库中的基本逻辑结构,表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间,不指定就存放在默认表空间中。 段:是对象在数据库中占用的空间. 区:是为数据一次性预留的一个较大的存储空间. 块:ORACLE最基本的存储单位,在建立数据库的时候指定,以后不能再更改。逻辑数据库由若干个表空间组成,每个表空间由若干个段组成,每个段由若干个区组成,每个区由若干个连续的数据块组成,每个块由若干个字节组成。块是读写数据的最小单位。每个表空间由一个或多个数据文件组成,一个数据文件只能和一个表空间相联系。 数据库由称为表空间的逻辑单位组成 表空间实际是保留相关数据库对象的组 Oracle 数据库中的典型表空间是 SYSTEM 表空间 : DATA 表空间 USER 表空间 TOOLS 表空间 TEMP 表空间1)统表空间(Systemtablespace):是各种不同版本的Oracle必备的部分,存放Oracle系统的一些信息,一般只有一个SYSTEM表空间。2)临时表空间(Temporarytablespace):由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Groupby,Orderby等)等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。一般安装之后只有一个TEMP临时表空间。 3)工具表空间(Toolstablespace):用于保存Oracle数据库工具所需的数据库对象,这些工具表空间存放在工作时所用的专用表。旧的Oracle版本无此表空间。安装之后的工具表空间是Tools。 4)用户表空间(Userstablespace):用于存放一些实验例子用的空间,当然也可以用于存放应用系统的数据。旧版本无Users表空间。现在的用户表空间为USERS。 5)数据及索引表空间:存放数据及索引的表空间,Oracle7以后都提倡在应用系统中,特别是具有大量数据的系统,要把数据和索引分开存放在不同的分区中,以便提高查询速度。在安装后索引表空间可能是INDX。数据表空间就是USERS。 6)回滚段表空间(RollbackSegment):Oracle数据库系统在运行Insert、Update、Delete时都需要一个磁盘空间来存放恢复信息(UndoInformation),以便在进行恢复时能将原来信息读出来。安装后的回滚段表空间是RBS表空间。数据库管理员也可根据应用的需要建立另外的回滚段表空间。(为了不加深同学们的理解难度,这些内容暂时不讲:System表空间存储数据库数据字典、所有PL/SQL程序的源代码和解析代码(存储过程、函数、包、触发器等)和数据库对象(如视图、对象类型说明、同义词和序列等)的定义。Data表空间:存储数据文件。User表空间:用户数据。临时表空间:Oracle运行过程中要使用临时空间来保存SQL语句(如排序)执行过程中产生的临时数据。如果数据库用户没有指定临时表空间,这些临时数据默认保存在System表空间,这样会占用System表空间的存储空间,并且频繁释放的临时段会在System表空间中产生大量存储碎片,从而影戏哪个数据库性能。幻灯片21 Oracle 逻辑组件 3-2q 表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。qq 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。q 表空间的大小等于构成该表空间的所有数据文件大小之和。如何查询表空间?数据字典是一组描述数据库系统的表,视图,用户存取权限等等信息的表和

温馨提示

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

评论

0/150

提交评论