oracle数据库课程

2024-10-25

oracle数据库课程(精选13篇)

1.oracle数据库课程 篇一

Oracle数据库使用心得

092909 谢弘毅

经过助教对oracle和sybase数据库的讲解后,我下载使用和体验了这两个数据库,但主要的还是使用了Oracle数据库,经过一段时间的使用,对其使用有了一定的心得体会,并且通过阅读资料对其现在的前景状况有了一定的了解。

【选择Oracle的原因】

(1)在Gartner/Dataquest报告中Oracle依然在主流操作系统Unix和Linux, Windows NT/2000/XP上的关系数据库市场上占据绝对的领先地位,在UNIX上占63%, Windows+Unix上占49.9%。在关系型数据库市场(包括AS/400,Mainframe),Oracle以39.8%仍然处于领先地位。

(2)Oracle数据库依然是Fortune 100公司的首选数据库,其中51%的Fortune 100公司选用Oracle Database作为构建企业的传统应用和电子商务平台。

(3)Oracle数据库与Sybase数据库相比,无论从体系架构、并行支持、完整性控制等各方面均有很大的优势。

【Oracle相比于sybase的优势】(1)体系结构的比较

Oracle采用多线索多进程体系结构,直接在内核中支持分布式数据库操作、多线索处理、并行处理以及联机事务处理等。Sybase采用单进程多线索体系结构,其核心是SQL Server

(2)多线索多进程与单进程多线索的比较

Oracle和Sybase都采用多线索。Oracle多服务器进程结构,能实现数据库事务的并行处理,提高并发事务处理的响应速度。并且多服务器结构具有非常灵活的扩充性,当硬件平台处理能力提高时,服务器进程的个数也能随之增加,数据库性能也随之提高。Sybase采用单进程多线索方式。当并发用户数达到一定的数量时,会引起系统处理性能大大下降,和服务器进程瓶颈及死锁等现象;同时系统的可扩展余地非常狭窄。

(3)联机事务处理

Oracle的多线索技术在相同硬件环境下,所支持的用户数是其他数据库 系统的5至10倍。

【我对Oracle一些概念的理解】

(1)ORACLE SERVER

一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据库。

一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开(Open)在一个数据库上,负责数据库的相应操作并与用户交互。

实例与数据库的关系如下图所示:

图一 ORACLE SERVER

(2)ORACLE内存结构(Memory structure)Oracle内存结构主要可以分共享内存区与非共享内存区,共享内存区主要包含SGA(System Global Area),非共享内存区主要由PGA(Program Global Area)组成,可以用如下图形表示。

图二 ORACLE MEMOERY STRUCTRUE

(3)后台进程(Background process)后台进程是Oracle的程序,用来管理数据库的读写,恢复和监视等工作。Server Process主要是通过他和user process进行联系和沟通,并由他和user process进行数据的交换。在Unix机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows机器上,Oracle后台进程相对于操作系统线程,打开任务管理器,我们只能看到一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。

Oracle系统有5 个基本进程他们是:

 DBWR(数据文件写入进程):将修改过的数据缓冲区的数据写入对应数据文件,维护系统内的空缓冲区。 LGWR(日志文件写入进程):将重做日志缓冲区的数据写入重做日志文件。

 SMON(系统监护进程):工作主要包含:清除临时空间,在系统启动时,完成系统实例恢复,聚结空闲空间,从不可用的文件中恢复事务的活动,OPS中失败节点的实例恢复等。

 PMON(用户进程监护进程):主要用于清除失效的用户进程,释放用户进程所用的资源。

 CKPT(检查点进程,同步数据文件, 日志文件,控制文件):同步数据文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一至,这就需要CKPT进程来同步。CKPT会更新数据文件/控制文件的头信息。

(4)ORACLE的物理结构 1)数据文件

每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:

 一个数据文件仅与一个数据库联系。 一旦建立,数据文件不能改变大小

 一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。

数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。2)日志文件

每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。

日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。

日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。3)控制文件

每一ORACLE数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:

 数据库名;

 数据库数据文件和日志文件的名字和位置;  数据库建立日期。

 为了安全起见,允许控制文件被镜象。

每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。

【我对Oracle图形界面使用心得】

Oracle数据库是一个大型系统,具有强大的数据定义、操纵、组织和存储和维护等管理功能,还具有一定的数据通信接口功能,且分有图形操作界面和文本操作界面。听老师说学习数据库技术就是要学习其语言,熟悉掌握文本操作能有效提高数据库技术。但作为一个初次与实体数据库接触的学生,我更喜欢图形操作界面。在几次尝试中我有以下体会: 【优点】

(1)图形界面给人的第一印象就是直观,相比起纯语言的模式,图形界面能更好的体现你的操作。因为学习数据库以来,老师所讲解的都是一些查询语言,和命令行之类的语言的知识。而通过直观的图形界面,使我数据库的基本结构(物理存储结构、逻辑存储结构)有了更为深刻的了解体会,看到了oracle数据库的一些优秀的特性。和一些优秀的操作功能。

(2)使用图形界面能够更加快捷且准确的行使数据库的各种操作。因为oracle数据库支持图形等操作,使得一些需要用SQL语句或是命令行的操作可以通过简单的拖放点击图形即可完成,这一方面减少了错误的发生,一方面也简化了工作任务。

(3)图形操作界面包含了语句操作的所有功能,而且还能通过教程或是文档获得帮助,这使得你能在使用的过程中克服一些困难。最重要的是,在图形界面的使用过程中你可以直观清晰的看到各种操作产生的结果,加深你对数据库中各种关系的理解。

【缺点】

(1)使用图形界面不能做到像语言命令操作的多变性,一部分操作通过语言能够简单化,例如对于很多对象的查询和修改,就比较适合用语言操作,这体现了图形界面操作的局限性。

(2)图形界面所占用系统资源大,不利于多用户的并行操作。也减低了系统的处理能力。最关键的是图形界面不容易维护和修改对象(3)无逻辑

图形操作是一个非结构化的操作集合,先后顺序完全掌握在操作者手中。这种操作过程很容易出错,而文本操作着可以利用语句有效控制。

【总结】

虽然使用oracle一段时间,但是要学的东西实在是太多了,不仅是数据库软件本身,还有SQL语言也是要好好学的,虽然说觉得图形界面好,方便,但是如果最基本的语言没学好,还是不能有所作为的。

2.oracle数据库课程 篇二

Oracle数据库是甲骨文公司基于Oracle平台的商品化应用软件包。其具备强大的数据储存、管理能力,具有良好的安全性、稳定性,在金融、电信、邮政、企事业单位广泛应用,已成为世界上最流行的大型关系数据库系统之一。据Garner公司统计,2013年关系数据库管理系统市场份额中,Oracle的市场占有率达到47.4%,远高于微软、IBM等公司。近年来,Oracle的市场占有率仍在增长[1]。甚至不少用人单位在相关招聘时,要求应聘者能熟练操作和管理Oracle数据库。

国内诸多高校计算机类相关专业均将《Oracle数据库》课程作为专业核心课程。但教学效果并不十分理想,主要表现在以下几个方面:(1)教材内容偏理论,实用案例相对较少;(2)课堂教学中教师讲授过多,学生缺乏足够的实践机会;(3)考核大多采用期末笔试的形式,缺乏对学生实际操作能力的考核。以上问题的存在,使得课程教学无法达到预期效果,因而也就难以适应现代社会对于Oracle数据库技术人才的需求。本文以培养学生Oracle数据库应用能力为目标深入探究课程教学。

1 理清教学思路,准确定位课程教学目标

《Oracle数据库》课程一般设在专业课学习的中后期,先修课程有《数据库原理》及编程语言等,该课程和《数据库原理》课程联系紧密[2],但更侧重于应用。该课程教学内容、教学过程、教学方法等都应紧紧围绕提高学生实际动手能力这一中心目标。

(1)树立教师为主导,学生为主体的教学理念。教师有效的教学组织可帮助学生高效完成学习任务,掌握Oracle数据库操作技能。教师的主导作用主要体现在课堂教学内容设计和教学方法运用以及课堂引导上。学生主体性强调学生学习的主动性和自主性。鼓励学生积极、大胆发言,了解学生对问题的认识,创建自由讨论的氛围。

(2)摒弃传统的重理论轻实践的思想,注重理论和实践结合[3,4]。首先在内容选择上紧跟Oracle数据库技术发展,除根据教学大纲外,可以适当扩充案例。讲授时将理论和实践有机结合起来,使学生掌握Oracle的基础理论知识、基本操作方法以及Oracle数据库的管理与维护,能够运用Oracle技术和某种语言进行数据库系统开发和设计。结合市场需求,可以将本课程定位于Oracle数据库管理员(初级)和Oracle开发工程师两个就业方向。学生学完课程后可以胜任Oracle数据库开发等岗位。

2 合理安排教学内容

教学内容安排需适应Oracle数据库管理员(初级)和Oracle开发工程师两个职位的能力需求,具体如下:

(1)紧跟Oracle数据库技术发展,采用较新的Oracle数据库软件版本Oracle11g,使学生毕业后能够尽快适应岗位工作。

(2)根据教学大纲梳理知识点,确定教学重点和难点,选择适合的案例进行讲解和训练。对于难点但非重点内容,着重让学生理解;对于既是难点又是重点的内容,多讲多练。针对教学重点和难点选择案例非常重要,既要达到掌握知识点的目的,又要有实践性,调动学生的积极性。由于学生学过《数据库原理》课程,对于数据库已有一定了解,因此共性内容可以简单介绍,内容安排上侧重Oracle的特性。在讲解Oracle数据库发展过程时,教材中主要列举了软件版本的变化。为了让学生深入了解甲骨文公司的文化和历史,可以补充甲骨文公司发展历程,激发学生对Oracle数据库的学习兴趣。同时,把握好案例难易程度,让学生通过一定努力,能够取得阶段性的成果,增强学习成就感,进而激励自己以更大的热情投入到学习中。

(3)学期末布置完整的项目开发任务,采取小组分工合作的形式完成。通过项目开发让学生详细了解和掌握各种开发语言和ORACLE数据库的连接、使用方法等。

3 综合运用多种教学方法

为达到预期教学效果,可以综合运用多种教学方法。通过启发式、讨论式、项目驱动式等方法开展探究式学习[5],引导学生积极参与探讨,融入课堂教学,调动学生学习积极性和主动性。

(1)项目驱动式教学法。“项目驱动式”教学法来源于建构主义学习理论,师生通过共同讨论、研究完成一个具体项目。具体来说,要求精心组织实验内容,将实际案例融入教学。将每章内容分解为若干个学习情境,每个学习情境中采用项目引领,按由简到繁、先易后难的原则将项目开发任务分解为逐步递进的分项任务,使学生在完成各个分项任务的过程中掌握必备的知识和技能。

(2)案例教学法。案例教学是一种开放式、互动式教学。指导学生提前阅读案例,组织开展讨论。案例教学要结合相关理论,通过各种信息、知识、经验、观点的碰撞达到启示理论和启迪思维的目的。教学过程中,每个相对独立的操作可以分解为若干个案例。此外,有些内容或知识点操作步骤比较繁琐,学生往往思路不是很清晰,不能掌握具体的操作步骤,不会上机操作。为此,可以采用录屏软件将授课过程录制下来,或采用笔记形式,教师将操作步骤并分发给学生,便于学生复习。可以抽查部分学生演示,针对出现的问题重复讲解和演示,强化教学效果,让学生真正的掌握知识点,提高实际动手能力。

4 注重培养学生的团队协作能力

学期初即以3~5人组成项目团队,每个团队选出一名小组长,担任项目经理角色。分组时考虑学生基础不同,在自由结合的基础上合理调配,争取让每名学生通过团队和项目学习提高能力。学期末考核可以采取提交课程项目的形式,通过团队学习培养学生知识应用能力、团队意识及协作精神[6]。同时,采用课堂小案例、学期大项目的教学方式,学生团队在教师的指导下,掌握正确解决问题的办法;团队成员在与同伴的互动过程中,亲身体验实际项目开发过程,增强团队意识,训练协作沟通能力,培养职业素养;在平时课堂讨论中也可以小组为单位,发挥积极主动性,培养自主学习的能力。

5 采取过程性评价考核方式

传统的笔试考核方式无法适应Oracle课程教学要求,可以采用过程性评价考核方式。采取目标与过程并重的方式,整合教学过程,具体考核设计如表1所示。

考核由3个部分构成,采用百分制形式。期末考试占综合成绩的一半,采用机试方式进行;平时成绩占综合成绩的40%,其中阶段性测验分3次进行,各占10%;团队作业占10%;课堂参与度占10%,主要包括课堂提问、讨论和考勤。这种考核方式,一方面要求学生注重平时学习的积累,不依靠期末考试成绩勉强过关,另一方面通过团队作业锻炼团队协作能力。

6 结语

教学实践表明,综合运用新的教学模式,能够较好完成Oracle数据库课程的教学目标。新教学模式的应用大大增强了学生的学习兴趣,帮助学生熟练掌握Oracle数据库的各项操作和管理技巧,同时也锻炼了学生的团队协作能力和项目开发能力。

参考文献

[1]瞿中.数据库教学方法改革的探索与实践[J].黑龙江高教研究,2006(2):113-114.

[2]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2006.

[3]胡旺.一种激发学习兴趣的数据库课程教学方法:从应用到原理[J].计算机教育,2009(17):128-129.

[4]高丽华.软件精英是这样炼成的[M].北京:高等教育出版社,2010.

[5]叶进,张向利,吴瑕莉.基于问题的学习及其教学策略的设计[J].计算机教育,2007(7):29-30.

3.创建Oracle数据库的原则 篇三

关键词:Oracle;数据库;原则

中图分类号:TP311.13 文献标识码:A文章编号:1007-9599 (2010) 14-0000-03

The Principle of Creating Oracle Database

Liu Yin

(China Airlines Clearing Co.,Ltd.,Beijing100028,China)

Abstract:In the China Aviation Clearing Corporation six years of work has been engaged in the Oracle applications database development and maintenance.Application process in the establishment of a database and found that many applications do not meet the Oracle database creation application of the principle database settings. This problem is prevalent in many systems,we consider the availability of more,while ignoring the performance of the database problems.I would like to work according to their own practical experience,according to Oracle applications to talk about the process of database creation and consideration should be noted that some basic principles and requirements.

Keywords:Oracle;Database;Principle

首先我想要申明的是,这个过程是根据NT上Oracle应用数据库建立过程来说明的,但是所说的原则同样适用于其他的操作系统平台(如UNIX)。虽然对于Oracle方面的高手来说,有一点班门弄斧的嫌疑,但是对于一个需要全面了解Oracle建立过程的初、中级用户,仍然还是大有益处的(这个例子中将要建立的实例名和数据库名设为VETO)。

一、初始化文件(initSID.ora)的建立

大家都知道要建立一个初始化文件(例如initAOMN.ora),这个文件可以用写字板进行编辑和修改。这个文件决定了实例的基本配置和性能,中间参数的大小需要根据具体的应用要求决定。用户还可以根据情况的变化,以后进行调整修改。

许多关键的参数Oracle公司都给了大、中、小三个标准,用户可以根据需要确定。除了要修改DB_NAME,将它改为将要建立的数据库名外,还有以下的几个参数要注意:

(一)CONTROL_FILES是指定控制文件的名称和位置。控制文件必须小于8个。但是为了防止控制文件毁坏而导致数据库的崩溃,建议将控制文件指定在不同硬盘上互做备份。文件名最好让人望名知意。

(二)SHARE_POOL_SIZE指的是共享池的大小,如果想加快SQL语句的处理速度,而且操作系统的内存足够的话,可以开大些加快速度

(三)DB_BLOCK_SIZE这个参数设置Oracle块的大小。对于OLTP(在线事务处理系统),应该设置得小点,而对于DDS(数据仓库)而言,应该设置得大点。一旦设定并且数据库建立以后时没有办法修改的。这个问题值得注意。

二、建立实例(Instance)

数据库的实例指的是为处理数据库而分配的内存结构和后台处理过程,它的配置和性能由上面的初始化文件决定的。为了在操作系统中建立这个实例,必须使用Oracle提供的Oradim工具。我们可以在NT Windows菜单的运行中输入:

ORADIM73 -NEW -SID VETO -USRPWD VETO -STARTTYPE SVRC,INST -STARTMODE AUTO -PFILE=D:ORANTDATABASEVETOINITVETO.ORA

这个命令的结果是在操作系统中建立了一个实例,并且实例的启动方式是自动。internal用户的密码是VETO,在系统的服务中建立了OracleStartVeto和OracleServiceVeto两个服务。在开始的时候OracleServiceVeto已经启动,但是OracleStartVeto可能没有启动。所以可用Net Start OralceStartVeto直接将OralceStartVeto和OralceServiceVeto启动,确保这个实例所需的服务都正常启动。即:C:NET START OracleServiceVeto

三、建立数据库(database)

实例的建立只是为数据库的建立做了一个准备,我们可以将实例付给任何一个数据库使用,只要数据库的参数MaxInstances没有被超过。建数据库需要用CREATE DATABASE命令,最好事先将参数写入一个SQL文件中,以被使用和今后的维护。我们需要了解建立数据库时,一些参数的意义,有利于我们对数据库性能的把握。

例如:这里用到的CREATE_DB_VETO.SQL

CREATE DATABASE VETO

CONTROLFILE REUSE

MAXLOGFILES 32MAXLOGMEMBERS 5MAXDATAFILES 50 MAXINSTANCES 2

LOGFILE GROUP 1 ('D:ORANTDATABASEVETOLOGVETO11.RDO',

'D:ORANTDATABASEVETOLOGVETO12.RDO')SIZE 1M,

GROUP 2 ('D:ORANTDATABASEVETOLOGVETO21.RDO',

'D:ORANTDATABASEVETOLOGVETO22.RDO')SIZE 1M

DATAFILE 'D:ORANTDATABASEVETOSYSTEMVETO.DBF' SIZE 100M

CHARACTER SET ZHS16cgb231280;

在这里我们需要注意以下几点要求:

(一)如果initVeto.ora文件中指定的controlfile已经存在才可以在建立数据库时使用CONTROLFILE REUSE,否则不能使用.

(二)MAXLOGFILES指最大的redo log file的group数。MAXLOGMEMBERS指最大的redolog file的group中的member数。MAXDATAFILES指数据库中最大的datafile数。MAXINSTANCES指数据库可被多少个instance使用数。这五个参数将会影响controlfile的大小

(三)LOGFILE指的是redo log file的设置,每个GROUP中的MEMBER文件的大小必须是大小相同的。由于redo log file是循环使用的,所以最少必须有两个GROUP,否则数据库无法建立。虽然每个GROUP的MEMBER文件可以只有一个,但是为了防止某个MEMBER文件的毁坏而导致数据库的不可用,必须在每个GROUP中有多个MEMBER,最好是每个GROUP有相同数目的MEMBER文件。建立数据库的SQL语句写好后,以internal用户进入,重新启动实例并进入数据库的nomount状态,建立数据库并打开数据库。

结果:INSTANCE启动,数据库是OPEN状态,数据库可以被使用。在建立数据库的过程中,数据库中所用到的基表都在这个过程由系统运行sql.bsq自动建立了。

四、建立动态性能视图(data dictionary view)

当数据库建立后,用户仍然不能用system用户的身份进入系统。这是由于数据库的基表虽然已经建立,但是动态性能视图没有建立,所以system的身份无法被系统确认。必须以sys或者internal用户的身份重新进入系统,运行catalog.sql和catproc.sql(这两个文件存在于目录%Oracle_homerdbms73admin中)。catalog.sql的目的是建立动态性能视图。catproc.sql的目的是建立运行SQL,PL/SQL所需的一些函数包和其他帮助工具包。虽然这个时候system用户可以登录数据库,但是可能系统要求运行pupbld.SQL,目的是防止系统设置的确省的profile不能被访问。

五、建立监听器(LISTENER.ORA)

数据库的基本结构已经建立,但是用户仍然无法远程访问数据库,因为操作系统,需要为新建的实例建立一个监听器,监听用户发出的连接请求。首先,我们必须手动的修改D:ORANTNTWORKADMINLISTENER.ORA的最后部分,然后,我们进入操作系统的服务中重启OracleTNSListener服务使修改生效,新的监听器建立。但是我们还是不能远程访问数据库,必须建立数据库别名。

六、建立数据库别名

监听器中的SID_NAME指的VETO是监听器监听的连接串的值。这个值必须等于数据库别名,所以我们必须在SQL NET EASY CONFIG中建立数据库别名,使数据库的能被远程访问数据库。例如:VETOTCP/IP10.1.3.57VETO。上面句中的前一个VETO指的是数据库别名,而后一个VETO指的是实例名。由于为了方便使用和理解,推荐使数据库别名等于实例名。

七、表空间(tablespace)

上面的六步将数据库建立了起来,但是对于一个Oracle应用数据库来说仅仅是将基本的结构建立了起来,为了使数据库能够被应用程序所使用,必须为不同的应用建立不同属性的表空间。首先,建立一个存放应用程序的数据的表空间,在建立这类表空间的时候存在很多问题。我们先来建立一个数据表空间,再讨论一下建立的原则,这些原则是避免问题的关键:

create tablespace DATA

datafile 'd:orantdatabasevetodatveto.ora' size 600M

storage(initial 1600K next 1600K pctincrease 100 minextents 1 maxextents unlimited)autoextend on next 100M maxsize 1000M;

(一)由于许多系统在建表生成的SQL语句中并没有指定表的存储参数, 建表时会使用表空间的存储参数,所以并且在建立表空间时最好指定存储参数。这需要根据具体系统的特点来设置,对于一个数据表空间,由于不同的表的定义和存放的数据量一般有很大的差异,所以建议采取中等的值。

(二)为了防止在分配extent时在表空间的数据文件中产生碎片,initial和next的值必须是db_block_size的整数倍。而且是db_file_multiblock_read_count*db_block_size的整数倍,目的是在全表搜索时速度快。

(三)数据表空间中的数据表比较多,而大量的表的数据比较小,所以initial和next不能太小,也不能太大,minextents设置为1。而且个别表中的数据多,所以maxextents设置为unlimited,pctincrease=100保证数据可以全部导入表中。pctincrease的设置必须满足上面的第二条,也就是接下来建立的extent不会在数据文件中建立碎片,在这里设为100,设所有的分配的EXTENT满足条件。

接下来建立一个存放应用程序代码的表空间,这类表空间中的数据变化不大,并且数据量不大,所以initial和next也不必太大,pctincease设置为0.其他的原则与建立数据表空间的原则一致.

八、建会滚表空间和回滚段(rollback segment)

回滚段是用来记录是数据被DML(数据处理语言)处理前的值,如果事务被回滚,可以将数据恢复到修改前。它还为其他的用户提供读一致性(read consistency),就是数据被一个用户进行DML处理但还没有提交时,其他用户读取数据时看到的值。数据库建立时,会在system表空间中建立一个系统回滚段,这个回滚段是为system/sys/internal用户操作动态性能视图及其基表而使用,其他用户不能使用这个回滚段。所以我们必须为其他用户操作数据库数据而建立回滚段。为了减少因使用回滚段产生的碎片,最好建立一个专门的回滚段表空间。然后就可以建立回滚段了,但有几点必须注意:

(一)在创建时回滚段可以指定为PUBLIC或PRIVATE(默认),在创建后不能更改。一般建立的回滚段为PUBLIC。不能为回滚段指定PCTINCREASE参数,总是设置为0。这一点很多时候都被忽略了。对于回滚段而言,总是使用INITIAL=NEXT,以保证所有的扩展有相同的大小。

(二)OPTIMAL参数,如果设置了,必须至少和回滚读段的初始值相等,而且最好设置,可以保证回滚段在没有事务处理时可以自动的回到OPTIMAL指定的值,释放空间。

(三)按照事务所需的平均空间设置OPTIMAL参数。如果没有适当的数值,把它设置为初始值,以后再调整。不要把MAXEXTENTS设置为UNLIMITED。这可能会导致不必要的回滚段扩展,可能会由于程序错误造成数据文件的扩展。

(四)总是把回滚段放在分离的、独占的表空间中,以便把竞争和碎片降到最低。所以必须专门的建立一个回滚段表空间。回滚段的数量没有详细的规定,但是对于OLTP系统,一般四个事务对应使用一个回滚段。回滚段必须ONLINE后才可以被使用。

九、建临时表空间

很多时候我们忽略了临时表空间的建立,因为它的影响仅仅限于排序查询时,对速度的影响。临时段是在排序结果大于PGA中SORT_AREA_SIZE指定的排序区,在指定的临时表空间存放排序的中间结果时产生的,在实例关闭时才释放。由于临时段产生的碎片比任何段都多,所以必须建立一个专门的临时表空间,虽然在临时表空间中只有一个临时段。

十、建立用户并授权

对于一个应用程序,必须建立不同于SYSTEM用户的其他用户来管理应用程序的数据和代码。所以我们将上面建立的数据表空间和代码表空间分别给用户DATA和CODE,如下:

CREATE USER UNIFACE IDENTIFIED BY ACCA DEFAULT TABLESPACE DATA TEMPORARY TABLESPACE TMP PROFILE DEFAULT;

GRANT RESOURCE TO UNIFACE;

CREATE USER CODE IDENTIFIED BY ACCA DEFAULT TABLESPACE CODE TEMPORARY TABLESPACE TMP PROFILE DEFAULT;

GRANT RESOURCE TO CODE;

要求和原则:

(一)建用户时必须指定用户的确省表空间和临时表空间,确省表空间保存用户所有对象。临时表空间是在排序时作为当排序所需的空间大于SORT_AREA_SIZE时存放临时过程使用的。

(二)用户建立时,系统自动将角色CONNECT付给用户,但是用户如果想拥有建立对象的权利,就必须将角色RESOURCE付给用户。

虽然第二步到第四步在NT上都可以在INSTANCE MANAGER中完成,但是由于不能给大家更加清晰和灵活的配置,建议不要用。而且根据以上十步关于建立Oracle应用数据库的过程,可以将这个过程写成批处理过程,这样不仅有助于保留建立应用数据库的参数,加快数据库的建立过程,而且还有助于日后的对数据库进行性能调整。所以我推荐根据具体的应用系统要求,建立一套标准的建立过程,是很有必要。

4.改善Oracle的索引数据库 篇四

当我们使用CREATE INDEX来创建索引时,Oracle提供了很多参数来改善创建索引的速度、索引所占用的空间和索引树的层次。

1、速度因素

PARALLEL选项:当创建索引时,Oracle首先会进行全表扫描来收集符号键和ROWID对,而PARALLEL选项允许多处理器并行扫描表,这样就会加速索引的创建过程,

一般推荐的PARALLEL值为CPU数减1。

NOLOGGING选项:NOLOGGING选项因为不写日志,所以大大提高了性能,比不使用NOLOGGING选项大约会节省70%的时间。使用NOLOGGING创建索引的唯一风险就是如果数据库需要做前滚恢复,你将不得不重建索引。

2、空间和结构因素

COMPRESS选项:COMPRESS选项用于在创建非唯一性索引时压缩重复值。对于连接索引(即索引包含多列)来说,COMPRESS选项会使索引的大小减少一半以上。COMPRESS选项也可以设置连接索引的前置长度。

使用大BLOCKSIZE的表空间:将索引建立在大BLOCKSIZE的表空间上,将大大降低索引树的层次。

5.PB如何连接Oracle数据库 篇五

作为一个优秀的客户端开发工具,powerbuilder必然需要与大型的数据库相连接,尽管许多资料上都介绍了如何通过odbc或者powerbuilder自带的db profile或者专用接口连接上数据库,但仍然有许多使用者按此方法却无法连接上数据库,这方面的原因可能是powerbuilder本身的原因,比如在安装powerbuilder时的选项、odbc的版本之类;也可能是在安装客户端的oracle、sybase、informix、sql server等软件上的问题,下面就从最根本的odbc配置开始,教你一步步如何连接上数据库。 odbc数据源的配置

进入控制面板,打开odbc数据源(32位),如图1所示,点击“add”按钮,进入odbc数据源的配置面板,如图2所示:

选择“oracle odbc driver”一项,注意当前版本号为“8.00.0400”,如果你的操作系统中安装的是oracle7,则相应的版本号会不同。提醒一点:在windows98操作系统上是无法安装oracle8.0.4的(只能安装oracle7.2.3),oracle8.0.5则没有试过。因而会有一些使用者在windows98系统上无法正常配置odbc数据源,因为windows98本身自带的odbc数据源已经比oracle7数据源版本要高,无论你怎样配置odbc,系统总会提示你要安装一个更高版本的oracle,自然你就无法配置odbc了,有一个解决方法就是用pb7第二张光盘上的odbc安装程序覆盖系统中的odbc,或者把你的操作系统改为windows95/97算了。

然后进入“oracle8 odbc driver setup”设置,在“data source name”一项中随便输入一个名字,在“data source service name”一栏中输入oracle连接数据库的字符串名,这可以在你安装的oracle目录中的tnsnames.ora文件中查看到(oracle7安装路径为“orawin95 etwork admin”;oracle8安装路径为“orawin95 et80admin”),或者你通过“sql net easy configuration”新添加一个数据库连接配置,将配置中的字符串填入即可,其他的就不必再填入,避免出现画蛇添足之错,反而连接不上数据库了。 db profile数据源的配置

进入pb,打开db profile,如图4所示,选择odbc一项,点击“new”,进入pb数据源的配置,如图5所示。当然如果你之前没有进行odbc的配置,你也可以在这里点击“config odbc”进入之前你看到的odbc配置界面。

在“profile name”中自定义一个名字,然后从“data source”的下拉菜单中选择你在odbc中已经配置好的数据源,输入登录数据库所需要的用户名与密码,当然你认为没有这个必要性的话可以不在这里输入(主要是不要轻易让人知道你数据库的口令,不然问题就大了),到这一步为止,pb已经做完了所有数据库连接的配置,剩下的就是连接上数据库了。 pb for oracle专用接口的配置

同样是进入pb,点击db profile选项(这是对oracle7版本而言,如果是oracle8,相应的选项就是oracle8.0.4),看到上面的“073 oracle 7.3”选项没有,点击一下,再按“new”进入图7的界面,“profile name”一栏随意填,“server”一栏填写时要注意,oracle7版本一定要在数据连接字符串前加上@,否则不能连接上pb数据库,oracle8版本则不必加上@,其他的设置就可以不用了。

以上三种pb连接数据库的方法其实十分简单,但是初学者却又会经常出错,在这里只是想作为一种抛砖引玉之用,希望广大初学者通过本文对pb数据源配置能够有一定的了解。下面再对oracle连接数据库的配置文件tnsnames.ora简单说明一下,“tnsnames.ora”文件其实是通过“sql net easy configuration”初始化配置后的参数文件,如果你不想通过“sql net easy configuration”进行配置,你只需要把你先前已有的“tnsnames.ora”文件放入oracle的admin目录中,覆盖现有的文件就可以了,当然你也可以再自己添加数据库连接字符串。通常,一个“tnsnames.ora”文件内容如下: ······kf.world = (description = (address_list =(address =(community = tcp.world) (protocol = tcp) (host = 136.12.145.5) (port = 1521) ) (address =(community = tcp.world) (protocol = tcp) (host = 136.12.145.5) (port = 1526) ) ) (connect_data = (sid = sid3) ) )······

6.oracle数据库课程 篇六

学习完oracle数据库后,我们进行了一次大实习,实习是分组进行的,我们组根据老师的安排,采用Oracle数据库技术建立员工工资及其个人所得税管理系统。小组成员主要是xx,xx和xxx。xx:整体设计,数据展现层操作,代码整合;xxx:数据库概念结构、逻辑结构、物理结构设计,增删改查sql语句的编写;xx:税值计算函数编写,系统测试,调试,相关文档的整理及编写。

通过对需要完成任务的整体分析,我得出需要做的工作包括这么几条:

1.根据需要创建自己的用户(注意起名规范,参见下述要求:对象含义_姓名首字母_学号后三位)和相关数据库表(比如类似在Hr Schema中的employees及departments表等)

2.编写一个函数(函数名需带姓名首字母及学号后三位),查出给定员工号的员工工资及佣金的每月应纳税额:注:个人所得税算法如下:扣除标准:工薪所得扣除标准提高到3500元,计算个人所得税税率表 :工资、薪金所得适用。

3.用Java作一个界面C/S,通过JDBC/ODAC/ADO调用oracle数据库对象,采用友好易用的用户界面:

 实现员工基本信息(含工资、奖金等)的增删改查;要求员工表主键是自增

长字段,使用sequence和触发器或存储过程实现自增长。

 实现员工工资及奖金和需缴纳的个人所得税等员工工资条信息的查询与(可

选的)Excel输出;

 通过调用存储过程实现各部门员工工资及其年收入的分析报表(具体分析需

求自定,如分析一下各部门员工中比本部门员工平均年收入高出30%的员工(可简称“高薪员工”)姓名、所在部门名和年收入金额、个人所得税等;)。接着我们的工作开始了。在开始的时候我们各做各的去了,很多意见和想法没有去及时沟通,所以各自盲目地做着,有些时候做不下去了也不知道去沟通,而是一个人呆着苦闷或是干脆不做了。所以在开始的时候大家对于怎么合作完成一个实习任务是不清楚的。因为每一个环节都不可能是孤立的,我们在每一步都需要去了解互相的进展和需要,比如李杨负责数据库的与平台的链接,我负责数据库的操作和结构设计,如果不去及时沟通,总不能知道我做成什么样让他能更好地操作,甚至我做好了数据库,他还不清楚,这时候其实是可以提前拿过去测试一下的。正如这种例子经常在我们前期工作的时候出现。经过我们前两天的工作,我们后来一起讨论了下下一步怎么配合。所以在后期我们都能很好地合作,顺利地完成了任务。

本学期oracle数据库的学习对于我了解数据库又有了进一步的理解和进一步加强了数据库的操作能力。对数据的更删改查更熟悉了,对用户的创建和管理有了进步。Oracle的学习,开始是在自己电脑上安装了软件,然后对软件的操作有了了解。在老师的讲解和学习中,学会了数据库的各种操作,创建了自己的永华和数据表,使用了oracle内置函数、调用存储过程和函数。学会使用PL/SQL的顺序、循环和分值结构。前面学习过数据库原理,通过这学期Oracle的课程觉得Oracle在用户的划分上要比SQL Server好很多,划分了多种用户级别,数据库也是以用户划分,这对于管理员和用户都是很有用的。Oracle的学习对于以后各种数据处理工作有很大的帮助,相信以后的学习中也会经常运用到oracle,我也将会不断加深对oracle的理解。

7.oracle数据库课程 篇七

课堂教学是教学的基本形式和主要环节, 也是体现教师知识水平和教学能力的重要形式。近年来, 赤峰学院为了加强对教学过程的监控, 促进任课教师不断提高自身素质和教学水平, 了解教学教改动态, 总结与推广教学经验, 切实提高课堂教学质量, 制定了一系列听评课制度。但是, 在具体实施过程中仍然存在一些问题, 比如流于形式, 走过场, 很多院系的老师只是为了完成学校规定的听课任务去听课, 在听课过程中做其他的事情, 以至在评课的时候保持沉默或只说一些场面话, 全是授课人的优点, 根本找不出具体的不足和缺点, 这样何谈取长补短、教学改进[1]更有甚者, 有的老师根本没有到其他老师的课堂去听课, 只是把别人的听课记录拿来抄, 找授课人签字即完成了听课任务, 这种弄虚作假的行为更是不可取的。针对这些问题, 赤峰学院计算机与信息工程学院于2015年推出了集体听评课制度, 该制度要求全体任课教师集中去听一位教师的课, 并进行集体评课, 评课过程主要是针对授课人在讲课过程中存在的问题, 并对存在问题提出改进意见。这样的集体听评课每学期组织3次, 分别从老中青三个年龄段中选出一位老师作为被听对象。本人作为本学期的被听者, 觉得这种集体听评课制度对课堂教学效果具有巨大的促进作用。

2 旨在教学改进的集体听评课

我二级学院推出的集体听评课制度借鉴了很多中小学推行的听评课模式[2]。具体活动流程如下:

(1) 被听教师上完课后首先进行简短的说课, 主要说明这节课是如何设计的, 这样设计的好处是什么, 上完课后是否达到的预期的要求和效果, 及存在的问题。

(2) 听课者就本次听课提出授课者的不足, 最好给予具体的改进意见, 供被听者借鉴。

(3) 针对共性问题, 所有听课者和授课者展开交流和讨论, 并最终商量出具体的解决方案。

(4) 被听者针对自己存在的不足, 可以自行选择到其他资深老师的课堂去听课, 学习具体的教学方法。

(5) 被听者再次上课, 落实改进方案。

上述活动过程可以简单的概括为图1。

3 以“Oracle数据库系统”课堂教学为例的一次集体听评课

本人作为2014-2015年度第2学期的被听者于2015年5月20日下午2:30-3:15进行了授课。讲授的课程是《Oracle数据库系统》, 具体授课内容是“创建表之约束管理”, 授课对象是2013级计算机科学与技术专业3班。上完课后, 参与了集体评课。具体过程如下:

(1) 被听者说课

具体教学设计是:整个课程以实际项目驱动, 在学期初就对学生进行了分组, 每个组选择了具体的综合课程设计项目, 具体项目包括学生成绩管理系统、宾馆客房管理系统、企业员工工资管理系统等的后台数据库设计。将教学任务分解, 将知识点融入的项目中, 边讲边练, 边做边学。这节课讲到创建表部分的约束管理, 这是课程中的重点内容, 所以想通过教师讲授具体知识点, 学生做相应的随堂练习 (具体练习任务如图2所示) , 课后再去完成各组项目中的任务。但是, 本节课的内容没能按预期计划讲授完, 原计划讲完非空约束、默认值、唯一键和主键约束, 并学生能完成图2中的前5个练习, 但是学生完成第5题的时间不够了。

(2) 听课者提出不足及改进意见。

①课程内容未能按计划讲完的原因可能出在学生练习非空约束和默认值部分的时间占用过长, 原计划5分钟, 却用了13分钟, 但仍有部分学生没完成, 建议将学生练习中创建教师表T和学生表S的字段减少, 或将创建表的部分语句给学生, 让学生在给定代码的基础上修改, 或者找一个学习成绩较好的学生到教师机去做, 给其他同学演示, 这样既给了学生表现的机会, 也节省了时间。

②教师在使用SQL Developer演示程序的时候, 建议使用“运行脚本”按钮 (如图3所示) , 因为这样会在“结果”任务栏里显示是否执行成功的运行结果。另外, 教师要规范的书写程序, 虽然Oracle对程序的文本大小写不敏感, 但是也要使学生养成规范书写程序的习惯, 同时增加程序的可读性。比如, Oracle中的关键字 (如CREATE TABLE) 要大写, 表的名字和字段名要小写等。

③教师在使用广播软件时可适当使用屏幕笔, 否则学生容易引起视觉疲劳, 特别是对于一些重点内容可以通过颜色醒目的屏幕笔去勾画, 要比单纯的用鼠标的箭头去指更容易引起学生的注意, 同时可以让学生跟上老师的思路, 抓住重点。

④学生做练习的时候, 对学生的辅导不足, 特别应该多关心学习成绩差的学生。

⑤课堂互动效果不好, 特别是教师在课堂上所提出的问题, 没有给学生思考的时间, 只顾自问自答, 这样容易使学生养成不思考的毛病。建议在提出问题后, 给学生留思考的时间, 必要的时候可以进行课堂提问, 这样不但可以调动学生的学习积极性, 而且可以使学生的注意力集中, 同时, 也加深了学生对知识的理解和掌握。

(3) 针对共性问题提出改进方案

经过大家的一一发言, 我们找到了共性问题, 最主要的一个就是:这种在机房上课, 边讲边练的教学方式, 如何控制教学进度的问题。经过大家共同的讨论和商量, 提出了具体的改进方案。首先, 教师在备课过程中为学生选择的随堂练习的难易程度一定要适中, 另外, 针对一些学生基础较好的学生可以选择一些能够考验其学习能力的附加题, 免得提早做完了, 无事可干。其次, 在辅导过程中, 针对学生普遍存在问题的练习, 应该及时的给予指导和提示, 或者由教师演示具体做法。再次, 如果遇到重点和难点内容, 可以单独找一次习题课来解决, 具体可通过讨论的方法, 学生可以各抒己见, 用不同的方法解决同一个问题, 教师再加以点评。另外, 可规定学生在本次课 (2学时) 结束必须提交作业, 对于做的慢的学生, 可采取延迟下课的方法, 以督促其上课注意听讲, 练习跟上进度, 并告诉他下次课上课的时候还会提问他掌握的不好的知识, 这样, 可以防止学习不好的学生掉队。

(4) 落实方案, 改进教学

经过这次集体听评课活动, 我认识到了自己在教学方法和教学手段上的不足, 虚心听取和接受了老师们提出的忠恳的意见, 让我受益匪浅。在接下的一周里, 我又听了两位资深老师的课, 学习具体的教学方法。特别是和我同讲“Oracle数据库”课程的白彦辉老师的课, 从中我又学到了很多好的教学方法。

①讲练习的时候, 有针对性的提问学生。白老师在讲“视图”内容的时候, 提问了上一次阶段测试成绩最差的几个学生, 当然他们课前就被告之在这节课会被提问, 被提问的学生表现的都很好, 这样做在很大程度上督促了后进学生。

②在讲理论知识的时候, 配合板书, 在黑板上画图将知识讲得深入浅出。

③白老师自己在写的时候就严格要求自己, 同时也严格要求学生, 所以学生书写程序代码非常规范。

4 结束语

集体听评课制度对以往的听课评课制度进行了改进。提出授课人的不足, 并给予改进意见, 是对本次授课人的帮助, 同时, 也是对其他也存在此类问题老师的一个帮助。针对共性问题提出改进方案, 这凝聚了老师的集体智慧, 必定是一些行之有效、值得借鉴的做法, 对所有教师的课堂教学都有好处。通过落实方案, 听其他资深老师的课, 又能学到很多有用的教学方法, 应该对这些好的教学方法进行系统的整理和总结, 以形成经验, 指导后续教学。集体听评课制度是改善课堂教学质量的重要手段和途径[3]。

摘要:本文就赤峰学院计算机与信息工程学院制定的集体听评课制度的具体活动流程进行了描述, 并以“Oracle数据库”课程的课堂教学为例描述了集体听评课制度的具体实施, 阐述了集中听评课制度对课堂教学的巨大改进作用。

关键词:集体听评课,课堂教学,改进,Oracle

参考文献

[1]赵雪晶.基于听评课的教师评价素养提升策略研究[J].教师教育研究.2013.2 (2)

[2]周坤亮.指向课堂教学改进的听评课[J].教育理论与实践.2011.9

8.oracle数据库课程 篇八

关键词: 日志 内存命中率 等待事件 实例活动

中图分类号: TP39 文献标识码: A文章编号: 1007-3973 (2010) 04-061-02

随着数据库系统的普遍使用,一方面,各类型企业海量数据信息的存储变得不再困难,越来越多的企业以数据为核心开展自身业务;另一方面,随着数据库系统的长期、深入使用,数据量日积月累的海量增加,数据库逐渐成为企业系统性能性能问题的高发区。

解决数据库的性能问题,提高系统运行速度逐渐成为各DBA的主要任务之一。数据库性能问题调整工作贯穿于整个数据库生存周期,从数据库的设计,实施开始,一直到结束使用。但由于数据库性能问题的时效性、隐蔽性以及突然性等特性使问题的定位变得异常困难。本文结合了一些常见的性能分析手段,枚举了性能问题的定位方法,希望能抛砖引玉使数据库的性能问题定位更规范化、流程化。

1 日志监控

由于性能问题常常会伴随着一些系统异常,或者是一些异常发生的先兆,所以监控数据库系统日志是定位性能故障的一个基本点。

1.1 库警告日志监控

Oracle在运行过程中,会在BDUMP路径下的警告日志文件中记录数据库的一些运行情况,包括系统启动参数、日志切换情况、数据库异常等。大部分性能问题发生的同时都会伴随着一些异常信息如:死锁、回滚段溢出、临时表空间满等。

1.2监听警告日志监控

监听日志记录数据库的每个连接(无论是正常的还是非法的)的链接情况,查看该日志可以获取数据库链接情况,当出现链接相关的性能问题,如:PGA耗尽或达到UNIX最大链接数等就应该查询该文件。

2 OS系统性能监控

由于OS是数据库系统运行的基础,也是数据库系统的载体,所以数据库性能问题一般反映到OS系统上就是CPU、内存、I/O资源的消耗殆尽。所以OS层出现资源短缺的时候,亦是数据出现资源短缺的时候。

2.1 TOP命令监控内存/进程/CPU

top命令用来显示执行中的程序进程和其他状况,使用权限是所有用户;top命令提供了实时的对系统处理器的状态监视,通过该命令可以查看数据库进程对CPU、内存等资源的占用情况,并从OS进程PID查找出故障SQL。

2.2VMSTAT监控内存情况

vmstat 命令报告关于内核线程的统计信息,包括处于运行和等待队列中的、内存中的、页面调度中的、磁盘中的、中断、系统调用、上下文切换和CPU活动的内核线程。该命令可以确定系统内存的整体消耗情况。

2.3IOSTAT监控I/O情况

iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。该命令可以查看系统的整体I/O消耗状态。

3 等待事件监控

在任何一个时间点,每个Oracle进程都正在忙于服务一个请求或者等待某些事件的发生。Oracle的等待事件是衡量Oracle运行状况的重要依据及指标,分为:空闲事件――Oracle正等待某种工作,非空闲等待事件――专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待

3.1 系统等待事件

通过v$system_event视图,查询从实例启动后各个等待事件的概括。根据系统等待信息的历史影象,并通过两个snapshot获取等待项增量,可以确定这段时间内系统的总体等待信息。从数据库系统级别判断存在等待的资源瓶颈。

3.2会话等待事件

V$session_wait提供了任何情况下session在数据库中当前正在等待什么(如果session当前什么也没在做,则显示它最后的等待事件)。当系统存在性能问题时,可使用该视图进一步定位引起等待事件的会话等信息。

4 内存命中率监控

监控内存命中率,可以有效地定位由内存参数分配与实际数据库运行状态不匹配等,由数据库内存引起的性能问题故障。

4.1 字典缓存命中率

数据字典缓存区是存储在共享池中的,它缓存了最近访问的数据字典信息。在内存中缓存这些信息将大大减少了时间和解析SQL语句所必须的I/O。字典缓冲区的命中率≥95%认为是理想的。

4.2 库缓存命中率

库高速缓存区是系统全局区(SGA)中的一块区域。Oracle 对最近执行的SQL语句执行计划和解析树进行缓存,也包括了PL/SQL代码的缓存备份。库高速缓存区的命中率表明了代码重用的频繁程度。通常来说,命中率接近100%是理想值。

4.3 数据库高速缓存区命中率

数据库高速缓存区,以下称为高速缓存区,它存放着内存中最近被访问的数据块。通过查看高速缓存器的命中率,DBA可以判断出数据库高速缓存器的规模是否合理。如果命中率≥90%,可以认为参数设置是合理的,否则说明缓存中的很多数据无法满足数据库访问的需要,增加了系统I/O操作的次数。

4.4 闩命中率

获得Latch的次数与请求Latch的次数的比率。该指标的值应接近100%,如果低于99%,可以考虑采取一定的方法来降低对Latch的争用。

4.5 内存排序命中率

指排序操作在内存中进行的比率。当查询需要排序的时候,数据库会话首先选择在内存中进行排序,当内存大小不足的时候,将使用临时表空间进行磁盘排序,但磁盘排序效率和内存排序效率相差好几个数量级。该指标的值应接近100%,如果指标的值较低,则表示出现了大量排序时的磁盘I/O操作。

5 实例活动情况监控

针对性能问题期间,对实例的各个内部模块的活动和各种资源使用情况的统计,主要包括CPU使用情况,SQL*Net消息,链接的行存取和PGA使用情况等,从数据库的实际活动情况可以分析出数据库系统的负载情况,主要活动内容等。

5.1 系统活动情况

v$sysstat视图可用于监控系统资源使用情况,以及系统资源利用率的变化。正因如此多的性能数据,检查某区间内系统资源使用情况可以这样做,在一个时间段开始时创建一个视图数据快照,结束时再创建一个,二者之间各统计项值的不同 (end value - begin value) 即是这一时间段内的系统资源消耗情况。

5.2 会话活动情况

v$sesstat存储session从login到logout的详细资源使用统计。类似于v$sysstat可从该视图查询出每一会话的资源消耗情况。

6STATPACK/AWR检测

通过Statspack/AWR我们可以很容易的确定Oracle数据库的瓶颈所在,记录数据库性能状态,也可以使远程技术支持人员迅速了解你的数据库运行状况。

7 自建JOB监控实时视图

由于会话等待事件,会话活动等均为实时视图,无历史记录,而STATPACK/AWR有时不能抓取想要的信息,此时,需要建立一套临时记录表,编写存储过程,定时记录相关的实时情况,再根据空闲时段的视图对比,获取系统的瓶颈。

8 通过自建视图对比检测

由于系统等待事件视图与系统实例活动视图等系统级视图记录的都是由系统启动以来的信息,并不能体现出增量变化情况,此时可创建临时表记录系统表信息,然后在使用当前系统表信息与之对比,以获取在故障时段的增量变化,以便从变化中定位到系统瓶颈。

9 结束语

ORACLE数据库性能问题出现机率,会随着数据库系统的使用时间与使用频率会成几何倍数上升,但性能问题一般出现都会呈现明显的时段性、随机性,这使得故障重现,或者在故障发生期间及时查找出故障问题变得难上加难。

数据库的性能问题定位是一个系统工程,涉及的方面很多。如何有效地进行定位,数据库管理员需要经过反反复复的过程,且要注重各方面的努力才会取得整体效果。这些都需要在大量的实践工作中不断地积累经验,从而更好地进行数据库的调优而解决问题的关键是找到真正的性能问题。

参考文献:

[1] 杨厚云,龚汉明,武装. Oracle数据库性能优化方案[J].机械工业学院学报,2006年12月第21卷第4期.

[2] ITPUB数据库管理版http://www.itpub.net/forum-2-1.html .

[3] 盖国强,冯春培,叶梁,等Oracle 数据库性能优化[M].人民邮电出版社,2005年1月.

9.oracle数据库课程 篇九

准备为执行提供的SQL语句

在一个SQL语句进入Oracle库的cache之后、而真正被执行之前,将会依次发生如下事件:

语法检查——检查该SQL语句的拼写和词序是否正确。

语义解析——Oracle根据数据词典(data dictionary)来验证所有的表格(table)和列(column)。

已保存纲要检查——Oracle检查词典以确认对应该SQL语句是否已存在已保存的纲要(Stored Outline)。

产生执行计划——Oracle根据一种罚值(cost-based)优化算法和数据词典中的统计数据来决定如何生成最优执行计划。

产生二进制代码——Oracle在执行计划的基础上生成可执行的二进制代码。

一旦开始准备执行SQL语句,上述的过程很快就会执行,这是因为Oracle可以识别出同样的SQL语句并对同样的SQL语句重复使用对应的可执行代码。然而,对产生ad hoc SQL的系统以及SQL中嵌入文本值(literal value)的情况,SQL执行计划的生成时间就会变得相当长,而且以前的执行计划也常常不能被再次利用。对那些牵涉到许多表格的查询,Oracle可能要花上很长的时间来决定把连接这些表格的顺序。

评估连接表格的顺序

生成可执行计划的时间往往是SQL的准备过程中最大的开销组成部分,尤其是在处理有多个表的连接的查询的情况下。当Oracle评估表的连接顺序时,它必须考虑每一种可能的排序。例如,当有六个表格需要连接时,Oracle需要考虑720种(6的排列数,即6×5×4×3×2×1=720)可能的连接排序。当需要连接的表的数量超过10时,这个排列问题将变得非常突出:如果需要连接的表格有15个,那么需要考虑的可能的查询排列顺序超过一万亿种(精确值为1,307,674,368,000)。

在optimizer_search_limit参数中设置限制

你可以通过optimizer_search_limit参数来控制上述问题的发生,该参数用来指定优化器评估的表格连接顺序的最大数目。利用这个参数,就可以防止优化器在评估所有可能的表格连接顺序中所花费的多余时间。如果查询中的表的数量少于或者等于optimizer_search_limit,那么优化器检查所有的可能表的连接方式。

例如,涉及了五个表的查询一共有120种(5!=5×4×3×2×1=120)可能的连接顺序,所以如果参数optimizer_search_limit的值设置为5(默认值),那么优化器就会考虑所有的这120种可能的连接顺序。optimizer_search_limit参数还用来控制启动开始连接指示(star join hint)的阈值。当查询所涉及的表格数量少于参数optimizer_search_limit的设定值,开始连接指示将被设置。

另一个工具:optimizer_max_permutations参数

optimizer_max_permutations初始参数用来设定优化器优化范围的上界(即最多考虑多少种表格连接顺序),它依赖于初始参数optimizer_search_limit。参数optimizer_max_permutations的默认值为8000。

参数optimizer_search_limit 和optimizer_max_permutations一同用来设置优化器所考虑的排列数的上限,

优化器不断的产生可能的表的连接的排列,直到排列数达到参数optimizer_search_limit或者optimizer_max_permutations为止。一旦优化器停止产生新的可能连接排列,它将会从中选择出耗费最小的排列。

用已排序指示来指定一种连接排序

你可以设定优化器评估的排列数的上限。但是对复杂的情况下,即使允许的排列数很大,优化器也很可能在远远没有找到一个比较合适的排列之间就已经停止优化了。你不妨回头看看我前面举的那个例子(15个需要连接的表有超过一万亿种排列)。如果设定优化器考虑80,000种排列,那么这仅仅考虑了所有可能性的0.000006%,优化器极可能没有达到最佳的排列。

在Oracle SQL中解决这个问题的最好方法就是手工指定一种表格连接顺序。这里需要遵循的大原则就是表格连接顺序应该使得查询计划尽快得以建立,通常在SQL语句中使用WHERE限制子句。

下面以一个对名为emp的表格的并行查询为例,例子中的代码强制查询计划执行一个嵌套循环连接(nested loop join)。注意,我使用了已排序指示来引导优化器来评估WHERE子句中给出的表格的连接顺序。 select /*+ ordered use_nl(bonus) parallel(e, 4) */

e.ename,

hiredate,

b.comm.

from

emp e,

bonus b

where

e.ename = b.ename

;

上面的例子要求优化器按照SQL语句中FROM子句指定的顺序连接表格,FROM子句中第一个的表格指定为驱动表格(driving table)。已排序指示常常与其它指示联合使用以确保多个表格按照适当的顺序连接起来。在遇到涉及四个以上表格的数据仓库查询时常常也是这样处理。

下面另给出一个例子,在这个例子中,我们使用一个已排序指示(ordered hint)来把表格按照一个特定的顺序(先是emp,然后是dep和sal,最后是bonus)连接起来。进一步改进执行计划,我指定emp表格到dept表格的连接使用hash连接,sal表格到bonus表格使用嵌套循环连接。 select /*+ ordered use_hash (emp, dept) use_nl (sal, bonus) */

from

emp,

dept,

sal,

bonus

where . . .

对实际应用的建议

在实际应用场合下,减小optimizer_max_permutations参数并使用已保存的优化计划或者已保存纲要(这样在查询涉及到许多表格时,就可以避免重新解析查询所花费的实际)会更有效率。一旦找到最好的表格连接顺序,你可以手工指定表格的连接顺序(通过已排序指示)并保存纲要,这样就永久保存该表格连接顺序。

当执行一个新的查询时,你可以首先把optimizer_search_limit设置为该查询所涉及的表格数,这样优化器将从所有的连接顺序中找出最佳的那种。以后执行该查询时,你就可以在WHERE子句中按照最佳连接顺序排列表格名称,并设置已保存指示和已保存纲要,这样就可以按照最佳顺序连接表格而无需重复评估各种可能排序。这样查询的速度将会得到显著的提高。

已排序指示的优先级高于optimizer_search_limit和 optimizer_max_permutations参数。如果设置了已排序指示,那么表格就会按照查询命令中的FROM子句给出的顺序连接,这样这个过程就没有优化器优化表格的连接顺序这一步骤了。

10.oracle数据库课程 篇十

程序猿都知道mysql等其他的数据库都有随着记录的插入而表ID会自动增长的功能,反而oracle却没有这一功能,下面通过两种方式来解决字段增长的功能,具体内容情况下文,

因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。

代码如下:

CREATE SEQUENCE 序列名

[INCREMENT BY n]

[START WITH n]

[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]

[{CYCLE|NOCYCLE}]

[{CACHE n|NOCACHE}];

解析:

1)INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。

2)START WITH 定义序列的初始值(即产生的第一个值),默认为1。

3)MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。

4)MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。

5)CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。

6)CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。

解决方式一、序列+触发器

具体实现方式如下:

第一步,创建sequence

代码如下:

-- Create sequence

create sequence SEQ_T_RECV

minvalue 1

maxvalue 9999999

start with 1

increment by 1

cache 50;

第二步,创建表

代码如下:

-- Create table

create table RECV_MSG

(

idNUMBER,

messageidVARCHAR2(32),

contentsVARCHAR2,

app_flgVARCHAR2(100),

phonenumber VARCHAR2(2000),

updatetimeDATE default sysdate

);

第三步,建立触发器

代码如下:

CREATE OR REPLACE TRIGGER “recv_trig”

BEFORE INSERT ON recv_msg

REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW

DECLARE

BEGIN

SELECT SEQ_T_RECV.NEXTVAL INTO :NEW.ID FROM DUAL;

END recv_trig;

第四步,测试并确认

向表中插入一条数据,查看id字段是否自动增长了,

解决方式二、序列+显示调用序列

一、创建sequence

代码如下:

create sequence seq_on_test

increment by 1

start with 1

nomaxvalue

nocycle

nocache;

二、建表

代码如下:

--建表

drop table test;

create table test(

ID integer

,stu_name nvarchar2(4)

,stu_age number

);

三、插入数据(显示调用序列的下一个值插入)

代码如下:

--插入数据

insert into test values(seq_on_test.nextval,‘Mary‘,15);

insert into test values(seq_on_test.nextval,‘Tom‘,16);

四、查看

代码如下:

select * from test;

--结果

/*

1 Mary 15

2 Tom 16

*/

附带:查看序列当前值和下一个值的查看方式

代码如下:

--seq的两个方法

select seq_on_test.currval from dual;

select seq_on_test.nextval from dual;

--结果

/*

2

3

11.oracle数据库课程 篇十一

关键词:Oracle数据库;性能优化;措施

中图分类号:TP311.138

随着计算机科学技术的快速发展,数据库能提供的服务水平标志着各国家的科技水平、经济实力和文明程度,是现代信息产业的基本建设工程。数据库技术应用最初应用与传统商务数据处理,后逐渐在多媒体应用、商业管理、计算机图像等领域得到应用。而如何确保数据库的安全、高效运行,则要考虑数据库的性能问题。数据库规模的日益扩大化,越发凸显了数据库系统的性能问题,为使数据库应用系统正常、高效地运行,必须进行数据库优化措施的探讨。

1 Oracle数据库性能影响因素

1.1 CPU 占用过高。CPU是处理软件中数据的中央处理器,任何数据库中的操作都要在CPU中进行指令读取和执行。当有限的CPU资源大量被其它应用占用时,整个系统的反应速度将下降,导致数据库响应迟钝。其中Oracle数据库系统低效SQL语句、中锁冲突都会占用CPU资源,降低系统反应速度。

1.2 操作系统。Oracle数据库的操作系统是其重要组成部分,操作系统很大程度上影响着Oracle数据库服务器的运行性能。操作系统主要问题部分是配置方面问题,需要调整Oracle使用的操作系统资源。

1.3 计算机内存分配不合理。当内存不足时,我们喜欢设置虚拟内存来暂时解决这个问题,但实际上虚拟内存依旧建立在磁盘空间上,不能解决实际问题。因为设有虚拟内存的系统,将交换内存中的信息和这部分磁盘空间,这种频繁的运转方式很大程度上增加了磁盘的读写操作,减少了最近访问数据的缓存空间,从而降低了系统性能。

1.4 网络速度慢。网络反映速度慢对数据库系统的吞吐量也会大幅降低并使用户响应时间延长。

1.5 I/O冲突。I/O冲突很大程度上降低了Oracle数据库系统性能。这是由于在数据库系统中可能发生一个磁盘同时被多个进程同时访问,但一个磁盘一个时间内一次只能被一个进程访问,当发生多个进程同时访问时,磁盘内部很容易产生读写冲突,降低数据库系统反应速度。

2 Oracle数据库性能优化目标

2.1 增加Oracle数据库的吞吐量。Oracle数据库的吞吐量是指在单位时间内,对SQL语句的事务处理量。提高Oracle数据库吞吐量的方法是在同样的资源下提高工作效率,完成更多的任务,或在相同时间内完成更多任务。

2.2 缩短Oracle数据库响应时间。数据库响应时间是指花费在用户从提交SQL语句到获得结果集的第一行数据之间的时间。缩短Oracle数据库响应时间:(1)减少系统服务时间,即通过增加Oracle数据库的吞吐量;(2)减少用户等待时间,即减少用户请求处理时间,也就是同时访问Oracle数据库资源而产生的冲突等,提高系统资源利用率。

2.3 提高Oracle数据库的命中率。内存是否能满足用户对数据的需求,并作出快速响应,这需要在缓冲区进行高速缓存命中率计算来衡量。而在高速缓存中读数据比磁盘中读数据占用更少的内存,因此,提高高速缓存命中率有助于提高响应速度。

2.4 合理使用内存。若存在大量的用户同时访问数据库,当Oracle内存尺寸较小时,很容易造成程序的处理效率低下,使得数据库的响应时间延长。判断是否合理使用内存的指标有使投资得到最大回报、使争用减到最小。只有在合理使用内存的情况下,才能较大程度的提高系统性能。

3 Oracle数据库性能优化措施

3.1 优化数据库。(1)优化数据库设计才能更好的实现Oracle数据库性能最优化,因此,必须设计出一个较好的Oracle数据库方案。而Oracle系统本身己经为数据库的优化提供了若干种技术,但Oracle数据库设计本身还是占据主导地位。(2)在数据库中增加索引,这也是最常见的优化方法。索引(index)是数据库中的常见对象,通过索引可以使表扫描I/O次数大量减少,且不必要的大表全表扫描通通可以避免。设置索引的位置由where子句中索引列规定的查询条件决定。在数据库中增加索引,可大幅度提高查询速度。(3)对数据库中频繁执行的应用逻辑可以通过存储过程完成,且使数据库的操作与代码编程分离,从而实现网络传输量降低的同时数据请求的执行效率也提高。用户发出执行命令即可执行存储过程,不需通过SQL语句提交进行,减少了系统分析SQL语法。(4)对于数据量增长非常快的业务,可以在分区表技术下先进行数据分散,从而使不同表空间在不同的磁盘中得到分布,均衡各硬盘之间的I/O 负载,有效缓解由于过大的数据量而导致的负面影响并降低查询时间。

3.2 优化SQL语句。优化Oracle数据库应用程序,可以通过优化源代码和优化SQL语句两方面。而SQL语句消耗了70%~90%的数据库资源,执行SQL语句的效率将直接影响Oracle数据库的执行效率。通过优化劣质SQL语句,提高内存命中率,加快执行速度,减少I/O访问和网络传输,发挥数据库性能。

(1)对数据库缓冲区的SQL解析信息充分利用。对于一些SQL语句,虽然经常运行,但条件子句变量值不同,则需要对其进行变量绑定,更改为统一的变量。(2)调整SQL的关键语句,最优化数据库寻找数据路径。对一些动态SQL要限制使用,并优化操作符,如尽量少用in或not in,like,union等操作符。(3)优化SQL语句的索引。如索引列采取is null 和is not null语句,如采取函数来处理字段,如采取显式或隐式的运算,这些都将提高系统处理效率。

3.3 优化Oracle数据库内存分配和磁盘I/O。由一组Oracle后台进程和SGA的一个内存区组成Oracle实例,而数据库系统的性能又很大程度上受SGA使用效率的影响,因此,优化Oracle数据库运行状况需要进行SGA的优化。在信息系统运行过程中,进行Oracle数据库内存分配的优化,且必须在磁盘I/O优化前进行。

Oracle数据库中磁盘I/O操作很大程度上影響其性能,必须优化磁盘I/O。而影响磁盘I/O性能的主要因素是数据块空间的分配管理、磁盘竞争、操作系统性能等。具体优化措施有以下几方面:(1)对I/O 争用较多的往往也是一些经常使用的对象,因此,在独立磁盘上放置一些访问量较大的数据文件,在不同的磁盘上放置同一个表空间的多个数据文件,建立单独的表空间进行索引,且表和索引在不同的表空间放置。(2)用户数据表空间需要单独创建,并在不同磁盘放置用户表空间和系统表空间,排序操作可使用临时表空间,避免在多个表空间内存放数据库碎片。(3)选取廉价磁盘冗余阵列(raid)进行优化。其能对不同类型、访问频率的数据库文件进行自动分离,一定程度降低I/O进程间的竞争,优化Oracle数据库性能。

参考文献:

[1]Edward Whalen,Mitchell Schroeter著,高艳春等译.Oracle性能调整与优化(第一版)[M].北京:人民邮电出版社,2002.

[2]赵大力,靳其兵,赵梅.Oracle数据库优化解决方案[J].计算机应用,2005(03):45-46.

[3]陈建云,林春艳,曾昊川.Oracle应用系统数据库的优化探讨[J].信息安全与技术,2014(12).

[4]熊江红.ORACLE数据库的调优问题分析[J].民营科技,2014(10).

12.Oracle数据库优化策略 篇十二

1 Oracle数据库优化的方法论

影响着Oracle数据库的因素很多, 但是还没有绝对的评价指标, 评判Oracle数据库的优化效果。调研发现, 它的参考因素很多, 例如系统优化前后数据库的各种性能指标, 其中一条重要的评价标准就是SQL语句的运行效率等。但是很多情况下, 很多用户而关注的问题的根本原因时出现在程序设计人员所编写的SQL语句上。这就使得往往简单的问题, 不能用简单的方法来解决, 把大部分精力放在了硬件性能的提高上, 本末倒置。

2 Oracle数据库具体优化方法

2.1 程序结构设计的优化

系统的体系结构是在一个系统开发中首先需要考虑的问题, 根据系统的需要选择合适的体系结构非常重要, C/S两层体系结构、B/S三层体系结构、B/S多层体系结构都是常用的系统体系结构。应该合理选择系统的体系结构, 例如, 传统的C/S模式适合的运行网络环境局限性比较大, 相对来说比较适合于小规模、用户少、数据库单一执行情况下运行, 常适合于局域网。另一种体系结构是B/S模式, 该系统结构正在不断的扩大, 系统性能的复杂程度也在随之提高, 应用的环境相对于前一种模式来说运行的网络环境可以复杂很多, 它可以用于多用户、多数据库。服务器有限的系统资源无法提供足够的数据请请求, 而导致系统紊乱, 甚至系统崩溃。这时应该考虑三层B/S系统结构, 可以很好的解决该问题。三层B/S模式也有很多的优点, 例如, 在B/S模式中, 客户端只负责显示, 不管其他复杂的操作, 从而很好的解决了客户的消费问题, 降低了客户的消费问题;三层B/S模式的应用使得系统易于维护、升级。工作人员只需要关注服务器即可, 不需要耗费更多的精力, 并且也降低了系统维护的工作量和所需的费用;适用于Internet应用, 因为WEB技术的加入, 使得该系统更适用于网络信息的传递。

2.2 库结构的优化

库结构优化, 在整个系统优化过程扮演着重要的角色, 并且它也是最基本的部分, 主要包括两个部分的优化, 逻辑结构优化和物理结构优化。

在逻辑设计过程中, 一致性和完整性对于数据库的设计应用非常重要, 为确保该系统的性能, 优化系统的结构, 应该尽可能的降低数据冗余, 设计人员往往会设计过多的表间关联。但是绝大多数情况下, 这样并不能解决问题, 没有达到人们预期的效果。采用分割表或存贮冗余数据来解决该问题, 并且很多实际操作已经验证了这一点, 取得了很好的成效。

提高检索效率最有效的方法之一为创建索引, 它是一种有效提高整体系统运行效率几十倍甚至更多。但是应该清楚一点, 并不是索引越多越好, 应该合理的设置索引的位置和数量以确保索引设置的最优。如果在常需要修改的数据列上建立大量的索引, 将会造成系统性能的下降和存储空间的大量浪费, 还可能引发更严重的后果。

2.3 SQL语句的优化

SQL语句的优化相对硬件改善操作方面更简单快捷的达到了优化的效果。将好的SQL语句与劣质的SQL语句相比较, 我们很容易就会对比发现, 较好的SQL语句可以减少I/0请求数目, 能缩小网络带宽的占用等。当处理的数据量急剧增加时, SQL语句的优劣程度影响的效果更加明显。如前面所诉, 很多情况下, 问题出现后还没查明真正的原因, 就采取各种方法进行优化系统, 不但浪费了时间和投入的精力, 最重要的就是不能够从根本上解决问题, SQL语句的优化应该被关注, 并且应该提早进行检查, 因为相对来说解决起来更容易一些。

优化SQL语句应该遵循着一定准则, 主要准则如下:尽可能避免大规模扫描, 避免不必要操作;SQL语句应规范书写, 统一格式, 方便阅读、修改;减少加锁操作, 减少使用操作符OR;避免使用!=或=这样的操作符, 减少检索错误;尽可能使用EXISTS、NOT EXISTS来代替IN、NOT IN的使用;在字符串查询中尽可能少用通配符, 应包含第一个字母, 并尽可能包含多个字母。

3 结语

计算机科学技术在如今社会发展中起着举足轻重的作用, 由此数据库的应用更是不可分离的一部分, Oracle数据库作为数据库中带头引导者, 起着引领潮流的重要作用。Oracle数据库的优化就变得很有价值和意义。不但能够改善数据的处理效率更能在安全性可靠性等很多方面加以完善和提高。

摘要:Oracle数据库应用很广泛、具有很大的影响力。其规模和复杂的操作程序, 决定了Oracle数据库在能够满足广大客户的需求以外, 也会存在很多的问题, 影响Oracle数据库应用系统的因素很多, 针对优化策略的研究对于计算机领域的整体进步, 变得格外有价值和实际意义。

关键词:Oracle数据库,性能分析,优化策略

参考文献

[1]周锦.基于Oracle数据库SQL语句优化规则的研究[D].北方工业大学, 2013.

13.oracle数据库课程 篇十三

Oracle数据库基础

【本讲主要目标】

1、Oracle数据库概述

2、Oracle数据库系统结构

 逻辑结构

 物理结构

 系统结构

 内存结构(PGA 和SGA)

 后台进程

 服务器进程

3、数据库名、实例名、服务名简析

【本讲重点】

1、Oracle数据库系统结构

2、数据库名、实例名、服务名概念

【本讲难点】

Oracle数据库系统结构

【上讲回顾】

时间:10分钟 无

【课程知识讲解】

一、Oracle数据库概述(时间:35分钟)

1、数据库基础

• • • • 数据:指对信息的描述,或者说描述事物的符号。

数据库:指存储在计算机中,有组织的,并且可以共享的数据的集合。

数据库管理系统:是用来帮助人们组织、管理、分析数据库中数据的软件系统,它是位于用户与操作系统之间的数据管理软件。数据管理经历了三个阶段:

– 人工管理阶段 :主要用于科学计算

– 文件系统阶段 :实现文件批处理,联机实时处理

– 数据库系统阶段 :实现多用户、多应用的实时处理

• • 数据在数据库系统中以数据模型的形式表现,数据模型是现实世界数据特征的抽象,也是数据库系统的数学表示。

数据模型根据应用的不同分为:

– 概念模型 :又称信息模型,它按照用户的观点 对数据和信息进行建模。

通常用实体--联系(E-R)方法表示

– 结构模型 :按照计算机系统的观点 对数据进行建模: •

层次模型、网络模型、关系模型以及面向对象模型等等

数据库系统的组成 • – 数据库:存储数据和对数据库的定义

– 数据库管理系统(DBMS):为建立数据库、配置和使用数据库的软件 – 应用开发工具:建立应用程序系统的软件开发工具

– 应用程序:建立在DBMS上,适应不同应用环境的数据库应用系统

– 数据库管理员:负责管理企业的数据资源,收集和确定有关用户的需求,设计和实现数据库并按照需求修改和转换数据,以及为用户提供帮助和培训。– 用户:最终用户

– 系统分析员、数据库设计人员、程序员等等

2、Oracle发展情况

• Oracle中文译为甲骨文,是全球第二大独立软件公司,专业生产数据库管理软件及其相关产品,也是第一个推出关系型数据库管理系统的工具的。

• 1977年Larry Ellison,Bob Miner 和Ed Oates共同创建的一家软件开发实验室,主要开发当时新型的关系型数据库,这是Oracle公司的前身; • 1978年更名为关系型软件公司(RSI)

• 1979年开发出第一款商业关系型数据库管理系统Oracle;• 1984年将关系型数据库推广到个人计算机上,在随后推出Oracle5中率先推出了分布式数据库概念

• 1988年推出oracle6,增加行锁定模式及对称多处理器系统的支持 • 1992年推出Oracle7 • 1999年推出Oracle8i为核心的全球第一个支持Internet的一整套解决方案,并增加了对象的技术,成为第一个关系对象数据库系统

• 2000年推出Oracle9i,在群集技术、高可用性、商业智能、安全性、系统管理方面都有了新的突破,成为业界第一个完整的、简单的、新一代智能化的、协作各种应用的软件基础平台。

3、Oracle9i的产品构成

• Oracle9i是一整套网络数据库应用解决方案,包含Oracle9i Database, Oracle9i Application Server, Oracle9i Developer Suite的完整集成。

• • • Oracle9i数据库:提供联机分析处理及其数据挖掘和分析、硬件集群、智能的自我调整、纠正和管理功能,并提供了三种不同的版本

Oracle9i应用服务器:提供全面的应用服务器基础构架,用于开发、部署和管理互联网应用程序

Oracle9i开发套件:完整、集成的开发工具套件,使用J2EE和XML来快速开发事务处理型web应用和服务:JDeveloper,Designer等

4、Oracle数据库的主要特点

5、Oracle9i的工作模式

• • C-S模式 B-S模式

二、Oracle系统的结构(时间:50分钟)

1、概述

• 应用系统的核心任务是提供对用户数据的管理,所以系统应以数据为中心。

• 数据库的体系结构是从某一个角度来分析与考察数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。

• Oracle9i数据库体系总共可以分为以下几个组成部分: –

逻辑结构

物理结构

系统总体结构

2、Oracle9i的逻辑结构

• • Oracle9i的逻辑结构由6层组成

一个Oracle9i 数据库可以有多个数据库,–

每个数据库可以有多个表空间,–

每个表空间可以有多个表,–

每个表可以有多个段,–

每个段可有多个区间,–

每个区间可以有多个数据块。

表空间:是Oracle数据库数据的逻辑组织单位 – 物理上是由一个或多个数据文件组成

– 数据库要先建立表空间才能将数据插入到表空间中的一个对象中 – 可以通过添加数据文件来增加某个用户的空间配额

– 默认表空间:INDEX,SYSTEM,TEMP,TOOLS,USERS等 段:用于存放数据库中特定逻辑结构的所有数据 – 数据段:用于存放表中的数据 – 索引段:用于存放索引数据

– 临时段:临时数据,若排序产生的临时数据,用完就释放空间 – 回滚段:用于存储事务的回滚信息 区间:由连续分配的相临数据块组成

– SQL>SELECT * FROM DBA_EXTENTS;数据块: 是数据库中最小、最基本的存储单位。

– Oracle数据块大小通过设置为操作系统块大小的整数倍

3、Oracle9i的物理结构

• • • • • • 数据库的物理结构是指从物理的角度分析数据库的构成,也就是说,Oracle数据库创建后使用的操作系统物理文件

从数据库物理结构上分析,数据库实际上是由构成数据库的操作系统文件所构成的。这里所说的“操作系统文件”是指“数据库文件”,而不是Oracle的“系统文件”。

只有数据库文件才是数据库的物理结构,而系统文件不属于数据库物理结构的范围。数据库文件的损坏,可以引起用户数据的丢失;而系统文件损坏,可以使用介质重新安装,或进行有效的复制。

Oracle9i数据库的物理文件主要有以下几种-1: – 数据文件(data file)• 存放数据库数据的物理文件,以.DBF为后缀 • 数据库至少包含一个数据文件

• 表空间的物理组成单元是数据文件,一个表空间可以包含多个数据文件,每个数据文件只能属于一个表空间。

• 数据库安装完成后,系统会自动创建默认的表空间,放在$oracle_homeoradata目录下

– 控制文件(control file)• 用于记录和维护整个数据库的全局物理结构,是二进制文件,以.CTL为后缀 • 存放有关的关键控制信息,如数据库名和创建时间,大小及其位置等 • 在创建数据库时生成,以后当数据库发生任何物理变化时被自动更改

• 每个数据库至少包含一个控制文件,当数据库启动时,首先要按照控制文件设定的数据文件、日志文件等信息来检查数据库的状态是否正常,最后才完成数据库的启动

• Oracle9i数据库的物理文件主要有以下几种-2: –

日志文件(redo file)• 用于记录对数据库进行的修改操作和事务操作,以.LOG为后缀 • 每个数据库至少包含两个重做日志文件,循环使用

初始化参数文件(parameter file)• Init.ora是一个文本文件,定义了要启动的数据库及内存结构的大约200多项参数信息 • 启动任何例程前,系统都要先读取该文件的各项信息

其他oracle 物理文件

• 跟踪文件:*.trc • 警告文件:*.log • 备份文件 • 口令文件 Oracle例程启动时,Oracle从参数文件中读取控制文件的名字和位置

登陆数据库时,打开控制文件,Oracle从控制文件中读取数据文件和日志文件列表并打开其中的每一个文件

• •

4、Oracle总体结构

• • • • Oracle数据库服务器由数据库管理系统和数据库组成。

数据库管理系统由内存结构(PGA和SGA)、后台进程和服务器进程组成。

客户机上的用户进程通过SGA向数据库管理系统提交请求,后台进程将这些请求转换为对数据库的相应操作。

内存结构:是oracle使用计算机上的内存存放常用信息和所有运行在该机器上的Oracle程序。–

系统全局区(SGA):

• 是运行在客户机上的用户进程和运行在服务器上的服务器进程所使用的内存区域。• 该区域的数据是共享的

• 数据缓冲区、字典缓冲区、日志缓冲区、SQL共享区 • 创建例程时分配该区域,例程关闭时释放。– 程序全局区(PGA):

• 单个用户进程所使用的内存区域

• 每个进程都有自己的私有区域,存放单独的数据和控制信息 • 不共享 后台进程:帮助用户进程和服务器进程进行通信,不论是否有用户连接他们都在运行,负责数据库的后台管理工作。–

系统监视进程(SMON)–

进程监视进程(PMON)–

数据库写入进程(DBWR)• – – – –

日志写入进程(LGWR)归档进程(ARCH)恢复进程(RECO)等等

• • •

Oracle例程是具有自己的SGA和与其相关的数据库文件的后台进程集。通常Oracle例程可以理解为相对独立的逻辑上的数据库服务器 – 数据库指存储和管理数据文件的集合

– Oracle例程由SGA和后台进程集组成,后台进程共同访问SGA中的内存区域 在并行服务器中,一个Oracle数据库可以被多个Oracle例程访问

Oracle数据库的实例进程有两种类型 –

单进程数据库实例

一个进程执行全部Oracle 代码,一般用于单任务操作系统

服务器进程与用户进程、服务器软件与应用软件合二为一,在一台机器上运行。这种配置方式不支持网络连接,不可以进行数据复制。

多进程数据库实例

由多个进程执行Oracle 代码的不同部分,一般用于多任务操作系统。

多进程实例支持网络连接,可以进行数据的远程复制,•

在多进程Oracle 中,系统的进程被分为用户进程、服务器进程与后台进程。

三、数据库名、实例名、服务名简析(时间:5分钟)

• 数据库名:用于区分一个数据的内部标识,以二进制方式存储于数据库控制文件中的参数,用DB_NAME表示,数据库安装完成后,写入数据库参数文件pfile,不能进行修改。• 数据库实例名:用于对外相连时使用。INSTANCE_NAME表示,可以进行修改。• 数据库名与实例名是一一对应关系。

• 服务名:如果数据库有域名,服务名就是全局数据库名;如果数据库没有域名,服务名就是数据名。

【本讲总结】

(时间:10分钟)

1、Oracle数据库系统结构

 逻辑结构

 物理结构

 系统结构

 内存结构(PGA 和SGA)

 后台进程

 服务器进程

2、数据库名、实例名、服务名简析

【考核点】

1、Oracle数据库系统结构

 逻辑结构

 物理结构

 系统结构

 内存结构(PGA 和SGA) 后台进程

 服务器进程

2、数据库名、实例名、服务名简析

【测试题】

【扩展部分】

【学生问题汇总】

【作业】

上一篇:金融支持节能减排的有效途径下一篇:大学生实习纳入统一管理实习报告