oracle数据库学习之路

2024-09-30

oracle数据库学习之路(精选14篇)

oracle数据库学习之路 篇1

ORACLE数据库结课论文

一个好的程序,必然联系着一个庞大的数据库网路...今年我们学习了 oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于 oracle数据库的一些知识。

1.ORACLE的特点: 可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性 由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。

可联结性 对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。

2.ORACLE的总体结构

(1)ORACLE的文件结构 一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。

数据文件 一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。

日志文件 须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件 可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件 含有数据库例程起时所需的配置参数。

(2)ORACLE的内存结构 一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。

SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。

PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。

(3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程 用来执行用户应用程序的。

②服务进程 处理与之相连的一组用户进程的请求。

③后台进程 ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。

SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON(Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。

3.ORACLE的逻辑结构

构成ORACLE的数据库的逻辑结构包括:(1)表空间

(2)5种类型的段(segment)

①数据段;②索引段;③回滚(rollbock)段;④临时段;⑤自举(bootstrap)段。

段的分配单位叫范围(Extent)

表空间(Tablespace)一个数据库划分成的若干逻辑部分称为表空间。一个数据库可以有一个或多个表空间,初始的表空间命名为SYSTEM,每一个逻辑表空间对应于一个或多个物理文件。DBA使用表空间做以下工作: 控制数据库对象,如表、索引和临时段的空间分配。为数据库用户设置空间配额。

利用个别表空间的在线或离线,控制数据的可用性。后备或恢复数据。

通过分配空间,以改进性能。

在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立。在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字和位置。SYSTEM表空间总是在线的,像其它表空间一样,可以通过增加新的数据库文件来扩大。一个表空间可包含许多表和索引。但一个表和索引不能跨越表空间,可跨越组成表空间的文件。在DB的打开的情况下,DBA利用ALTER TABLESPACE语句,可以实施表空间的在线或离线。SYSTEM表空间必须在线。表空间离线有下列原因: 一般为了使部分数据库不能使用,而允许正常存取数据库其余部分。执行表空间离线备份。

一个离线的表空间,不能被应用用户读或编辑。

可以增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大,或分配空间给某个应用。使用ALFER TABLESPACE ADD FILE语句将另一个数据文件加入到已存在表空间中。使用CREATE TABLESPACE语句可建立一个新的表空间。段(segment)表空间中的全部数据存储在以段划分的数据库空间中。一个段是分配给数据库用于数据存储的范围的集合。数据可以是表、索引或RDBMS所需要的临时数据。段是表空间的下一个逻辑存储的级别。一个段不能跨越一个表空间,但可跨越表空间内的文件。一个数据库最多需要五种段类型: 数据段 一个包含一个表(或聚集)的全部数据,一个表(或聚集)总有一个单个数据段。

索引段 一个索引段包含对一个表(或聚集)建立的一个索引的全部索引数据。一个表可以有一个、多个或者没有索引段,取决于它所拥有的索引个数。一个聚集必须至少有一个索引段,即在聚集码上建立聚集索引。

回滚段 每个DB有一个或多个回滚段。一个回滚段是DB的一部分,它记录在某一情况下被撤消的动作。回滚段用于事务控制和恢复。

临时段 在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间结果,这个区称为临时段。

自举段 自举段在SYSTEM表空间中,在数据库建立时建立。它包括数据字典定义,在数据库打开时装入。

4.用户数据库对象

由用户建立的对象驻留在表空间中,含有真正的数据。数据库对象有表、视图、聚集、索引、伪列和序号生成器。

(1)聚集(Cluster)聚集是存储数据的一种可选择的方法。聚集包括存储在一起的一组表,它们共享公共列并经常一起使用。由于内容相关并且物理地存储在一起,存取时间得到改进,存储空间可以减少。聚集是一种优化措施。

聚集对性能的改进,依赖于数据的分布和SQL操作的内容。特别是使用聚集对连接非常有利。可以明显地提高连接的速度。建立聚集命令的基本格式: SQL>CREATE CLUSTER〈聚集名〉(列定义[,…]);利用聚集建立表命令基本格式: SQL>CREATE TABLE〈新表名〉(列定义[,…]CLUSTER〈聚集名〉(聚集列);在聚集码上必须建立一个聚集索引,对于每一数据块上每个聚集码值有一索引项。这个索引必须在DML语句对聚集表操作前建立。建立索引的语句是:CREATE INDEX索引名ON CLUSTER聚集名;(2)序号生成器 序号(SEQUENCE)生成器为表中的单列或多列生成顺序号。利用序号可自动地生成唯一主码。使用SQL语句定义序号,给出一些信息(如序号名、是升序或降序、每个序号间的间隔和其它信息)。所有序号存储在数据字典表中。

所有序号定义存储在数据字典的SEQUENCE表中。用户可以通过字典视图

USER-SE-QUENCES、ALL-SEQUENCES

和DBA-SEQUENCES查询和存取。建立序号生成器的语句是: CREATE SEQUENCE序号生成器名 其它选项。

一旦序号生成器S被定义。可用S.Currval来引用S序号生成器的当前值。用S.nextval产生下一个新的序号并加以引用。

(3)伪列 伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或修改。

5.数据字典

数据字典ORACLE RDBMS最重要的部分之一。数据字典含有一组系统定义的表,只能读,是关于数据库的引用指南。它可提供以下信息:ORACLE用户的用户名;每个用户被授予的权限和角色;实体的名字和定义;完整性约束 为数据库实体分配的空间;通用的数据库结构;审计信息;触发子程序等的存储。数据字典是以表和视图构成的,像其它数据库数据一样,可用SQL语言查询数据字典。

数据字典在DB建立时建立。每当DB进入操作,数据字典就由ORACLE RDBMS负责修改。数据库建立时有两个默认DBA用户:SYS、SYSTEM。SYS持有基本表中的数据。数据字典包含一组基表和相关的视图,可分为以下几类: 类

描 述

DBA-××× 只有DBA可存取的视图,给出数据库中定义的任何实体的信息

USER-××× 对任何用户可用的视图,给出他们自己的实体的信息

ALL-×××

对任何用户可用的视图,给出用户可存取的所有实体的信息

其中×××代表表名或视图名

下面列出的是一些常用的表或视图的名称。(1)DTAB 描述了组或数据字典的所有表。(2)TAB 用户建的所有基本表、视图和同义词。(3)COL 用户创建基本表的所有列的信息。

(4)SYNONYMS 用户可存取的同义名词、专用名和公用名。(5)CATALOG 用户可存取的表、视图、同义词、序列。(6)CONSTRAINTS 用户可存取的约束。(7)INDEXES 用户可存取的表和聚集的序列。(8)OBJECTS 用户可存取的对象。(9)TABLES 用户可存取的表。(10)USERS 查看当前全部用户。(11)VIEWS 查看用户可存取的视图。

(12)SYSTABAUTH 用户对数据对象的使用权限。可以用SQL>SELECT*FROM〈字典表名或视图名〉WHERE〈条件〉来读取有关信息。

可以用SQL>DESCRIBE〈表名〉来查看表的结构定义。但是数据库字典的结构不可改。用DESCRIBE命令还可以查看视图及过程的定义。

6.ORACLE的SQL、PL/SQL与SQL*PLUS 作为ORACLE数据库核心的SQL语言是ANSI和ISO的标准SQL的扩充。用来存储、检索和维护数据库中的信息,并控制对数据库的存取事务。由于RDBMS执行SQL语句时,是一次只执行一条语句,它是非过程化的。这就使得单条的SQL语句使用方便,功能强大。用户只需说明操作目的,不必关心具体操作的实现方法。

但在实际数据库应用开发中,往往要依据前一步对数据库操作的结果或上一个事务提交的情况来确定下一步的操作。故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能。PL/SQL可支持变量和常量的使用。例如在SELECT查询语句的where子句中可以使用变量来书写条件表达式。SQL*PLUS是ORACLE用来存储、查询、操纵、控制和报告数据库中信息的一个交互式工具。它是一种集编辑、调试、运行于一体的开发环境。在SQL*PLUS的这种运行环境下,既可以使用SQL命令、PL/SQL语句、及SQL*PLUS自己提供的命令,又可以运行由上述三类命令(或语句)编辑而成的命令文件。SQL*PLUS提供的附加命令主要用来编辑、运行上述三类命令及命令文件和对查询结果进行格式化输出等功能。

7.数据库系统的管理

ORACLE作为一个大型的数据系统,通常包含很多用户的数据。在应用开发过程中,有许许多多的各类人员进行开发和应用。所以必须要求有人对数据库系统进行临时管理,并进行数据的备份等工作。这种人被称为数据库管理员(Data Base Administrator)。他们必须理解数据库系统管理,清楚数据库包含的数据内容、运行状况等。

一般说来,DBA不是指具体的人,而是指对数据库可以行使DBA特权的用户。DBA具有如下责任:(1)ORACLE服务器和客户工作站软件的安装和升级;(2)创建基本的数据库存储结构(表空间);(3)创建基本的数据库客体(表、视图、索引);(4)修改数据库结构;(5)给用户授权,维护系统安全;(6)控制和管理用户对数据库的访问;(7)监视和优化数据库的性能;(8)计算数据库信息的后备和恢复;(9)后备和恢复数据库;(10)构造ORACLE服务器,如创建数据库链、客体同义词等。而应用开发人员须完成:(1)应用程序设计;(2)应用的数据库结构设计和修改;(3)为DBA提供必要的信息;(4)完成应用程序的开发。

看了许多关于ORACLE的知识论坛,总算是对ORACLE有个整体的认识,不仅仅是拘泥于课堂上学习的知识而已,虽然自己对ORACLE学习并不是多么的透彻,但是总归多接触点新的东西总是好的。

这一个学期,也是临近毕业的时候了,很感谢贾老师的严格要求,让我在学习上有了很大的进步,同时也改掉了一些惰性,能积极的投入到学习中去了,不懂就大胆的问同学,请学习好的同学帮助讲解,最后,真心的祝福贾老师工作顺利,身体健康!

oracle数据库学习之路 篇2

随着Oracle数据库在数据库市场份额占比逐步上升,市场上对具有Oracle数据库技能的人才需求很大,掌握Oracle数据库技术对面临择业的大学生来说,无疑是一个很有用的就业技能。在目前,商品化的数据库管理系统以关系型数据库为主导产品技术比较成熟。国际国内的主导关系型数据库管理系统有DB2、Oracle、Sybase、My SQL、SQL server等,这些产品都支持多平台,如UNIX、VMS、Windows,但支持的程度不一样。IBM的DB2也是成熟的关系型数据库。但是,DB2是内嵌于IBM的AS/400系列机中,只支持OS/400操作系统。如果打算做一个DBA,那就要熟悉现在比较流行的数据库系统管理软件,这也意味着将有更多的就业机会。经过在众多数据库中进行比较、论证,选择Oracle作为数据库原理课程的实践教学用数据库。

1 Oracle在实践教学中的应用

目前在实践教学中很容易出现以下问题:学生在学习过程中对自己的学习毫无计划,整天忙于被动地应付作业和考试,缺乏主动地自觉地学习,看什么、做什么、学什么都心中无数,只是盲目模仿实验指导书按部就班的去做,没有进行思考和创新。学生学习完该课程,仍然不知道在具体项目中如何使用数据库,不能灵活应用数据库技术进行项目的设计与开发。但数据库系统原理课程作为众多大学的学科基础课,课程重要性不可小觑。很多学校设置了数据库系统原理的课程内实验和课程外的综合性设计,主要是加强学生设计、实施、运用数据库的能力。为此,在课程设置中要加强互动教学机制,调动学生的主动性和参与性,提高学生的应用能力。

1.1 在有限学时内设计最佳课程学习内容

本课程的目的和任务是使学生全面地了解和掌握数据库系统的基本概念、原理及应用技术,使学生系统、科学地得到分析问题和解决问题的训练,提高运用理论知识解决实际问题的能力。数据库系统是一门综合性的软件技术,是编译原理、数据结构、操作系统、程序设计等许多软件知识的综合应用。在本门课程学习中,我们根据学时和课程内容,对所学内容的掌握程度划分为:了解、掌握。参考王珊、萨师煊编写的《数据库系统概论》具体设置如下:了解数据库技术发展的三个阶段及数据库系统的优越性。理解数据库系统的三级模式两级映象功能。理解数据库系统的组成。了解几种常用的数据模型,掌握数据模型、关系数据模型的概念及基本要素。掌握概念模型。掌握关系代数,了解关系演算。掌握SQL语言的基本语句。了解数据库的安全性控制机制及实现。理解数据库的完整性控制机制。掌握三类完整性的定义方法。掌握函数依赖的定义及相应的公理系统,掌握1NF、2NF、3NF、BCNF的定义及判别方法,掌握无损连接性分解及函数依赖保持性的判别方法,掌握3NF、BCNF模式分解的算法。掌握数据库设计的方法。掌握存储过程的概念及编写,了解JDBC编程。了解关系数据库系统的查询处理及优化,理解数据库的恢复技术。掌握事务的基本概念,理解数据库的并发控制机制。

1.2 合理设置实验内容

实验中以Oracle数据库的常用知识点作为训练重点,对生僻的知识采取简略甚至省略的态度,目的就是轻松进入Oracle的学习,为以后更深入的学习打下良好的基础。实验一:使用报表统计各部门人数。在实验中,创建一个报表,使用SQL*Plus的各种命令对输出结果进行格式化,实现对scott用户的emp表进行统计,显示各个部门的员工人数。后面的实验设计一个图书管理系统来进行实例操作,该实验将贯穿后面所有内容,具体设置如下。实验二:为图书管理系统创建表空间。首先为图书管理系统创建永久性表空间,后续关于图书管理系统的数据信息都将存储在该表空间中。同时,还为系统创建存储临时数据的临时表空间和为存储撤销数据的撤销表空间。实验三:为图书管理系统创建表。该实验中将创建图书管理系统所需的表,并在表中应用完整性约束条件,让学生熟悉表以及完整性约束的实际应用效果。实验四:SQL语句的应用。在Oracle的日常管理和应用中,管理员几乎都是使用SQL语言来访问数据库,掌握SQL语言及其脚本程序的编写是非常重要的。实验五:使用存储过程与函数查询图书信息。使用SQL语句可实现很多功能,但它并不具有可重用性,在需要的时候必须重新编写。为了提高代码的可重用性,可将一些常用的代码块存放在命名PL/SQL程序块中,应用存储过程和函数等,这样可方便随时调用,既简单、又能提高程序的运行效率。实验六:为图书管理系统创建用户。Oracle数据库自带了许多用户,如system、scott和sys用户等,也允许数据库管理员创建用户。为了保证数据库系统的安全,数据库管理员可以为创建的用户分配不同的权限,也可以将一组权限授予某个角色,然后将这个角色授予用户,这样可以方便用户权限的管理,在实际应用中,用户、角色与权限是密不可分的。在这个义,Oracle中的权限,以及角色的创建与管理。

通过以上几个实验,逐步熟悉Oracle的应用和管理。

1.3 综合应用,以项目案例为载体,进行数据库应用系统开发

从实际应用的角度出发,将Oracle数据库与JSP技术结合起来,训练Oracle数据库在Web程序中的实际应用。

2 Oracle在教学实施中应注意的问题

Oracle数据库作为数据库系统原理的实验用数据库管理系统,不仅用在平时上机实验中,而且在后期综合设计中也用。我们不仅要学习如何使用Oracle,还要看看如何管理Oracle数据库。但Oracle数据库管理系统仅作为我们的实验用环境,在实验范围内仅要求掌握如何使用,其余内容需要课外自学。我们在教学实施中要注意以下问题。

2.1 全面理解和应用课程基本知识和技能

考虑到每位学生都要求熟练掌握数据库应用基本知识和操作技巧,实验设置分阶段完成。第一阶段,主要以个人形式实现分阶段任务,完成课本上的学生课程数据库的创建。第二阶段,为了激发学生学习自主性和积极性,鼓励学生自行对该系统功能进行拓展,如增加学生选课管理模块等。第三阶段,进一步学习“Oracle在Web程序中的应用”,让学生计的基本步骤和方法进行设计和应用开发。

2.2 充分调动学生的学习主动性

实验中部分同学拿着实验指导书照着做,机械地照着指导书打字,对于指导书中讲的原理和实践视而不见。碰到问题,自己不想法解决,首先就是问老师,甚至同一个问题到下次又不会解决。因此提倡“自主设计、自己动手、自由探索”,把握指导的尺度,有效引导学生,将老师指导与鼓励学生自主设计、主动实践有机结合起来。

2.3 注重校企结合

加强校企合作,鼓励学生到校外实训基地实习,鼓励学生假期专业实践。在企业实际运作中,体会企业需求,培养学生发现问题和解决问题的能力。

参考文献

[1]杨少敏,王红敏.Oracle11g数据库应用简明教程[M].北京:清华大学出版社,2010.

Oracle数据库心得体会 篇3

学习Oracle数据库的心得体会

对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。

Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了ASP.NET、C++还有网页中用的Html语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的ASP.NET中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。

oracle数据库实训总结 篇4

本次实训为期两个星期,时间充裕,也给予了我足够的学习和实践的时间。在这次实训里,我了解到了数据库设计的过程和任务,对之前所学的oracle知识也起了很好的复习和巩固作用。

我们小组的选择的实训项目是《电子商城系统》,在做产品需求的时候,因为对商城系统的了解不够充分,我们在产品的功能性需求分类处的一些细节做了多次改进,通过参考网上的需求分析文档以及老师的指导,总算是顺利完成。我负责的是购物板块,幸亏我多年的网购经验,对购物流程有着深刻的理解,并积极参考小米和华为等网上商城的网站,最后也是顺利完成。

接下来是第二个重头戏——数据库设计。首先,我们的数据库原型设计使用的软件是PowerDesigner,使用也还算简单吧。数据库的实体我们进行了深入的讨论,最后也做了多次修改,主要原因还是因为我们对电子商城的了解以及对于数据库实体之间的掌握还不够。在老师的指导下也算是顺利完成了。接下来也很顺利的完成了《数据库设计说明书》等的文档编写。

oracle数据库学习之路 篇5

Oracle数据库以其高可靠性、安全性、可兼容性,得到越来越多的企业的青睐。如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的问题,根据笔者经验建议不妨针对以下几个方面加以考虑。

一、分区

根据实际经验,在一个大数据库中,数据空间的绝大多数是被少量的表所占有。为了简化大型数据库的管理,改善应用的查询性能,一般可以使用分区这种手段。所谓分区就是动态表中的记录分离到若干不同的表空间上,使数据在物理上被分割开来,便于维护、备份、恢复、事务及查询性能。当使用的时候可建立一个连接所有分区的视图,使其在逻辑上仍以一个整体出现。

1.建立分区表

Create table Employee(

EmpNo varchar2(10) primary key,

Name varchar2(30),

DeptNo Number(2)

Partition by range(DeptNo)

(partition PART1 values less than (11)

tablespace PART1_TS,

partition PART2 values less than(21)

tablespace PART2_TS,

partition PART3 valuse less than(31)

tablespace PART3_TS

partition PART4 values less than(MAXVALUE)

tablespace PART4_TS

);

表Employee依据DeptNo列进行分区。

2.分区索引

Create index Employee_DeptNo on Employee (DeptNo)local(

partition PART1 tablespace PART1_NDX_TS,

partition PART2 tablespace PART2_NDX_TS,

partition PART3 tablespace PART3_NDX_TS,

partition PART4 tablespace PART4_NDX_TS,

);

当分区中出现许多事务并且要保证所有分区中的数据记录的惟一性时采用全局索引,在建立全局索引时,Global子句允许指定索引的范围值,这个范围值可以不同于表分区的范围值。只有建立局部索引才会使索引分区与表分区间建立起一一对应关系。因此,在大多数情况下,应该使用局部索引分区。若使用了此索引,分区就能够很容易地将索引分区与表分区建立关联,局部索引比全局索引更易于管理。

3.分区管理

根据实际需要,还可以使用Alter table命令来增加、删除、交换、移动、修改、重命名、划分、截短一个已存在分区的结构,

二、重建索引

如果表中记录频繁地被删除或插入,尽管表中的记录总量保持不变,索引空间的使用量会不断增加。虽然记录从索引中被删除,但是该记录索引项的使用空间不能被重新使用。因此,如果表变化不定,索引空间量会不断增加,不论表中记录数量是否增加,只是因为索引中无效空间会增加。

要回收那些曾被删除记录使用的空间,需要使用Alter index rebuild命令。可以做一个定期运行的批处理程序,来重建最活动表的索引。这个批处理程序可以在空闲时运行,以避免该程序与其他应用程序冲突。若能坚持索引的这一程序规划,便可以及时回收那些未使用空间,提高空间利用率。

三、段的碎片整理

当生成一个数据库对象时(一个表或一个索引),通过用户缺省值或指定值来为它指定表空间。一个在表空间中生成的段,用于存储对象的相关数据。在段被关闭、收缩、截断之前,段所分配的空间将不被释放。

一个段是由范围组成,而范围是由相邻的Oracle块组成。一旦存在的范围不能再存储新的数据,这个段就会去获得新的范围,但并不要求这些范围是彼此相邻的。这样的扩展会一直继续下去,直到表空间中的数据文件不能提供更多的自由空间,或者范围数量已达到极限。

因此,一个碎片太多的数据段,不仅会影响运行,也会引发表空间中的空间管理问题。所以,每个数据段只含有一个范围是十分有益的。借助监控系统,可以通过检查DBA_SEGMENTS数据字典视图来了解哪些数据库对象含有10个或更多范围的段,确定其数据段碎片。

若一个段的碎片过多,可用两种方法解决:

1. 用正确的存储参数建立一个新表,将旧表的数据插入到新表中,在删除旧表;

2. 利用Export/Import工具。

如:exp system/manager file=exp.dmpcompress=Y grants=Y indexes=Y

tables=(T1,T2)

若输出成功,进入Oracle,删除上述表。

注:compress=Y表示将在输出过程中修改它们的存储参数。

imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y

四、自由范围的碎片整理

表空间中的一个自由范围是表空间中相连的自由(空间)块的集合。当一个段关闭时,它的范围将被释放,并被标记为自由范围。然而,这些自由范围再也不能与相邻的自由范围合并,它们之间的界线始终存在。但是当表空间的缺省值pctincrease设置不是0时,SMON后台进程会定期将这些相邻的自由范围合作。若pctincrease设置为0,那么相邻自由范围不会被数据库自动合并。但可以使用Alter table命令“coalesce”选项,来强迫进行相邻自由范围的合并。

不进行自由范围合并,在日后的空间请求中,会影响到表空间中的空间分配。当需要一个足够大的范围时,数据库并不会合并相邻的自由范围,除非没有其他选择。这样,当表空间中前面较小的自由范围已被使用时,将使用表空间中后面部分最大的一个自由范围。结果,会因为没有足够多的使用空间,从而导致表空间需求的矛盾。由于这样的情况出现,使数据库的空间分配距理想越来越远。自由空间碎片常会出现在那些经常关闭又重新生成的数据库表和索引中。

在理想的Oracle表空间中,每一个数据库对象存储在一个单独的范围中,并且所有有效自由空间集中在一个巨大而连续的范围中。这样,在一个对象需要附加存储空间时,可以在增加获取足够大自由空间的可能性的同时,最小化空间中的循环调用,提高自由空间使用率。

Oracle数据库优化策略 篇6

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.

oracle数据库学习之路 篇7

数据库安全问题一直是人们关注的焦点之一,我们知道一个企业或者机构的数据库如果遭到 的攻击,而这些数据库又保存着非常重要的数据,象银行、通信等数据库,后果将不堪设想。Oracle数据库使用了多种手段来保证数据库的安全性,如密码,角色,权限等等。

作为Oracle的数据库管理员都知道,数据库系统典型安装后,一般sys和system以及internal这三个用户具有默认的口令,数据库安装成功后,系统管理员作的第一件工作就是修改这些用户的口令,保证数据库的安全性。然而,众多管理员往往忽视了其中的一个安全问题,下面我们就将详细讨论这个问题。

Oracle数据库系统如果采用典型安装后,除了创建前面介绍的几个用户外,另外还自动创建了一个叫做DBSNMP的用户,该用户负责运行Oracle系统的智能代理(Intelligent Agent),该用户的缺省密码也是“DBSNMP”。如果忘记修改该用户的口令,任何人都可以通过该用户存取数据库系统。现在我们来看一下该用户具有哪些权限和角色,然后来分析一下该用户对数据库系统可能造成的损失。

启动SQL/PLUS程序,使用该用户登录进入:

SQL>select * from session_privs;CREATE SESSIONALTER SESSIONUNLIMITED TABLESPACECREATE TABLECREATE CLUSTERCREATE SYNONYMCREATE PUBLIC SYNONYMCREATE VIEWCREATE SEQUENCECREATE DATABASE LINKCREATE PROCEDURECREATE TRIGGERANALYZE ANYCREATE TYPECREATE OPERATORCREATE INDEXTYPE

可以看到该用户不是SYS或SYSTEM管理用户,然而,它却具有两个系统级权限:UNLIMITED TABLESPACE和CREATE PUBLIC SYNONYM,

看到这两个权限你应该马上想到,这些都是安全隐患,尤其是UNLIMITED TABLESPACE,它是破坏数据库系统的攻击点之一。如果这时候你还依然认为,即使有人利用这个没有修改的口令登录进数据库也造成不了什么损失的话,我就不得不提醒你:该用户具有UNLIMITED TABLESPACE的系统权限,它可以写一个小的脚本,然后恶意将系统用垃圾数据填满,这样数据库系统也就无法运行,并将直接导致最终的瘫痪。目前很多数据库系统都要求7X24的工作,如果出现了系统用垃圾数据填满的情况,那么,等数据库系统恢复时,恐怕不可挽回的损失已经造成了。

为了保证Oracle数据库系统运行的绝对安全,强烈建议数据库管理员修改该用户的默认口令,不要为不怀好意的人留下“方便之门”。

oracle数据库学习之路 篇8

本文的目的:

1、说一说Oracle的Optimizer及其相关的一些知识。

2、回答一下为什么有时一个表的某个字段明明有索引,当观察一些SQL的执行计划时,发现确不走索引的问题。

3、如果你对 FIRST_ROWS、ALL_ROWS这两种模式有疑惑时也可以看一下这篇文章。

开始吧:

Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器(Optimizer)来完成的。不同的情况,一条SQL可能有多种执行计划,但在某一时点,一定只有一种执行计划是最优的,花费时间是最少的。相信你一定会用Pl/sqlDeveloper、Toad等工具去看一个语句的执行计划,不过你可能对Rule、Choose、First rows、All rows这几项有疑问,因为我当初也是这样的,那时我也疑惑为什么选了以上的不同的项,执行计划就变了?

1、优化器的优化方式

Oracle的优化器共有两种的优化方式,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO)。

A、RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。

B、CBO方式:依词义可知,它是看语句的代价(Cost)了,这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小 、有少行、每行的长度等信息。这些统计信息起初在库内是没有的,是你在做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些我们应及时更新这些信息。在Oracle8及以后的版本,Oracle列推荐用CBO的方式。

我们要明了,不一定走索引就是优的,比如一个表只有两行数据,一次IO就可以完成全表的检索,而此时走索引时则需要两次IO,这时对这个表做全表扫描(full table scan)是最好的。

2、优化器的优化模式(Optermizer Mode)

优化模式包括Rule,Choose,First rows,All rows这四种方式,也就是我们以上所提及的。如下我解释一下:

Rule:不用多说,即走基于规则的方式。

Choolse:这是我们应观注的,默认的情况下Oracle用的便是这种方式。指的是当一个表或或索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别的小,而且相应的列有索引时,那么就走索引,走RBO的方式。

First Rows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。

All Rows:也就是我们所说的Cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有的行,从总体上提高查询的吞吐量,

没有统计信息则走基于规则的方式。

3、如何设定选用哪种优化模式

a、Instance级别

我们可以通过在init.ora文件中设定OPTIMIZER_MODE=RULE、OPTIMIZER_MODE=CHOOSE、OPTIMIZER_MODE=FIRST_ROWS、OPTIMIZER_MODE=ALL_ROWS去选用3所提的四种方式,如果你没设定OPTIMIZER_MODE参数则默认用的是Choose这种方式。

B、Sessions级别

通过SQL>ALTER SESSION SET OPTIMIZER_MODE=;来设定。

C、语句级别

这些需要用到Hint,比如:

SQL>SELECT /*+ RULE */ a.userid,  2   b.name,  3   b.depart_name  4   FROM tf_f_yhda a,  5  tf_f_depart b  6   WHERE a.userid=b.userid;

4、为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢?如何解决呢?

A、不走索引大体有以下几个原因:

♀你在Instance级别所用的是all_rows的方式;

♀你的表的统计信息(最可能的原因);

♀你的表很小,上文提到过的,Oracle的优化器认为不值得走索引。

B、解决方法:

♀可以修改init.ora中的OPTIMIZER_MODE这个参数,把它改为Rule或Choose,重起数据库。也可以使用4中所提的Hint;

♀删除统计信息SQL>analyze table table_name delete statistics;

♀表小不走索引是对的,不用调的。

5、其它相关

A、如何看一个表或索引是否是统计信息

SQL>SELECT * FROM user_tables  2  WHERE table_name= 3 AND num_rows is not null;    SQL>SELECT * FROM user_indexes  2  WHERE table_name= 3   AND num_rows is not null;

b、如果我们先用CBO的方式,我们应及时去更新表和索引的统计信息,以免生形不切合实的执行计划。

SQL>ANALYZE TABLE table_name COMPUTE STATISTICS;  SQL>ANALYZE INDEX index_name ESTIMATE STATISTICS;

具体的ANALYZE语句请参照Oracle8i/9i 的refrence文档。

Oracle数据库设计案例研究 篇9

Oracle数据库是oracle公司所研制和开发的一个关系数据库系统。经过几十年的发展, 其功能和性能不断完善, 己成为功能最齐全最受欢迎的数据库系统。Oracle系统由oracle的核心, SQL*PLUS接口、主语言接口以及各种系统实用程序组成。Oracle是目前应用最广泛的数据库系统。一个完整的数据库系统包括系统硬件、操作系统、网络层、DBMS (数据库管理系统) 、应用程序与数据, 各部分之间是互相依赖的, 对每个部分都必须进行合理的配置、设计和优化才能实现高性能的数据库系统。

2 数据库案例分析

下面以图书馆中三个表为例使用oracle操作系统进行功能分析。

2.1 建表

关系数据库的特点之一就是用表的方式组织数据。通常这种表称之为关系。表是语言存放数据, 查找数据以及更新数据的基本数据。这种表与我们日常生活中所见的表非常相似, 但不完全相同。在语言中, 表有其严格的定义, 它是一种二维表格。对于这种表有如下规定。

(1) 每个表都有一个名字, 通常称为表名或关系名。 (2) 表中的一行称之为一个元组, 它相当于一个记录。 (3) 一个表可以由若干列组成, 表的每一列必须命名唯一, 即表中每一列都有一个名字, 同一表中不允许有相同的名字, 同一列的数据必须具有相同的数据类型。 (4) 表中的列值必须似不可分割的基本数据项。

建表:依次建立图书、读者、借阅三个表建立图书表, 该表记录了图书的总编号、书名、作者、出版单位、单价的信息, 在表结构中输入信息。建立读者表, 该表记录了读者的借书证号、单位、姓名、职称、地址的信息;建立借阅表, 该表记录了借书证号、总编号、借书日期的信息;在建立表结构后, 输入表数据, 得到了三个表, 即图书表、读者表、借阅表。

2.2 单表查询功能

使用查询功能SQL语言中最主要, 最核心的部分是它的查询功能。所谓查询就是从数据库中提取满足用户指定条件的数据。查询是由SELECT命令实现的。在SQL中, 许多其他操作也涉及到SELECT命令。例如插入一组数据时, 可以将SELECT命令查询到的数据增加到一个表中, 视图定义也使用SELECT命令将满足一组条件的数据构成一个视图等等。查询虽然只使用SE-LECT命令, 但由于它能反映不同的查询要求, 因此它是SQL语言中最复杂的命令。在查询过程中仅涉及到一个表的查询称为基本查询或一元查询。

以图书表为例进行一元查询

查询所有书籍的书名、作者、出版单位、单价

SQL语言为:select书名, 作者, 出版单位, 单价

from图书

查询分类号是INT2000, 且出版单位是清华大学出版社的书籍的情况

SQL语言为:select*from图书

Where分类号=“INT2000”and出版单位=“清华大学出版社”

以上面的读者表为例进行一元查询

查询所有读者的姓名, 职称, 地址

SQL语言为:select姓名, 职称, 地址from读者

查询初级职称读者的借书证号, 单位, 姓名, 地址

SQL语言为:select借书证号, 单位, 姓名, 地址from读者

Where职称=“初级”

2.3 多表查询

查询读者的借书证号、姓名、总编号、借书日期

select借书证号、姓名、职称、地址、总编号、借书日期from借阅, 读者

where读者.借书证号=借阅.借书证号

2.4 排序显示

用户在使用select命令查找数据时, 查询的结果是按照元组在表中的顺序显示的。有时用户要求查询的结果按照某种特定的顺序显示, 例如, 按照年龄由小到大来显示数据等。在select命令中提供了order by子句, 用于可以使用来改变查询结果的显示顺序。

例如在图书表中以单价递增的顺序显示书籍的信息

SQL语言为:select﹡from图书

order by单价

2.5 分组查询

在使用中我们需要对表中某一列上具有相同值的数据进行操作。在对表进行操作时, 要求将元组按某个或某几个列上相同的值分成组, 然后再对组进行相应的操作, 称作分组查询。以读者表为例, 查询各职称的人数。

SQL语言为select职称.count (﹡) from读者

Group by职称

3 数据库案例分析的启示

3.1 索引 (Index) 的使用技巧

创建索引一般有两个目的:维护被索引列的惟一性和提供快速访问表中数据的策略。大型数据库有两种索引, 即簇索引和非簇索引, 一个没有簇索引的表是按堆结构存储数据, 所有的数据均添加在表的尾部;而建立了簇索引的表, 其数据在物理上会按照簇索引键的顺序存储, 一个表只允许有一个簇索引, 因此, 根据B树结构, 可以理解添加任何一种索引均能提高按索引列查询的速度, 但与此同时会降低插入、更新、删除操作的性能, 尤其是当填充因子 (Fill Factor) 较大时。所以对索引较多的表进行频繁的插入、更新、删除操作时, 建表和索引时应设置较小的填充因子, 以便在各数据页中留下较多的自由空间, 减少页分割及重新组织的工作。

3.2 数据的一致性和完整性

为了保证数据库的一致性和完整性, 设计人员往往会设计过多的表间关联 (Relation) , 尽可能地降低数据冗余。表间关联是一种强制性措施, 建立后, 对父表 (Parent Table) 和子表 (Child Table) 的插入、更新、删除操作均要占用系统的开销, 另外, 最好不要用Identify属性字段作为主键与子表关联。如果数据冗余低, 数据的完整性容易得到保证, 但增加了表间连接查询的操作。为了提高系统的响应时间, 合理的数据冗余也是必要的。使用规则 (Rule) 和约束 (Check) 来防止系统操作人员误输入造成数据的错误是, 设计人员的另一种常用手段, 但是, 不必要的规则和约束也会占用系统的不必要开销, 需要注意的是, 约束对数据的有效性验证要比规则快。所有这些, 设计人员在设计阶段应根据系统操作的类型、频度加以均衡考虑

3.3 数据类型的选择

数据类型的合理选择对于数据库的性能和作具有很大的影响, 表现在以下几点。

(1) Identify字段不要作为表的主键与其它表关联, 这将会影响到该表的数据迁移。

(2) Text和Image字段属指针型数据, 主要用来存放二进制大型对象 (BLOB) 。这类数据的作相比其它数据类型较慢, 因此要避开使用。

参考文献

oracle数据库学习之路 篇10

internal/oracle的密码更改用什么命令?alter user internal identified by 密码(系统提示没有此用户名)?

ANSWER

1、第一种方法是更改SYS用户的密码。同样的影响将发生在INTERNAL。

2、使用ORAPWD命令改写密码文件。在DOS模式下运行该命令。对于NT系统的ORACLE和UNIX系统的ORACLE有一定的不同。因为两者的密码文件放在不同的位置。

FOR UNIX** root ******0 smit fsbackup filesystem1 export ORACLE_SID=sgdlmis2 orapwd file=/orapwdsgdlmis.pwd password=oracle entries=303 vi initsgdlmis.oraremote_login_passwordfile = exclusive4 svrmgrlconnec internal/oracle as sysdbastartup;

 

FOR NT

1、进入DOS下

2、默认internal密码文件在:[oracle home]ora81database下,是隐藏属性,文件名称与数据库实例名有关

如默认ORACLE实例名为ORCL,则internal密码文件名为pwdorcl.ora

备份密码文件

3、建立新的internal密码文件,起个新名字为pwdora8.ora

orapwd80 file=pwdorcl.ora password=B entries=5   --注:password项一定要用大写,并且不要用单引号

 

4、拷贝pwdorcl.ora文件到c:orantdatabase目录下

5、验证密码正确性,

oracle数据库学习之路 篇11

1. 企业版(Enterprise Edition)

2. 标准版(Standard Edition)

3. 个人版(Personal Edition)

1.3.2 Oracle 9i应用服务器

Oracle 9i应用服务器有两种版本,

网络关系型数据库的代表Oracle 9i数据库教程

1. 企业版(Enterprise Edition)

企业版主要用于构建互联网应用,面向企业级应用。

2. 标准版(Standard Edition)

标准版用于建立面向部门级的Web应用。

1.3.3 Oracle 9i开发工具套件

ORACLE数据库系统的优化 篇12

1 应用设计中的优化

从工程上讲, 好的设计带来好的可靠性、可维护性。数据库应用系统的应用构架也是这样。充分的设计会带来成功, 不充分的设计带来的是开发阶段的痛苦和运行阶段的低效, 并导致后续不断需要的系统优化和应用优化。数据模型设计在应用整体设计中是一个基础。其结果相当于我们建筑中的底层结构。在我们设计的数据库实体中, 那些被频繁访问的实体 (如表和视图) 往往需要对其予以较多的关注。因为, 它们是决定整个应用系统在后端访问中性能相关问题的主要方面。

表的规范化设计使表中数据冗余度降低, 这样, 数据存储增长对系统性能的影响会有所降低。表的非规范化设计以提高冗余为代价, 如添加冗余列、预连接列、存储值等方法, 这会增加额外的存储开销。

众所周知, 索引在SQL执行计划生成中占有重要地位。在表结构及数据量相同的条件下, 给表设计出不同的索引结构, 会导致访问该表的相同的SQL具有不同的执行计划。索引可以有效提升査询效率。但凡事都有两面性:维护一个索引结构的代价也是昂贵的。索引需要磁盘空间来存储, 并使用CPU、I/O资源来维护。创建索引的一个重要原则就是:索引带来的维护代价要小于因索引带来的益处。也就是说, 投入要小于产出!SQL执行效率的问题。最大程度地减少SQL执行中语法分析的活动, 是SQL优化的一个准则。在执行SQL语句时, 语法分析是解释并执行SQL语句的首要过程, 包括分析SQL句法、检查执行权限、生成执行计划、装载共享结构等。语法分析结束后, 数据库优化器将进行分析并确定其执行计划, 编译成伪代码后提交oracle内核执行。语法分析有两种不同类型的分析方式和操作步骤:硬解析和软解析, 相对软解析来说硬解析会占用较多的CPU及内存资源, 而使用绑定变量的方式执行SQL语句, 会使用软解析, 可以有效的避免硬解析的出现, 这一点在程序开发阶段非常重要。

2 服务器硬件上的考虑

性能基准测试往往是服务器硬件厂商衡量服务器的技术指标, 该测试基于资源使用和时间消耗。这些测试可能并不能真正代表什么, 生产系统未来的性能指标和性能基准测试可能并无可靠的关系。由于技术的进步, 处理器、内存、磁盘驱动器的价格日趋走低, 硬件上的升级是很多用户的选择。在一些情况下, 添加CPU、扩展系统内存或者添加更多的磁盘驱动器的确能够立竿见影地得到有效的性能增强。在硬件设计上, 要充分考虑后期硬件的可扩展性。比如在内存的使用上, 服务器里面用的是16GB一条的内存, 结果在系统需要内存扩容时发现, 如要满足需求, 需要使用32GB一条的内存, 而且需要替换下来部分16GB的内存, 这样就白白的造成了浪费。

3 I/O配置的优化

I/O子系统是Oracle数据库至关重要的组成部分。数据库性能归根结底将反映为I/O性能。在大多数数据库系统中, 等待I/O所用的CPU时间是CPU使用构成中的主要部分。如果这个比例很高, 意味着整体系统的性能将受到I/O的制约。如果一套oracle逻辑上设计合理、应用与SQL上开发高效、物理实施上恰当, 则I/O不应成为系统的瓶颈所在。当然, 这样的系统可能也做不出来。如果系统受到I/O性能制约, 那么解决方法中往往包含以下几个方面:数据库应用系统的逻辑设计优化;应用开发优化;数据库物理实施优化;服务器I/O设置优化;存储介质优化。为安全性考虑, 采用RAID镜像至关重要。我们不能允许单个磁盘的损坏导致一逻辑卷的失败。如果没有RAID的硬保护, 又没有操作系统在逻辑卷上的镜像保护, 则发生的硬盘损坏故障必然导致系统崩漠, 这时就只能寄希望于数据恢复操作了。除考虑性能外, 系统空间的可扩展性也是考证磁盘存储子系统能力的重要指标。空间发生短缺的情况下, 是否可以添加磁盘扩展容量。这个指标可能是衡量磁盘存储案的决定性指标。

4 系统运行时调整系统性能

在数据库系统出现性能问题后, 最好能先明确问题的方向所在。也就是说, 先别看任何数据库或操作系统的性能统计数据, 而是龄听用户对于性能问题的整体描述, 定位问题的表象, 进而评估问题方向, 最后参照统计数据确定工作方案。通过用户的反馈, 数据库性能管理员可以先行定位问题的主要方面, 描述性能的关键指标。例如, 一个报表在300秒之后才能获得, 另一个查询一般需要2分钟……这样的好处是, 数据库性能统计通过这些代表业务的数字所表示, 而并非某些意义模糊的统计数据。优化成功的最终评价标准是用户系统在性能上的提升。在进行oracle优化性能的尝试中, 理想情况下这将是一个循环上升的过程。通过若干的迭代, 直到达到性能目标。但是有一点这里需要强调:整个过程同时也是一个高度交互性的过程, 可能存在一些测试和实验, 这本身可能会对系统的运行性能造成影响。甚至一些操作过程会导致性能的显著下降。因此, 优化需要有非常综合的知识和足够的经验, 同时, 要有"胆大心细、遇事不慌"的个人素质。性能调整的普遍适用规则并不存在, 但一个规范的工作流程和实施步骤是有的, 而且被证明行之有效。

第一步:执行系统状态检査。询问用户问题的来龙去脉, 并据此判断问题范围。确定工作方向和基本工作方法。在系统稳定运行的状态下, 取得操作系统、数据库、应用系统相关的性能统计数据, 然后在有性能问题的状态下, 取得同样的性能统计。通过对比, 性能管理员就可以较为准确地定位问题。寻找硬件相关故障, 确定或者排除硬件上的故障。检查操作系统和oracle是否按照一般的配置进行了设置。第二步:判断系统是否处于常见错误配置的情况下。从概率角度上看, 常见错误产生问题的可能性较大。如果用户使用的是oracle 10g以上的版本, 则ADDM往往可以协助你进行错误定位。第三步:建立一个用来分析性能问题成因的流程示意图, 并能够将用户提交的各种现场症状与之四配。第四步:建立行动计划, 这个行动计划中的各个调整方面及范围都应有对性能提高贡献率的评估。随后, 根据贡献率大小, 从最重要的开始进行调整, 每次仅调一项。第五步:校验系统调整带来的结果, 查看执行过的调整计划是否有效以及诸多调整中的哪一个有效、用户系统的性能是否已改进。如果没有改进, 则继续寻找瓶颈所在并进行调整, 进入到下一轮循环。重复第三步、第四步、第五步, 直到性能问题得以解决。这种方法非常有利于识别和调整最大的性能瓶硕, 渐进式调整目标数据库系统。

摘要:数据库系统包括存储设备、主机设备、网络设备、数据库软件及应用软件的多层环境, 数据库系统的性能优劣是综合了上述多层环境中各节点间效率的高低。而数据信息已经成为一些大中型企业的核心, 数据库的性能直接影响着客户体验, 对市场运营支撑起着至关重要的作用。本文通过对ORACLE数据库系统各环节的分析, 描述了相应环节的优化方法。

oracle数据库学习之路 篇13

据SA互联网风暴中心称,该蠕虫可对所有连入网络的甲骨文数据库进行扫描,发现目标之后,它会利用几个默认的用户名及密码组合尝试登录,登录被许可后,该蠕虫会在

SA风暴中心的博客称:“就目前而言,该蠕虫还不能构成严重的威胁,但相当于发出了一个重要的预警,将来很有可能会出现该蠕虫的变种,并具备其它的繁殖及传播方法,

甲骨文数据库安全专家、德国RedDatabaseSecurity创办者亚里山大-考恩布斯特表示,目前发现的蠕虫是概念验证型代码,也就是目前仅仅是一次攻击实验,还没有形成大规模的威胁。他说:“据我掌握的情况,这是第一个针对甲骨文数据库的蠕虫病毒。”微软的SQL服务器和开源MySQL服务器的数据库此前曾受到过蠕虫的侵扰。

考恩布斯特表示:“该蠕虫的危险性很低,但它预示着未来更大的潜在危险。对数据库管理者来说这无疑于一记警钟。”

★ 浅析Oracle语句优化规则

★ Informix数据库配置详解数据库

★ WebLogic与ORACLE数据库的连接配置

★ 编译原理优化器实验心得

★ Fedora Core 3安装Oracle 10.1.0.3简要流程数据库教程

★ 在Windows 下优化Oracle9i性能数据库

★ 百度的优化精髓分词技术详解

★ oracle常用函数

★ oracle学习方法

Oracle数据库维护浅谈 篇14

随着公共卫生信息化的不断发展,疾病预防控制和管理信息化水平越来越高,软件系统也越来越多,有健康教育信息平台、健康素养网络学习系统、居民健康素养评估学习系统、江苏省重性精神疾病管理信息系统、肿瘤登记随访报告系统、江苏省学生健康监测系统、江苏传染病预测预警平台等等不一而足。疾控业务的开展对于这些系统的依赖程度也越来越高。而这些系统业务涉及全省,同时是24x7的工作模式,这对于数据库正常运行的要求非常高。现在是大数据的时代,作为卫生大数据的基础就是这些业务系统的数据,这些数据有的甚至是从2003年SARS爆发时就收集的数据,所以这些数据能对疾病防治分析提供非常珍贵的资料来源。为保障业务系统的核心价值数据不丢失,保证IT系统的有效性,数据库维护就显得尤为重要。

1 数据库的现状

1.1 人才匮乏,基础薄弱

目前,信息管理过程中还存在着重开发、轻数据的现象,由于资金紧张,一直以来数据维护都是由软件公司代为维护,没有专业人员专门维护。带来的问题是往往数据库会带病运行,最终可能导致到时发现问题时系统已经病入膏肓,很难挽救。所以防微杜渐显得尤为重要,平时的维护非常重要。信息中心技术人员在数据库方面运维技能水平有限,但由于缺乏实践经验,相对较高数据库运行维护经验的人员仍有一定差距。

1.2 数据库多且复杂

数据库多版本并存,且比较分散。目前我中心同时存在oracle9i,oracle10g,oracle11g版本, 而且已经 有近30个数据库,基本是一个业务系统对应一台数据库。有些数据库存在一些历史遗留问题,硬件条件差,但对业务处理量却很大,处理问题时就会束手束脚。所以对数据库的管理往往是运行不了的时候才进行维护,目前数据库管理被动、分散,对系统故障反应速度较低。

1.3缺乏经费支持,缺乏领导重视和持续的管理制度

目前,第三方数据库维护往往定价较高,同时领导觉得软件出问题重启下就好,数据库备份也是想起来才备份,缺少相应的机制。我中心设备已经运行了十几年,一直都很稳定,也让领导误认为数据库不会出问题。

2 对策

2.1 操作系统运行状态检查

数据库是运行在操作系统上的应用程序,因此对操作系统运行状态的数据收集,可以帮助了解数据库的运行状态。记录数据库的cpu使用、IO、内存、文件系统、日志等使用情况,使用vmstat,iostat,sar,top等命令进行信息收集并检查这些信息,判断资源使用情况。

(1)用vmstat命令观察CPU资源利用情况,CPU上运行的任务数持续大于CPU核心数的2倍,视为异常;CPU空闲百分比持续低于10%,视为异常。此外还应注意,CPU用户使用百分比和系统使用百分比的比例,在一个状态正常的系统上,用户使用百分比应该比系统使用百分比大很多,否则系统的状态是不正常的,可能是硬件或者操作系统问题,也可能是应用问题。

(2)用Free-m查看系统内存使用情况,当剩余内存低于总内存的10%时视为异常。

(3)用Iostat-k13关注磁盘IO的繁忙程度(%b)。

(4)用命令df-g或df-h查看文件系统资源状况。如果文件系统的剩余空间小于10%,则需要删除不必要的文件以释放空间。比如清除$ORACLE_BASE/admin/db_name/bdump,cdump,udump下的文件 ,以及清除监 听日志 $ORACLE_HOME/net work/log。

(5)检查操作系统日志文件。查看是否有与Oracle用户相关的出错信息可使用cat /var/log/messages |grep failed。

2.2 数据库实例运行状态检查

(1)检查用户,把好数据安全第一道关卡。可以通过all_users来了解数据库用户的情况,以便及时发现异常信息:发现了新的数据库用户;原来被锁定的用户被打开了;用户默认表空间发生了变化;用户默认资源配置梗概或资源消耗组发生了变化等。

命令:select * from all_users;

说明:查看系统用户。

(2)检查数据库的连接,查看会话数目是否正常,可以多次运行以下命令查看,看看总会话数是否稳定,并和之前的数据进行对比,同时,对一些“挂死”的连接,可能会需要手工进行清理。

命令:select username,count(username) from v$session whereusername is not null group by username;

说明:查看不同用户的连接数。

命令:select spid from v$process where addr not in (selectpaddr from v$session);

说明:查看是否有僵死进程。

要手工断开某个会话,则执行:alter system kill session′SID,SERIAL#′。

(3)查看数据库告警日志(alert.log)。不同的数据库版本,该日志的位置也会不同,一般来说,10g的数据库上,在ORACLE_BASE/admin/ORACLE_SID/bdump/alert_ORACLE_SID.log;而11g数据库上,在ORACLE_BASE/diag/rdbms/ORACLE_SID/ORACLE_SID/trace/alert_ORACLE_SID.log,具体可以登录数据库并通过以下命令查询:

select value from v$diag_info where name ='Diag Trace';

找到alert.log日志后,可以检查是否有异常情况,例如:报错,可疑告警,可疑命令等,如果有这些异常,可以将这些信息报告专业DBA,由专业DBA结合其他信息进一步跟踪、分析,直到找到引起异常的原因,并妥善解决为止。

(4)如果数据库使用了Oracle的JOB来完成一些定时作业,要对这些JOB的运行情况进行检查:

命令:select job,log_user,last_date,failures from dba_jobs;

说明:如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。

2.3 数据库详细检查

2.3.1 检查表空间的使用情况

首先要查看数据库的空间使用率,数据库各表空间的空间使用情况,可以用以下命令查询,如果发现表空间使用率异常,应该引起注意,需进一步调查是正常使用还是异常使用,如果正常使用引起的空间不够,可以考虑对表空间扩容或其他措施解决,否则,就得看看什么问题导致了表空间的异常使用,查明原因后解决。

脚本:

select t.tablespace_name,total,free,round (100* (1 -(free/total)),3)||′%′as已使用的空间比例

from (select tablespace_name,sum(bytes)/1024/1024 totalfrom dba_data_files group by tablespace_name) t,(selecttablespace_name,sum(bytes)/1024/1024 free from dba_free_spacegroup by tablespace_name)f

wheret.tablespace_name=f.tablespace_name(+)

and t.tablespace_name not in(′DRSYS′,′ORDIM′,′SPATIAL′,′USERS′,′TOOLS′,′XDB′)

order by round(100*(1-(free/total)),3)desc;

其次,要查看表空间的设置及状态,最该注意的是用户数据表空间数据文件的自动扩展设置,一般来说,建议关闭用户数据表空间数据文件的自动扩展,这样,可以避免意外事件的发生,例如:表空间异常使用导致的系统空间耗尽等;关闭数据文件自动增长,当表空间耗尽时,继续使用数据库会在用户端报错,从而可以起到空间告警的作用,表空间数据文件可以查询ba_data_files及dba_temp_files等视图。

2.3.2 检查数据文件的状态

要定期查看数据库中数据文件的状态(如被误删除),根据实际情况决定如何进行处理,检查数据文件的状态的SQL如下:

命令:select file_name,status from dba_data_files;

说明:如果数据文件的STATUS列不是AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。

2.3.3 检查日志文件的情况

数据库的日志文件应该数据文件在不同的硬盘上存储,这样可以提高数据的安全性,减少I/O争用。如果数据文件出现损坏,仍然可以利用归档日志文件和数据库备份进行恢复。

命令:select group#,status,type,member from v$logfile;

说明:如果status为空,说明在线日志文件状态正常。status应该为非“INVALID”,非“DELETED”。

2.3.4 查看控制文件情况

控制文件如果出问题,数据库将启动不了。而且在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库控制文件的变化。建议定期备份控制文件。

命令:select status,name from v$controlfile;

说明:如果status为空,说明控制文件状态正常。

命令 :alter database backup controlfile to′/home/backup/control.bak′;

说明:备份控制文件到目录′/home/backup/control.bak′。

2.4 定期备份

方法1:定期备份使用RMAN工具,可用于管理对Oracle数据库的备份、还原和恢复操作。命令如下:

RMAN>BACKUP DATABASE PLUS A RCHIVELOG;

使用RMAN需要开启归档日志模式。

方法2:定期逻辑备份。命令如下:

exp用户名/密码 @ 服务名full=y file=备份的文件路径。

2.5 安全管理

应加强用户审计,防止非法用户的非法操作,定期修改用户密码;

做好防病毒工作,定期升级系统补丁。

2.6 数据库的优化

数据库是整个业务系统的核心,数据库的运行性能将直接影响整个系统的运作,如报表查询、统计报表、写数据等。在系统刚运行时,数据库的运行处理能力没有问题,但随着时间的变化,数据库的运行效率就有可能无法满足新的需要,这时就需要维护人员进行数据库调优来提升数据库的处理性能。

3 展望

以上讨论了日常工作中常用的oracle数据库维护命令,这也是管理数据库的一项重要内容。相信不久的将来信息人员对业务系统的维护不仅仅局限于软件功能的升级、硬件设备的维护,也会越来越多地重视数据库的维护。数据库的维护应该每天都在不断完善,只有这样才能真正做到数据的安全,当系统发生故障时,才能用备份数据恢复,确保业务系统正常运行并降低损失。

摘要:随着公共卫生信息化的发展,疾病预防控制中心迫切希望保证业务系统的正常运行,提高数据持续可管理水平。文章总结了oracle数据库运行维护过程中的常用命令,为指导数据库稳定、健康、可靠运行提供参考。

上一篇:《晚度天山有怀京邑》赏析下一篇:家长开家长会心得体会