oracle数据库总结

2024-06-03 版权声明 我要投稿

oracle数据库总结(精选13篇)

oracle数据库总结 篇1

班级:13高软班

数据库技术是计算机科学技术中发展最快的领域之一,也是应用最为广泛的技术之一,它已经成为计算机信息系统与应用的核心技术和重要基础。所以在学习这门课时,注重学生实际操作能力,安排了理论与上机操作相结合。以下是我的工作总结:

1、课前准备:备好课。认真学习贯彻教学大纲,钻研教材。了解教材的基本思想、基本概念、结构、重点与难点,掌握知识的逻辑。

了解学生原有的知识技能的质量,他们的兴趣、需要、方法、习惯,学习新知识可能会有哪些困难,采取相应的措施。

考虑教法,解决如何把已掌握的教材传授给学生,包括如何组织教学、如何安排每节课的活动。

2、课堂上的情况。组织好课堂教学,关注全体学生,注意信息反馈,调动学生的注意力,使其保持相对稳定性。同时,激发学生的情感,使他们产生愉悦的心境,创造良好的课堂气氛,课堂语言简洁明了,课堂提问面向全体学生,注意引发学生学习的兴趣,课堂上讲练结合,布置好课外作业,减轻学生的负担。

oracle数据库总结 篇2

随着信息化程度的不断提高, 现有的信息系统的用户数量急速增长, 作为用于存储和处理数据的系统后台数据库, 其中的数据存储量也随着这些因素成几何级数的增长。在实际使用中, 数据库系统最初的设置不能满足运行一段时间以后系统对性能的要求, 如果不能及时对系统进行优化处理, 数据库的性能会越来越差, 严重影响人们对信息的使用效率, 同时这些系统的隐患如果不及时解决, 最后必将导致系统的崩溃。由于Oracle数据库先进的、完整的、集成的电子商务解决方案, Oracle数据库占据了绝大多数的市场份额。因此, 对Oracle的优化技术的研究对信息系统有非常重要的意义。

正因为Oracle数据库的优化非常重要, Oracle的优化工作应当贯穿整个系统的设计, 运行的整个过程。Oracle数据库的优化主要包括以下几个方面, 数据库参数调整, SQL语句优化, 服务器操作系统参数调整以及网络性能调优。本文主要从数据库服务器内存参数调整和SQL语句优化两个方面论述如何对Oracle数据库进行性能调优。

1 对数据库服务器内存分配的调整

由于对服务器内存参数的调整对oracle的性能影响显著, 它成为Oracle数据库性能调优的首选对象。服务器内存参数的调整主要是对数据库系统全局区的调整, 系统全局区包括共享池、数据缓冲区、日志缓冲区。其中最主要的是对数据缓冲区和共享池的参数调整。

数据库缓冲区的作用主要是将从磁盘中读取的数据块存放在内存缓存中, 从这个意义上说数据库缓冲区越大, 存放的共享数据就越多, 减少了对磁盘数据的物理读操作, 也就提高了系统的响应速度。

共享池的作用主要是用来存放最近使用过的sql语句的, 它由一个最近最少使用的算法来管理, 由库高速缓存和数据字典缓冲区两部分组成。修改这一参数的设置, 能提高系统性能, 是由Oracle数据库系统处理用户提交的SQL语句的步骤决定的。Oracle处理SQL语句, PL/SQL程序之前会先对其进行语法分析, 权限确认, 在确认语法正确, 权限合理的之后, 会对SQL进行优化, 最终生成执行计划。这个过程花费了大量的时间, 如果在执行这些语句的时候可以将这些内容保存下来, 在下次执行相同的SQL语句或者PL/SQL, 就可以跳过这个步骤, 进而提高系统的响应速度。如果这一区域比较大, 在内存中找到相同数据的概率越大, 可以减少对SQL语句的重复解析的时间, 能明显的改进数据库的性能。但是共享池也并非越大越好, 如果共享池太大, Oracle为了维护这一共享结构, 需要付出更大的管理开销, 反而对数据库系统的性能维护不利。一般来说, 系统内存为1G, 共享池可设为150M~200M, 内存增压1G, 该值增加100M, 但共享池的最大值不应当超过500M。

综上所述, 系统全局区的参数设置应当随着系统的运行进行适当的调整, 使之在合理的范围内尽量大, 但是不能超过一个限度, 如果这一区域过大, 反而会占用操作系统使用的内存, 引起虚拟内存的页面交换, 降低了系统效率。

2 Sql优化

由于应用程序的执行最终归结为后台数据库中SQL语句的执行, SQL语句本身的执行效率就成为了影响oracle数据库执行效率的一个重要因素, 当我们对Oracle处理SQL语句的机制有所了解, 通过对SQL语句进行适当的调整, 就能提高Oracle数据库系统的性能。

1) 在基于规则的优化器中, Oracle对from子句中的表名是按照从右到左的顺序进行解析的, 即:

From子句中排在最后的表会被首先处理。我们把这张表称做驱动表。当from字句中包含多个标的情况下, oracle是通过排序合并的方式连接这些表的, 为了提高oracle的执行效率, 应当选择包含记录条数少的表作为驱动表, 即放在from子句的最后。当from子句中有3张以上的表进行连接查询时, 需要将连接其他表的交叉表作为驱动表。

2) 在oracle语句中, where子句的执行顺序是自下而上的对语句进行解析的。为了提高sql语句的执行效率, 应该将能过滤掉大量数据的条件写在where子句的最后。

3) 在selcect语句中使用*虽然对编程人员简单方便, oracle会自动列出所有列名, 但oracle解析*时则是通过查询数据字典来完成对*的转换的, 这样耗费了更多的时间用来查询数据字典, 转换, 必然降低执行效率, 因此在selcect语句中应当直接列出所有的列名。

4) 用where子句代替having子句, 在where子句中排除不需要的记录, 这样的执行效率将远远高于执行完成之后用having子句对记录进行筛选。

总体来说, Oracle数据库的性能优化涉及的方面很广, 是一个系统工程, 需要在系统设计运行的过程中, 不断运用以上提到的各个方面, 对Oracle数据库系统进行优化, 以确保数据库的使用效率。数据库的性能变差, 往往不是一个方面的问题, 而是各种问题相互结合导致的, 因此, 需要对各种因素综合分析, 对各种优化手段综合应用, 才能做到将数据库的性能维持在一个比较好的水平。

参考文献

[1]Gaja Krishna Vaidyanatha.Oracle性能优化技术内幕.机械工业出版社, 2002, 5:284.

创建Oracle数据库的原则 篇3

关键词: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应用数据库的过程,可以将这个过程写成批处理过程,这样不仅有助于保留建立应用数据库的参数,加快数据库的建立过程,而且还有助于日后的对数据库进行性能调整。所以我推荐根据具体的应用系统要求,建立一套标准的建立过程,是很有必要。

oracle数据库索引失效 篇4

今天一个同事突然问我索引为什么失效。说实在的,失效的原因有多种:

但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况:

1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)

2. 统计信息失效需要重新搜集统计信息

3. 索引本身失效需要重建索引

下面是一些不会使用到索引的原因

索引失效

1) 没有查询条件,或者查询条件没有建立索引

2) 在查询条件上没有使用引导列

3) 查询的数量是大表的大部分,应该是30%以上。

4) 索引本身失效

5) 查询条件使用函数在索引列上(见12)

6) 对小表查询

7) 提示不使用索引

8) 统计数据不真实

9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。

10)隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),

但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.

错误的例子:select * from test where tu_mdn=13333333333;

正确的例子:select * from test where tu_mdn=‘13333333333‘;

11)对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)

错误的例子:select * from test where id-1=9;

正确的例子:select * from test where id=10;

12)使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.

错误的例子:select * from test where round(id)=10;

说明,此时id的索引已经不起作用了 正确的例子:首先建立函数索引,

create index test_id_fbi_idx on test(round(id));

然后 select * from test where round(id)=10; 这时函数索引起作用了 1, 2,单独的>,<,(有时会用到,有时不会)

3,like “%_” 百分号在前.

4,表没分析.

5,单独引用复合索引里非第一位置的索引列.

6,字符型字段为数字时在where条件里不添加引号.

7,对索引列进行运算.需要建立函数索引.

8,not in ,not exist.

9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况,

10, 索引失效。

11,基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上

12,有时都考虑到了 但就是不走索引,drop了从建试试在

13,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走

14,联合索引 is not null 只要在建立的索引列(不分先后)都会走,

in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,

其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),

或者=一个值;当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),

oracle数据库总结 篇5

这门课主要是为我们在以前学过的数据库的基础上让我们更深入的加强对Oracle数据库的理解,让我们从它的结构,它的功能,它的对象以及多种方面去感受它。

老师每节课都说了不同的内容,然而我个人最关心的还是关于Oracle数据库的安全性。安全是现如今人人都在关注的问题,特别是计算机安全。如今每家每户的生活都离不开电脑,其中的安全问题更是大家在乎的重点。我们使用的软件,各种网络数据库的安全性我们尤为关心。

Oracle数据库经过30多年的发展,现如今已经为各个领域所使用,已经在数据库市场中占据了主导地位。在当今世界500强企业中,70%企业使用的是Oracle数据库,世界十大B2C公司全部使用Oracle数据库,世界十大B2B公司中有9家使用的是Oracle数据库。

为何Oracle会有如此的成就,能在众多数据库中脱颖而出?安全当然是第一原因。从一开始,Oracle就提供了业界最先进的技术来保护存储在数据库中的数据。Oracle提供了全面的安全性解决方案组合来保护数据隐私,防范内部威胁,并确保遵守法规。借助Oracle强大的数据库活动监控和分块、授权用户和多要素访问控制、数据分类、透明的数据加密、统一的审计和报表编制、安全的配置管理和数据屏蔽等强大功能,用户无需对现有应用程序做任何改变即可部署可靠的数据安全性解决方案,从而节省时间和金钱。

与此同时,Oracle公司也推出了许多安全性产品,例如数据防火墙,数据屏蔽,全面回忆等。

然而,随着时代的发展和Oracle被不断的应用,导致其中信息量逐渐增加,数据库的安全性越来越重要。防止数据丢失等事件的措施也越来越重要。对数据的管理也越来越严谨。

首先就是用户管理。用户和Oracle呈现一对一的关系,即一个口令对应一个用户,使每个用户的信息相对独立。还有很重要的权限系统,可以区分普通用户和管理员,方便信息管理和保存,同时也可以是用户的信息得到更安全的保存,不致使信息泄露等问题的发生。其次是系统权限。它可以选择用户给予相应的权限,确保信息不会被除管理开发人员意外的人盗用。

最后就是数据的备份。每个系统都不会是完美的,总会出现损坏的现象。数据备份就是防止各种损坏中数据的丢失和遗漏,也为数据库管理员解决了一个大麻烦。

oracle数据库总结 篇6

很多朋友只用了oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。

实现方法:

1、开始->设置->控制面板->管理工具->服务

停止所有Oracle服务。

2、开始->程序->Oracle - OraHome81->Oracle Installation Products->

Universal Installer

卸装所有Oracle产品,但Universal Installer本身不能被删除

5、运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。

6、运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动

这个列表,删除所有Oracle入口。

7、运行refedit,

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,

删除所有Oracle入口,

8、开始->设置->控制面板->系统->高级->环境变量

删除环境变量CLASSPATH和PATH中有关Oracle的设定

9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标

10、删除Program FilesOracle目录

11、重新启动计算机,重起后才能完全删除Oracle所在目录

12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入

口目录及所有子目录,并从Windows2000目录(一般为C:WINNT)下删除以下文

件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。

13、WIN.INI文件中若有[ORACLE]的标记段,删除该段

14、如有必要,删除所有Oracle相关的ODBC的DSN

15、到事件查看器中,删除Oracle相关的日志

说明:

如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装。安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了

(责任编辑:铭铭 mingming_ky@126.com TEL:(010)68476636)

Oracle数据库安全策略 篇7

1 数据库安全管理

数据库的安全性是指保护数据库, 防止非法操作所造成的数据泄露、篡改或损坏。在计算机系统中, 安全性问题普遍存在, 特别是当大量用户共享数据库中的数据时, 安全问题尤其明显。保证数据库安全也成为DBA一项最重要的工作。

1.1 安全性要求

⑴数据库的完整性。预防数据库物理方面的问题, 保护数据结构;⑵元素的完整性。包含在每个元素中的数据是准确的;⑶可审计性。能够追踪到谁访问修改过的数据元素;⑷访问控制。允许用户只访问被批准的数据, 以及限制不同的用户有不同的访问模式;⑸用户认证。确保每个用户被正确地识别, 既便于审计追踪, 也为了限制对特定的数据进行访问;⑹可获性。用户一般可以访问数据库以及所有被批准访问的数据。

1.2 安全分类

数据库安全可以分为系统安全和数据安全。

系统安全包括在系统级别上, 控制数据库的存取和使用的机制。系统安全机制检查用户是否被授权连接到数据库, 数据库审计是否是活动的, 用户可以执行哪些系统操作等。

数据安全包括在方案对象级别上, 控制数据库的存取和使用的机制, 如哪个用户可以存取指定的方案对象, 在方案对象上允许每个用户采取的操作, 每个方案对象的审计操作。

2 Oracle数据库安全策略

Oralce数据库系统至少具有以下一些安全策略:⑴保证数据库的存在安全, 确保数据库系统的安全首先要确保数据库系统的存在安全;⑵保证数据库的可用性, 数据库管理系统的可用性表现在两个方面:一是需要阻止发布某些非保护数据以防止敏感数据的泄露, 二是当两个用户同时请求同一记录是进行仲裁;⑶保障数据库系统的机密性, 主要包括用户身份认证、访问控制和可审计性等;⑷保障数据库的完整性, 数据库的完整性包括物理完整性、逻辑完整性和元素完整性。

2.1 系统安全策略

⑴数据库用户管理。数据库用户是存取数据库中信息的通道, 必须对数据库用户进行严格的安全管理。既可以由安全管理员作为唯一有权限创建、修改和删除数据库用户的用户, 也可以由多个有权限的管理员来管理数据库用户。

⑵用户验证。为了防止数据库用户未经授权访问, Oracle提供主机操作系统、网络服务和数据库验证等方法对数据库用户实施验证。一般情况下, 使用一种方法验证数据库中的所有用户, 但也允许在同一数据库实例中使用多种验证方法。

⑶操作系统安全。为运行Oracle和数据库应用程序的操作系统环境考虑安全:DBA必须有创建和删除文件的操作系统权限;通常的数据库用户不应该有创建和删除文件的操作系统权限;若操作系统识别用户的数据库角色, 则安全管理员必须拥有操作系统权限, 以修改系统账户和安全域。

2.2 数据安全策略

数据安全包括在对象级控制数据库访问和使用的机制, 它决定了哪个用户访问特定方案对象, 在对象上允许每个用户的特定类型操作, 也可以定义审计每个方案对象的操作。

为数据库中数据创建的安全等级决定数据安全策略。若要允许任何用户创建任何方案对象, 或将对象的存取权限授予系统中的其他用户, 数据库将缺乏安全保障。当希望仅有DBA或安全管理员有权限创建对象, 并向角色和用户授权对象的存取权限时, 必须完全控制数据安全。

2.3 用户安全策略

用户安全策略包括一般用户、最终用户、管理员、应用程序开发人员和应用程序管理员的安全策略。

⑴一般用户安全。对于一般用户安全, 主要考虑口令安全和权限管理问题;⑵最终用户安全;⑶管理员安全。由于SYSTEM和SYS用户拥有强大的权限, 在创建数据库后, 应该立即修改SYSTEM和SYS用户的口令;⑷应用程序开发人员安全;⑸应用程序管理员安全。

2.4 数据库管理者安全性策略

⑴保护作为sys和system用户的连接;⑵保护管理者与数据库的连接;⑶使用角色对管理者权限进行管理。

2.5 应用程序开发者的安全性策略

⑴应用程序开发者和他们的权限;⑵应用程序开发者的环境。程序开发者不应与终端用户竞争数据库资源;程序开发者不能损害数据库其他应用产品;⑶应用程序开发者的空间限制。作为数据库安全性管理者, 应该特别地为每个应用程序开发者设置以下的一些限制:开发者可以创建table或index的表空间;在每一个表空间中, 开发者所拥有的空间份额。

3 结束语

Oracle安全策略有着教高的可伸缩性以及安全性, 还有着多样的可扩展性以及可用性。进行数据库系统安全管理工作, 应坚持长期性、持久性。为了组建相对安全及稳定的数据库系统, 数据库管理者要通过技术方式进行严格管理, 做好防御, 更应增加防范意识。

参考文献

[1]巢子杰.数据库优化探究[J].软件导刊, 2010, 2.[1]巢子杰.数据库优化探究[J].软件导刊, 2010, 2.

oracle数据库总结 篇8

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

中图分类号: 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月.

oracle数据库总结 篇9

数据库安全问题一直是人们关注的焦点之一,我们知道一个企业或者机构的数据库如果遭到 的攻击,而这些数据库又保存着非常重要的数据,象银行、通信等数据库,后果将不堪设想。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数据库总结 篇10

本文的目的:

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数据库总结 篇11

关键词: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).

Oracle数据库的安全探究 篇12

在Oracle中, 最外层的安全性措施就是让用户标识自己的名字, 然后由系统进行审核。只有正确的用户标识和口令才能登录到数据库。

2 授权与检查机制

Oracle的权限包括系统权限和数据库对象权限两类, 采用非集中的授权机制, 即数据库管理员 (简称DBA) 负责授予与回收系统权限, 每个用户授予与回收自己创建的数据库对象的权限。Oracle允许重复授权, 即将某一权限多次授予统一用户。Oracle也允许无效回收, 即用户没有某种权限, 但回收此权限的操作仍算是成功的。

⑴系统权限。Oracle提供了80多种系统权限, 其中包括创建会话、创建表、创建视图、创建用户等。DBA在创建一个用户时需要将其中的一些权限授予该用户。

Oracle支持角色的概念。所谓角色就是一组系统权限的集合, 目的在于简化对权限的管理。Oracle除允许DBA定义角色意外, 还提供了预定义的角色, 如CONNECT, RESOURCE和DBA。

具有CONNECT角色的用户可以登录到数据库, 执行查询语句和操作。即可以执行ALTER TABLE, CREATE VIEW, CREATE IN DEX, GRANT, REVOKE, INSERT, SELECT, UPDATE, DELECT等操作。

具有RESOURCE角色的用户可以创建表, 即执行CREAT TABLE操作。创建表的用户将拥有对该表所有的权限。

DBA角色可以执行某些授权命令, 创建表, 对任何表的数据进行操纵。它包括了前面两种角色的操作, 还有一些管理操作, DBA角色拥有最高级别的权限。例如:DBA建立了一个USER_1用户以后, 欲将CONNECT角色所能执行的操作授予USER_1, 则可以通过下面这条语句实现:GRANT CONNECT TO USER_1;这样就更加简洁的实现了对用户的授权操作。

⑵数据库对象的权限。在Oracle中, 可以授权的数据库对象包括表、视图、序列、索引、函数等, 其中用得最多, 也是最重要的就是创建数据库基本表。对于基本表, Oracle支持三个级别的安全性:表级、行级和列级。

a.表级安全性。表的创建者或DBA可以把表级的权限授予其他用户, 表级的权限包括:

INSERT插入数据记录

ALTER修改表的定义

DELETE删除数据记录

INDEX在表上建立索引

SELECT查找表中的数据

UPDATE修改表中的数据

ALL包括以上所有的操作

表级的授权是使用GRANT和REVOKE语句来实现的。

b.行级安全性。Oracle行级的安全性由视图实现。用视图来定义表的水平子集, 限定用户在视图上的操作, 从而为表的行级提供保护。视图上的授权与回收和表级的授权与回收完全相同。例如:只允许用户USER_2查看STUDENT表中软件学院学生的数据, 则首先创建软件学院学生视图SOFT_STU, 然后将视图的SELECT权限授予USER_2用户。

c.列级安全性。Oracle列级的安全性可以像行级一样由视图实现, 实现方法和行级的相同, 也可以直接在基本表上定义。直接在基本表上定义和回收列级权限也是使用GRANT和REVOKE语句。Oracle把所有权限的信息记录在数据字典中。当用户进行数据库操作时, 数据库首先根据字典中的权限信息, 检查操作的合法性。在Oracle中, 安全性检查是任何数据库操作的第一步。

3 数据库的加密技术

DBMS除了通过访问控制机制对数据库中的敏感数据加强防护外, 还可以通过加密技术对库中的敏感数据加密。但加密虽然可以防止对数据的恶意访问, 也显著地降低数据库访问效率。对数据库的加密包括一些DES算法、RSA算法、AES算法等, 对于这些算法, 由于我对这方面的知识不是很扎实, 所以就不详加叙述了, 有兴趣的同学可以参考一些相关的数据或网站。

4 用户定义的安全性措施

除了系统级的安全性措施, Oracle还允许用户用数据库触发器定义特殊的更复杂的用户级安全性措施。例如:规定只能在工作时间内更新STUDENT表, 可以定义触发器, 其中sysdate为当前的系统时间:

CREATE OR REPLACE TRIGGER secure_STUDENT

BEFORE INSERT OR UPDATE OR DELETE ON STUDENT

BEGIN

IF (TO_CHAR (sysdate, ’DY’) IN (‘SAT’, ’SUN’)

OR (TO_NUMBER (sysdate, ’HH24’) NOT BETWEEN 8 AND17)

THEN

RAISE_APPLICATION_ERROR (-20506, ’you may only chang data during normal business hours)

END IF;

END;

触发器一经定义便存放在数据字典中。用户每次对STUDENT表执INSERT,

oracle数据库总结 篇13

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、验证密码正确性,

上一篇:二年级上册数学单元下一篇:社区居民文化生活调查报告