Oracle数据库(精选12篇)
Oracle数据库 篇1
0 引言
伴随着IT行业的迅速发展,IT系统中数据的安全性,已经是对企业运营产生了重大影响。而数据库的安全迁移也为IT系统的可持续运行和数据安全提供一道保护屏障。而且近年来频繁出现的自然灾害或者突发事件也让越来越多的人们意识到,原有的数据存储方式已经无法满足企业的需要。本文正是从数据库迁移的实际操作中总结整理而成。
1 oracle数据库文件构成
数据库是一种物理的存储结构,它是由多种物理文件组成的,在Oracle数据库系统中分为,核心文件和非核心文件两大类[1]。其中核心文件由数据文件,控制文件,日志文件,参数文件组成,非核心文件由密码文件,告警日志文件,各种跟踪文件组成。
控制文件:控制文件是一个二进制的文件,它描述了数据库当前的物理状态,记录了RMAN备份的元数据。控制文件包含有数据库的名称、数据库的创建信息、表空间的信息、数据文件的状态、日志文件的信息、备份的信息、检查点的信息等。
数据文件:,一个数据库中一定至少有一个数据文件(system01.dbf),如果一个数据库存在多个数据文件,应该分别把它们存放在不同的磁盘上,这样做不仅可以提高数据的存取速度,有利于提高数据库的性能,而且还能防止数据文件同时被损坏,实现高度容灾。
日志文件:数据库日志文件包括归档日志和非归档日志,记录了数据库的所有修改信息,归档日志会在数据库切换日志时,备份历史日志,日志记录的是数据库改变的信息、因此当数据库损坏时可以通过日志文件实现数据库的完全恢复、不完全恢复,而非归档日志不会备份历史日志,只能恢复到数据库最后一次备份时的状态[2]。
临时文件:创建数据库对象的时候指定的是使用表空间,一个表空间至少包含一个数据文件,临时文件是临时表空间对应的数据文件,并不是已用完就被删除的,而是指这个文件存储的对象是临时存在的对象。临时文件主要用于大量的排序的时候,如果不能在数据库的内存中做排序,就会把临时文件作为中转。
参数文件:参数文件是记录数据库系统配置的文件,每次数据库一启动,Oracle就会自动地从参数文件中读取系统参数的设置来配置并启动数据库。如内存的大小分配,此次启动可以打开的进程数和会话数等。
2 Oracle数据库迁移的迁移方案
oracle数据库状态分类:
nomount:此状态可以读取初始化参数文件,启动实例,可以进行数据库的创建。
mount:数据库维护状态,读取控制文件。
open:打开数据文件,日志文件,是数据库可以对全体用户提供服务了。
数据库物理迁移过程大体可分为以下四个步骤:
第一步:加载初始化文件
oracle启动后,数据库默认会读取一个二进制的初始化文件spfile<SID>.ora,可在系统启动时指定初始化文件的路径,如startup pfile="pfilesid.ora"nomount或者startup spfile="spfilesid.ora"nomount。初始化过程可根据系统错误提示内容,用pfile进行编辑处理,然后重新startup就可以了。
第二步:加载控制文件,保证在初始化文件中,控制文件的路径正确
在初始化文件中定义控制文件的位置,在确保控制文件路径正确的情况下,才能对控制文件进行加载,其命令是alter database mount。
第三步:加载数据库,包括重做日志文件
加载控制文件之后,执行命令alter database open对数据库进行开启,整个数据库启动过程完成了。
第四步:启动数据库成功之后,就说明迁移成功,可以观察数据是否丢失,然后启动监听和配置文件等。
3 Oracle数据库迁移具体实践
下面以把数据库从文件系统迁移到ASM磁盘组为例进行演示步骤:
首先,ASM是把多个磁盘组织为一个磁盘组,作为Oracle的逻辑卷管理器,利用ASM技术可以把数据均匀分布在这些磁盘上来解决从文件区到物理磁盘块的映射问题。这种设计除了定位文件区非常快速之外,还在增加或删除磁盘时有所帮助,因为文件区的位置不需要调整[3]。
把数据库从文件系统迁移到ASM磁盘组主要是把数据库的控制文件,数据文件和日志文件分别放在不同的磁盘组上,实现对这些文件的一个冗余放置,还简化了对数据文件的管理。
3.1 迁移数据库
①迁移数据库前先在RMAN下备份数据库,设置系统冗余度,并打开优化器和控制文件的自动备份功能
②创建迁移的控制文件存放的目录
③修改参数文件把控制文件的默认位置修改到ASM磁盘组上,然后用Pfile来生成spfile文件
SQL>create pfile from spfile;
④利用RMAN工具恢复控制文件,将数据库启动到mount状态;加载控制文件,如果出现错误,就说明控制文件所在的路径和参数文件路径不一致,要修改初始化参数,文件中控制文件的参数,然后重新加载。
SQL>shutdown immediate;
数据库已经关闭。
SQL>startup nomount;
ORACLE例程已经启动。
RMAN>restore controlfile from'/backup/ctl';
RMAN>alter database mount;
数据库已装载
⑤利用RMAN工具恢复数据库,执行下面的命令
⑥执行下面的命令重置日志组打开数据库
RMAN>alter database open resetlogs;
数据库已打开
3.2 输入下面的查询命令查看数据文件和控制文件是否已成功迁移到ASM磁盘组上
3.3 迁移临时表空间
①输入下面的命令重置临时表空间,先在ASM磁盘组上建立新的临时表空间,结果显示表空间已更改
表空间已更改。
②输入下面的查询命令查看表空间是否已创建
③输入下面的命令删除文件系统中就得临时表空间
表空间已更改。
④输入下面的命令查看表空间是否已成功删除
3.4 迁移redo日志
①输入下面的查询命令查看日志的状态,由查询结果可知第一组是当前日志
②输入下面的命令先往三组日志中各添加一个asm磁盘组上的成员,结果显示数据库已更改
数据库已更改。
数据库已更改。
数据库已更改
③删除非ASM磁盘组上的日志成员,执行完命令后结果显示数据库已更改,删除成功
SQL>alter database drop logfile group 2;
数据库已更改。
SQL>alter database drop logfile group 3;
数据库已更改。
④由查询结果可知第一组是当前日志所以需要切换一下当前日志才能继续删除,执行完命令后显示系统已更改
SQL>alter system switch logfile;
系统已更改。
⑤输入下面的查询命令查看当前日志是否已切换
⑥输入下面的命令删除非ASM磁盘组上的第一组日志组成员,结果显示系统已更改
数据库已更改。
⑦输入下面的命令查看日志组成员状态
⑧输入下面的查询命令查看日志组的物理位置,查看日志组是否已成功迁移到ASM磁盘组上
4 总结与展望
数据库管理技术是现今社会中信息科学与技术的重要组成部分,数据库迁移技术的研究保证了数据安全以及高效的存储[4][5]。在实际操作过程中,Oracle数据库基于Linux系统的迁移过程中会出现各种各样的情况,如果想要安全完整的迁移数据库,一定要先做好备份,然后反复的实验验证,最终才能保证数据库完整安全的迁移。
摘要:本文介绍了Oracle数据库基于Linux系统迁移的研究问题。在数据库领域一直处于领先地位的Oracle数据库以其良好的可移植性、可靠性和高效性,倍受各级用户的推崇和喜爱。随着Oracle数据库的不断更新和发展,其使用用户的群体也在不断的增加,因此对Oracle数据库的存储迁移技术的研究在国内外如雨后春笋般不断发展。
关键词:oracle,数据迁移,跨平台
参考文献
[1]张敏.数据库安全研究现状与展望[J].中国科学院院刊,2011.03.
[2]赵钦,周丹.政府办公自动化信息系统数据迁移解决方案[J].广西科学院学报,2008.24.
[3]段卫国,李俊春.Oracle数据库数据迁移技术研究[J].信息技术,2015.8.
[4]Kathy Rich.Oracle Data Pump,10g Release 2(10.2)[M].Oracle Database Utilities,2005.
[5]叶瑞绵,王晓华,丁慧莹.Oracle数据库跨版本的升级实现[J].中国数字医学,2016.5.
Oracle数据库 篇2
每周一次备份主数据库。如果你创建、修改或者停止一个数据库,添加新的sql server消息,添加或者停止连接服务器,或者添加记录设备,那就进行手工备份。
每天备份一次msdb数据库。它一般非常小,但很重要,因为它包含了所有的sql server工作、操作和计划任务。
只有当你修改它时,才有必要备份模型数据库。
用sql server agent来安排你的备份工作的时间表。
如果在你的生产(production)环境中有现成资源,备份生产数据库到本地磁盘或者网络服务器(用同一个开关)。然后,把备份文件/设备拷贝到磁带上。在存在许多硬件故障(特别是在raid系统中)的情况下,磁盘常常是完好的(inact)。如果备份文件是在磁盘上,那么恢复时的速度会提高很多。
备份开发和测试数据库至少要用到simple恢复模型。
除了有计划的定时备份外,在进行未记录的(nonlogged)批操作(如,批拷贝)、创建索引、或者改变恢复模型后要备份用户数据库。
如果你使用的是simple恢复模型,记住在截短(truncate)交易记录之后备份你的数据库。
用文档记录你的恢复步骤。至少要大概记录这些步骤,注意所有的重要文件的位置。
--------------------------------------------------------------------------------
在截短记录之前,也就是所有的已提交(committed)交易从记录中清空之前,所有的这些信息都保存在交易记录中。在simple恢复模型中,记录在一个checkpoint期间内截短(在sql server内存缓冲写道磁盘时),它是自动发生的,但也可以手动执行。这也就是simple恢复模型不支持时间点(point-in-time)恢复的原因。在full和bulk_logged恢复模型下,当交易记录被备份时,交易记录被截短,除非你明确指出不进行截短。
为了备份交易记录,使用backup log命令。其基本语法与backup命令非常相似:
backup log { database } to
下面是如何把交易记录备份到一个名为logbackupdevice的逻辑设备上的例子:
backup transaction northwind to logbackupdevice
如果你不希望截短交易记录,使用no_truncate选项,如下所示:
backup transaction northwind to logbackupdevice with no_truncate
只是基本知识。
Oracle数据库 篇3
关键词:Oracle;数据库;性能优化
中图分类号:TP311.138 文献标识码:A 文章编号:1006-8937(2015)15-0073-02
Oracle是一种大型的关系数据库,在多个行业中都得到较好的应用,并是一个重要的数据库平台。随着Oracle的不断应用,其规模也有所扩大,使用的人数不断增加,在这个过程中,Oracle数据库存在的问题也越来越明显。工作人员对这种数据库进行优化,让其能够在合理的条件下,更好的发挥作用,优化系统的使用性能,降低系统的支出,为数据库的推广奠定了良好的基础。
1 性能优化目标
1.1 缩短系统响应时间
该数据库的系统响应时间是指在SQL语句到数据库结果集时所用的时间。相关人员可以适当缩短这个时间,从而降低系统的服务时间,让人们的等待时间减短。该时间单位一般用ms表示,这种做法能够减小处理用户请求的时间,由此提高系统的利用效率。
1.2 提升吞吐量
数据库的吞吐量会受到SQL语句的影响,数据库能够完成的SQL语句数量越多,那么在单位时间内,该吞吐量越大。吞吐量=SQL语句数量/时间,其单位用TPS表示。相关人员要想提高数据库的吞吐量,可以增加单位时间处理SQL语句的数量。
1.3 提升数据库指标命中率
相关人员要制定数据库指标,例如缓冲区的命中率、软解析率等。在数据库工作中,最常用的指标是高速缓冲区命中率,这种指标主要是衡量Oracle数据库的性能,相关人员结合这种情况进行分析。
1.4 优化磁盘
Oracle数据库将数据存储在磁盘和内存中,这种过程与I/O操作有关,所以要合理规划磁盘,通过高速缓存技术,增加系统的吞吐量,从而在一定程度上缩短用户的响应时间,多使用系统内存,避免使用磁盘I/O进行操作。
1.5 合理的应用内存
在大量并发用户的影响下,如果Oracle数据库的存储量不够,会影响程序的处理效率。相关人员要尽量缩短数据库的响应时间,然后确保内存得到合理应用,判断最大回报和最小损失的标准,通过内存的有效使用,提高系统的性能。
1.6 减少磁盘的排序
如果用户提交的SQL语句中有排序或聚合函数,那么要保证这些排序可以在内存上进行,也可以在物理磁盘上。系统的物理磁盘有独特的结构,所以其读写速度比内存读写速度慢,所以相关人员要尽量减小物理操作。
2 影响因素分析
很多因素都会影响Oracle的性能,例如操作系统或CPU性能等,所以相关人员合理设置这些具体方面,降低其对数据库性能的影响。
①在操作系统上,Oracle数据库与系统的服务器运行有非常密切的联系,如果操作系统没有合理设置就会导致Oracle性能的降低。
②CPU占用过高:在系统运行中,CPU是非常关键的资源。如果该资源被占用,那么很可能导致整体数据库的停止运行。
③内存没有合理分配:Oracle性能会受到内存配置的影响,内存分配不合理会导致计算机减少系统的缓冲控制,操作系统频繁转换。
④I/O冲突:因为在系统运行中,磁盘在同一时间段只能满足一个进程的需求,所以当拥有多个进程,就会造成读写冲突,从而降低整个系统的运行速度。
⑤SQL常见错误:应用Oracle数据库,有大量的SQL语句,相关人员容易出现配置和数据迁移的错误。经过长时间的全表扫描,数据库没有得到合理的设置,I/O没有合理规划,SQL语句执行效率较差。
3 优化技术
3.1 数据库优化
应用Oracle数据库中,增加索引是最常见的调优方法,数据库对象是索引。相关人员应充分利用索引对系统中的扫描情况进行描述,通过查询索引能够节省大面积描述。在设置索引内容时,要重视SQL语句的使用,具体情况要结合查询条件。相关人员要比对直接全表的检索情况,然后通过相关数据对I/O进行分析。
工作人员可以完善数据库的数据,掌握这个逻辑关系,能够在数据库使用时,让代码和其他信息分离,这种做法能够有效降低网络的传输量,并提高数据情况的执行能力。相关人员在进行数据存储的过程中,用户可以发出执行命令,并提交SQL语句,从而节省对该语句的分析,充分使用SQL共享池的优势。
3.2 内存优化
Oracle数据库的信息主要存储在内存和磁盘上,从实际应用来看,内存的访问量比较大,明显高于磁盘的访问量。但是这种情况会降低数据库的响应时间,减慢其运行速度,所以相关人员要设置合适的内存尺寸,确保数据库性能得到更好的提升。
例如,相关人员要优化数据缓冲区的高速缓存性能,从而降低系统磁盘中的I/O数据,通过适当对缓冲区尺寸进行调整,能够让缓冲区找到需要的数据,从而对数据库的性能进行优化,减小用户的等待时间和缓冲时间。相关单位可以通过减小全表扫描的方式,得到优化数据库性能的目的。相关人员可以用索引的方式,降低全表扫描的次数,应用全表扫描的次数越少,系统的缓冲命中率越高。
提高共享池性能,能够较快的提高数据库性能。共享池是存放近期使用SQL语句的地方,共享池内的数据字典数据比缓冲区的内存停留时间更长,拥有更好的命中率。所以可以优先度缓冲区进行调整,相关人员可以根据实际情况对每个节点的共享池大小进行记录和分析,从而有利于下一步调整。利用代码重新书写能够快速提高共享池的命中率。针对比较大的对象,例如自定义的程度等,相关人员需要应用共享池,进行有效的解析。相关人员要将重要的对象保存在内存中,这样就能够提高共享池的性能。
3.3 磁盘优化
应用Oracle数据库使用对象产生I/O的机会较多,所以相关人员要将访问量较大的数据文件放置在磁盘中,不同的对象要尽量分开放置,从而为索引创造有利条件。相关人员要注意内存中修改过的数据并不是写入到数据文件中,所以要优先将其写入到日志文件中,并保持其容量。在这个过程中,相关人员应减少对不同对象对磁盘的竞争,合理将日志文件进行分组,一组写满后再换到下一组,这个过程要循环进行。在数据库中,要创建回滚段和其专用的表空间,其中从系统操作失败后得到的恢复数据是回滚段,所以应尽量减小I/O进程之间的竞争,并确保空间竞争能够有效完成。
3.4 SQL优化
SQL语句的执行效率会影响Oracle数据库的性能,所以优化SQL语句能够直接提高Oracle系统执行效率。执行SQL会消耗数据库系统70%-85%的资源,所以合理设计SQL语句非常重要,从而提高系统的利用效率,优秀的SQL语句,能够加快执行的速率,降低网络传输的频率,从而充分发挥数据库的性能。
4 结 语
通过上文对Oracle数据库性能优化研究,可以得出,Oracle数据库规模的增大和用户的增加,该数据库中隐藏的问题会逐渐暴露出来,所以相关人员要对数据库的性能进行优化,并不断调整数据库的各个方面。在这个过程中,要充分掌握数据库系统的性能影响因素,然后针对这些因素,进行合理优化,采用先进的技术调试数据库,从而使系统性能更加优化,为用户提供更多便利。
参考文献:
[1] 郭霞.基于Oracle数据库性能优化技术研究[J].电脑知识与技术,2011,(24).
[2] 魏亚楠,宋义秋.oracle数据库应用系统的性能优化[J].制造业自动化,2010,(8).
[3] 戴伟敏.Oracle数据库系统性能优化与调整[J].赤峰学院学报(自然科学版),2010,(12).
Oracle数据库安全策略 篇4
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数据库的部分试题 篇5
1怎样查看数据库引擎的报错
解答:alert log.
2比较truncate和delete 命令
解答:两者都可以用来删除表中所有的记录,区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.
3使用索引的理由
解答:快速访问表中的data block
4. 给出在STAR SCHEMA中的两种表及它们分别含有的数据
解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的信息
10. FACT Table上需要建立何种索引?
Oracle数据库 篇6
关键词:信息系统;Oracle数据库;性能优化
中图分类号:TP392
从我国实况来看信息系统还存在各种不足,比如怎样充分发挥计算机系统资源,怎样确保用户的服务质量及响应速度等。因此,研究优化Oracle数据库的性能具有适用价值。
1 信息系统Oracle数据库性能优化
笔者就从Oracle数据库系统中选择I/O、内存、SQL语句以及网络性能方面入手,分析这些组成部分在运行中性能发送的一些问题,并且针对这些问题提出合理的优化措施。
1.1 对内存进行优化
优化内存比较常用方法就是调整系统的全局区(SGA)。具体操作就是调整内存中各种组件,包含JAVA池、缓冲区高速缓存等,对内存结构进行调整时需要加大SGA大小,但是必须要确保SGAS长度一定在实际所用内存范围之中。
1.2 调整共享池
共享池主要有两个部分组成,即高速缓存和数据字典缓存。其参数就确定了共享池的大小。而在高速缓存模块中又是由SQL语句文本,执行计划以及PL/SQL块、JAVA类共同组成。将“select namespace,gethitratio from v$librarycache”输送到执行栏目中,就能够从数据库中获取到缓存的统计信息。在该执行语句中gethitratio主要是实现查询对象的句柄标识名字和次数之间比率。在该数据库中,如果该比率低于了95%,就要进行调整。其查询语句是“select sum(pins-reloads)/sum(pins)*100 from v$librarycache”,通过执行该局于就可以得到高速缓存命中率。数据字典的缓存就是把数据字典中所含的各种信息存储进去。SQL语句查询对象信息时是通过数据字典进行高速存取,降低了不缓存之时从数据字典中查询的次数,通过这种查询方式就能够提升其性能。而且对v$rowcache动态性能视图进行查询,可以得到数据字典中缓存相关信息,输入执行语句“select(sum(gets-getmisses))/sum(gets) from v$rowcache”,通过执行后就可以得到数据字典中的缓存命中率。一旦最终结果值低于85%,必然要增大共享池容量才可以。
1.3 调整缓冲区的高速缓存
在SGA中,高速缓存是重要的组件之一,在执行保持之时高速缓存区就是负责对磁盘中相关数据进行读取、拷贝,保持服务器就能够对所有拷贝块进行共享。假如该服务器要得到数据块,就会先到高速缓存之中去查询所需数据,如果需要的数据在这个缓冲区之中,那么该进程就可以从高速缓冲区之中直接读取所需数据,如果数据并未在这个高速缓存之中,必然会从磁盘中相关数据文件进行读取,同时还将所读取数据存储进高速缓存之中,之后这些存储的数据就能够被服务器的进程使用。因此要尽可能让进程读取缓冲区的高速缓存中数据,并且经过相关的查询语句就可以执行,还能够通过查询得到使用高速缓存各种情况。
1.4 调整重做日志缓冲区
重做日志的缓冲区,也就要在内存中对高速缓存进行重做。一般情况下,该缓冲区的容量有1MB就可以的。但是该缓冲区一旦占据的空间三分之一,就会发出“rollback”和“commit”的命令,或者将DBWn进程写进到LGWR之中,通过这种方式就可以重做日志的缓冲区,将磁盘中重新写入内容。如果要想恢复数据库,必须要通过重做日志的缓冲区之中各种项目,这一种操作非常重要。要查询重做日志缓冲区中效率,输入相关的查询语句就能够查询结果,最终查询结果值只有接近0才正常,假如这个值不断的增大,就要适当增大log_buffer大小。
1.5 优化I/O
事实上,影响Oracle数据库性能一种主要原因就是磁盘I/O,一旦解决好了I/O,就能够有效提升数据库性能,配置数据库性能准则即为尽可能的降低磁盘I/O及平衡多个磁盘的驱动器,并且还要尽可能使用本地管理的空间,对动态视图进行查询就可以得到数据文件中的I/O 性能。在平衡I/O,能够采用的策略主要有如下几种:
(1)把访问次数比较多的数据文件促进独立的磁盘上。
(2)给用户数据创建出单独的表空间,并且把这个表空间单独放到system表中。
(3)有几个数据文件存在于同样表空间之中,就要存放到不同的磁盘之中。
(4)索引应该处于独立表空间中,还应该把索引以及表的数据存放至不同磁盘之中。
(5)构建出临时的表空间,用来实现排序操作,这样就能够有效阻止数据库中碎片进入表空间中,同时创建独立表空间给回滚段。
(6)尽可能做大日志文件,避免切换日志过于频繁;同时重做日志文件不要和数据库文件放进同一个磁盘中,降低磁盘之间的竞争。
1.6 优化CPU
当数据库中的I/O操作到了最低的程度,同时也分配了足够的内存,但是应用软件依然遭到CPU约束。优化CPU目标就要让CPU尽可能滿足用户所需,同时尽可能减小等待以及额外的开销影响到CPU,并且服务器能不能够正常的工作直接关系着CPU,当工作高峰CPU使用率处于90%标识着服务器具有良好工作状态。但是假如空闲之时CPU的使用率超过了90%,说明服务器中的CPU资源不足。如果出于工作的高峰,CPU的使用率依然比较低,这就说明服务器中的CPU资源比较充足。
在运行中,管理数据库人员只要查询数据字典中相关统计项,就可以查询Oracle 数据库使用CPU所占据时间,同时将相关查询语句输入到执行程序中,就可以获取到该操作系统使用了CPU所占据的时间,当然操作系统使用时间也就是用户态+系统态的时间总和。数据库占据了时间超过了总时间90%,这就说明服务器之中CPU几乎都让Oracle数据库占据了,表明运行良好;如果其他各种程序将CPU资源全部占有,Oracle数据库必然无法活儿更多的CPU资源及时间。查询v$sesstat数据字典就能够知道目前所连接的Oracle 数据库中每一个回话所占用CPU时间,就能够知道会话所占用服务器CPU的时间情况,以及导致CPU资源缺乏根源,事实上重解析SQL语句,锁冲突等均可能造成CPU资源严重不足。管理人员将相关查询语句输入,该语句能够查询解析SQL语句的情况,执行语句中的parse time cpu就表示出系统所用时间,执行语句中的parse time elapsed为响应时间,而用户等待的时间采用公式可获取。而且从该公式之中还能够得到解析SQL语句中平均等待的时间,如果这个平均值靠近0,就表明系统正常,一旦等待解析的平均时间较长,就要从中查询解析效率比较低,应该优化相关的语句,同时还应该改变Oracle中的参数,通过参数来增加高速缓存的光标数值。当然,数据库的管理人员还能够采取查询语言(select buffer_gets, executions, sql_textfrom v$sqlarea),而且该查询语句还能够对低效率的SQL语句进行查询,对该语句进行优化同样能够提升CPU利用效率。
1.7 优化网络性能
数据库的应用不断增加,自然网络这个承载数据库服务器的平台至关重要,直接影响着用户发送数据。因此,调整网络性能也是必然趋势,而优化网络就需要尽可能降低网络中数据流量,从而降低了网络资源的使用。
1.7.1 Oracle 网络协议
Oracle数据库比较常用的网络协议为SQL*Net或者Net 8,该协议处于七层开放式的回话层中,将透明连通性提供给Oracle服务器与客户端。透明连通性就是通过接口层SQL*Net/Net 8接收来自Oracle应用的SQL语句。而且按照相关的标准格式打成包,同时把该包传送至数据库。SQL*Net/Net 8主要是用来负责构建及维护客户和服务器间的网络会话。
1.7.2 检测网络性能的方法。数据通过了网络程序之后必然会出现延迟,因此就需要优化其性能,才能够有效保障网络的吞吐量,才能够降低网络的流量。从使用现状分析可知,要想非常精确的确定出网络的延迟十分困难。但是在Oracle数据库中设计了三个动态性能表,这些表就能够用来测量出网络延迟,这些表分别是v$session_event,v$session_wait与v$sesstat。
(1)v$session_even,该操作主要是操作时Oracle的等待时间,该值就可以多网络效率进行有效评估。
(2)v$session_event;将目前正在运行的会话(等待事件)全部列出来,所谓等待事件就是说明共享或者前台进程中正处于等待的消息。只要存在等待事件,一定要查询等待事件是不是被Oracle接收或者被客户端发送,而且还能够查该表是不是意外被中止,只要客户端发出消息就能够确定出Oracle是否已经作出回应或者依然在等待。
(3)通过v$sesstat查看已经接收或者发送到客户端的字节数,还能够查询到客户端传递过来的请求数目。
2 结束语
笔者依据自身经验,做了如上Oracle数据库相关优化探讨。但是该分析属于一项比较复杂工作,涉及到多个方面,不但要具备扎实数据库技术,还要非常熟悉操作系统、硬件设备以及机器结构等各个方面。笔者全面了解了Oracle体系结构,并且探讨了对该体系结构的优化,包含了优化I/O、优化内存等等,从而更确保了房产信息系统的实时监控。
参考文献:
[1]翟岩龙,宿红毅,战守义.数据库性能监控体系的研究与应用[J].计算机科学,2009(11).
[2]王娜,宿红毅,白琳等.数据库性能监控分析系统的设计与实现[J].计算机工程,2010(24).
[3]滕永昌.Oracle10g数据库管理系统[M].北京:机械工业出版社,2012.
[4]杨华千,刘勇国,杨德刚,廖晓峰.Oracle的存儲体系结构及其对象空间分配研究[J].计算机科学,2013(09).
作者简介:冯育栋(1982.09-),男,江苏靖江人,科员,本科,研究方向:信息系统管理维护。
Oracle数据库优化研究 篇7
Oracle数据库是一个功能极其强大的数据库系统。它起始于七十年代末的关系型数据库技术。Oracle数据库的关键是怎样理解数据间的关系, 然后构造反映这些关系的信息库。1984年Oracle成功地将关系型数据库转移到桌面计算机上, Oracles提供了一个完整的客户/服务器体系结构的商用DBMS。利用SQL.NET软件层, 与多种操作系统支持通信协议配合, 为Oracle数据库提供分布式环境, 可以实现多点查询。Oracle数据库发布了革命式的行锁定模式, 提高了事务的处理速度, 使关系型数据库应用进入了一个全新的天地。
1992年推出的Oracle7数据库采用了自协调的多线索服务器体系结构, 动态调整高速数据库服务器进程的个数。这都为构造产业化的以及企业类的应用提供了技术支持。1997年, Oracle8数据库推出。Oracle8数据库不仅允许用户以处理关系数据的方式来梳理对象数据, 也可同样处理关系数据。因此, Oracle8数据库是一个紧密集成的对象关系数据库管理系统方案, 对象技术和关系型数据库的结合, 使用户现有Oracle7数据库应用软件无需移植, 便可在Oracle8数据库上使用, Oracle数据库发展到现在的Oracle10g, 它是第一款为网格计算而设计的数据库, 集成了Oracle数据库管理技术的各种优势, 又融入了网格计算的各种新的性能特点。
Oracle数据库系统的特点是支持大数据库、多用户的高性能事务处理, Oracle数据库具有良好的硬件环境独立性, 支持各种类型的大型、中型、小型和微机系统。Oracle数据库遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准, 有着更好的安全性和完整控制, 并且Oracle数据库允许将处理分为数据库服务器和客户应用程序处理, 所有共享的数据管理由具有数据库管理系统的计算机处理, 而运行数据应用的工作站侧重于解释和显示数据。
2 数据库最优灵活体系结构OFA
OFA (Optimal Flexible Architecture) 是提高Oracle数据库逻辑配置和性能的一种优化结构, 使用这种结构进行设计会简化物理设计中的数据管理, 可以高效自由地分布逻辑数据对象。数据库逻辑设计要遵循: (1) 同样方式使用的段类型存储在一起; (2) 按照标准使用来设计系统; (3) 存在用于例外的分离区域; (4) 最小化表空间冲突; (5) 将数据字典分离。
3 系统级优化
Oracle数据库从物理结构上看, 是安装在硬件服务器上的由一个个文件组成的软件系统, 要确保其高效运行必须有充足的服务器资源来支撑。影响系统性能的主要问题有以下几个方面: (1) 现有系统自身存在的缺陷或不足; (2) CPU不足; (3) 内存不足; (4) I/O不足; (5) 网络约束; (6) 软件约束。在对数据库进行优化之前, 应该根据实际应用需求来配置服务器硬件, 选取合适的CPU型号及个数、存储容量大小等, 优化网络环境, 完善操作系统软件配置, 为Oracle数据库提供良好的运行环境。
4 数据库级优化
4.1 数据库设计开发阶段
(1) 优化应用程序结构设计:在数据库系统设计阶段对其逻辑结构和物理结构进行优化设计, 系统性能可以达到最佳, 系统开销最小。因为不同的应用程序体系结构所要求的数据库资源是不同的, 要根据软件需求, 确定应用程序采用的体系结构, 是B/S、C/S还是其他体系结构。优化应用程序结构, 设置合理的数据库访问模式, 能极大提高数据库效率。 (2) 编写优质SQL语句:良好的SQL语句可以被数据库重复使用而减少分析时间, 充分利用了SQL语言和Oracle特性的应用程序处理速度较快, 效率较高。在进行数据库操作时, 选取合适的SQL代码, 能使程序更加明了, 运行速度也更快。 (3) 优化磁盘I/O:对于数据库系统来说, 磁盘I/O操作是数据库性能最重要的方面。减少磁盘I/O操作的最根本方法就是利用高速缓存存放频繁使用的数据信息, 恰当使用索引和Oracle分区技术能有效节约服务器查找时间, 减少磁盘操作。 (4) 参数优化:数据块的大小在数据库创建后不能改变, 因此在设计阶段必须确定合适的数据块大小和存储参数。一般来讲, 我们通常根据样例数据来确定数据块大小, 而根据业务量和未来数据库发展趋势确定存储参数。
Oracle数据库参数介绍: (1) LICENSE-MAX-SESSION。该参数指出允许并发用户会话的最大数。若此参数为0, 则不能实施并发。若并发的用户会话数已达到此极限, 则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。 (2) CHECKPOINT-PROCESS。该参数根据是否要求检查点而设置成TRUE或者FALSE。当所有缓冲区的信息写到磁盘时, 检查点进程 (CHPT) 建立一个静态的点。在归档日志文件中做一个记号表示有一个检查点发生。检查点发生在归档日志转换的时候或当达到LOG-CHECKPOINT-INTERVAL定义的块数的时候。当设置此参数为TRUE时, 后台进程CHPT便可工作。在检查点期间内, 若日志写进程的性能减低, 则可用CHPT进程加以改善。 (3) DB-BLOCK-SIZE。该参数表示Oracle数据库块的大小, 以字节为单位, 典型值为2048或4096。该值一旦设定则不能改变。它影响表及索引的FREELISTS参数的最大值。 (4) OPTIMIZRER-MODE。若该参数的值为RULE, 则ORACLE优化器选择基于规则的优化;若设置为COST, 并且在数据字典中存在有统计信息, 则优化器选择基于代价的优化方法进行优化。
4.2 数据库运行阶段
(1) SGA。在不影响应用系统的前提下, SGA应尽可能大, 通过合理设置SHARED-POOL-SIZE和DB-BLOCK-BUFFER的值来掌握好SGA的大小。如果服务器内存为1G, 那能够分配给SGA的内存大约是四五百兆, 通常我们习惯于通过直观的公式化来表达这样的问题:SGA+并发执行进程数* (sort-area-size+hash-ara-size+2M) +OS使用内存<总内存*70%。 (2) 共享池。共享池用于缓存最近被执行的SQL语句和最近被使用的数据定义, 主要包括库高速缓冲区和数据字典缓冲区。配置共享池的关键是看应该更改SHARED-POOL-SIZE还是应该使用保留池、大型池或Java池。通过查询库高速缓冲和数据字典缓冲的命中率, 可以衡量共享池的效率。 (3) 数据库缓冲区。数据库缓冲区是SGA中最大的区, 其大小设置是否合理直接跟应用系统的性能相关。通过测试我们得出结论:数据高速缓冲区的命中率最佳应保持在90%以上, 当该值低于80%时服务器性能就会下降, 而低于50%时则会严重影响服务器性能。 (4) 重做日志缓冲区。重做日志缓冲区的内存需求与数据库事务处理的数量和大小有关。重做日志缓冲池通常小于2M, 过大的重做日志将减少日志文件的I/O操作, 过小的重做日志缓冲区将会使日志写入过程过分繁忙。日志缓冲区的大小由LOG-BUFFER决定, 必须是DB-BLOCK-SIZE的整数倍。如果失败率大于1%, 则必须增大LOG-BUFF-ER的大小。
5 结束语
Oracle提供了丰富的选择环境, 可以从Oracle数据库的体系结构、软件结构、模式对象以及具体的业务和技术实现出发统筹考虑, 提高系统性能需要一种系统的整体方法, 在对数据库进行优化时, 需要对应用程序、系统和I/O子系统进行相应的优化, 有目的地调整一个或多个组件, 使系统满足一个或多个目标的过程。对于ORACLE来说, 优化是进行有目的调整组件级, 即增加吞吐量, 减少响应时间。综合考虑优化方案, Oracle应用按最优的方式来存取数据, 确保数据库的安全、稳定可靠。
参考文献
[1]魏亚楠, 宋义秋.Oracle数据库应用系统的性能优化[J].制造业自动化.2010.
浅析Oracle数据库应用 篇8
在计算机技术中, Oracle数据库是一个功能极其强大的数据库系统。它起始于七十年代末的关系型数据库技术。Oracle数据库的关键是怎样理解数据间的关系, 然后构造反映这些关系的信息库。1984年Oracle成功地将关系型数据库转移到桌面计算机上, Oracles提供了一个完整的客户/服务器体系结构的商用DBMS。利用SQL.NET软件层, 与多种操作系统支持通信协议配合, 为Oracle数据库提供分布式环境, 可以实现多点查询。Oracle数据库发布了革命式的行锁定模式, 提高了事务的处理速度, 使关系型数据库应用进入了一个全新的天地。
1992年推出的Oracle7数据库采用了自协调的多线索服务器体系结构, 动态调整高速数据库服务器进程的个数。这都为构造产业化的以及企业类的应用提供了技术支持。1997年, Oracle8数据库推出。Oracle8数据库不仅允许用户以处理关系数据的方式来梳理对象数据, 也可同样处理关系数据。因此, O-racle8数据库是一个紧密集成的对象关系数据库管理系统方案, 对象技术和关系型数据库的结合, 使用户现有Oracle7数据库应用软件无需移植, 便可在Oracle8数据库上使用, Oracle数据库发展到现在的Oracle 10g, 它是第一款为网格计算而设计的数据库, 集成了Oracle数据库管理技术的各种优势, 又融入了网格计算的各种新的性能特点。
Oracle数据库系统的特点是支持大数据库、多用户的高性能事务处理, Oracle数据库具有良好的硬件环境独立性, 支持各种类型的大型、中型、小型和微机系统。Oracle数据库遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准, 有着更好的安全性和完整控制, 并且Oracle数据库允许将处理分为数据库服务器和客户应用程序处理, 所有共享的数据管理由具有数据库管理系统的计算机处理, 而运行数据应用的工作站侧重于解释和显示数据。
2 数据库最优灵活体系结构OFA
OFA (Optimal Flexible Architecture) 是提高Oracle数据库逻辑配置和性能的一种优化结构, 使用这种结构进行设计会简化物理设计中的数据管理, 可以高效自由地分布逻辑数据对象。数据库逻辑设计要遵循: (1) 同样方式使用的段类型存储在一起; (2) 按照标准使用来设计系统; (3) 存在用于例外的分离区域; (4) 最小化表空间冲突; (5) 将数据字典分离。
3 系统级优化
Oracle数据库从物理结构上看, 是安装在硬件服务器上的由一个个文件组成的软件系统, 要确保其高效运行必须有充足的服务器资源来支撑。影响系统性能的主要问题有以下几个方面: (1) 现有系统自身存在的缺陷或不足; (2) CPU不足; (3) 内存不足; (4) I/O不足; (5) 网络约束; (6) 软件约束。在对数据库进行优化之前, 应该根据实际应用需求来配置服务器硬件, 选取合适的CPU型号及个数、存储容量大小等, 优化网络环境, 完善操作系统软件配置, 为Oracle数据库提供良好的运行环境。
4 数据库级优化
4.1 数据库设计开发阶段。
(1) 优化应用程序结构设计:在数据库系统设计阶段对其逻辑结构和物理结构进行优化设计, 系统性能可以达到最佳, 系统开销最小。因为不同的应用程序体系结构所要求的数据库资源是不同的, 要根据软件需求, 确定应用程序采用的体系结构, 是B/S、C/S还是其他体系结构。优化应用程序结构, 设置合理的数据库访问模式, 能极大提高数据库效率。 (2) 编写优质SQL语句:良好的SQL语句可以被数据库重复使用而减少分析时间, 充分利用了SQL语言和Oracle特性的应用程序处理速度较快, 效率较高。在进行数据库操作时, 选取合适的SQL代码, 能使程序更加明了, 运行速度也更快。 (3) 优化磁盘I/O:对于数据库系统来说, 磁盘I/O操作是数据库性能最重要的方面。减少磁盘I/O操作的最根本方法就是利用高速缓存存放频繁使用的数据信息, 恰当使用索引和Oracle分区技术能有效节约服务器查找时间, 减少磁盘操作。 (4) 参数优化:数据块的大小在数据库创建后不能改变, 因此在设计阶段必须确定合适的数据块大小和存储参数。一般来讲, 我们通常根据样例数据来确定数据块大小, 而根据业务量和未来数据库发展趋势确定存储参数。
Oracle数据库参数介绍: (1) LICENSE-MAX-SESSION。该参数指出允许并发用户会话的最大数。若此参数为0, 则不能实施并发。若并发的用户会话数已达到此极限, 则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。 (2) CHECKPOINT-PRO-CESS。该参数根据是否要求检查点而设置成TRUE或者FALSE。当所有缓冲区的信息写到磁盘时, 检查点进程 (CHPT) 建立一个静态的点。在归档日志文件中做一个记号表示有一个检查点发生。检查点发生在归档日志转换的时候或当达到LOG-CHECKPOINT-IN-TERVAL定义的块数的时候。当设置此参数为TRUE时, 后台进程CHPT便可工作。在检查点期间内, 若日志写进程的性能减低, 则可用CHPT进程加以改善。 (3) DB-BLOCK-SIZE。该参数表示Oracle数据库块的大小, 以字节为单位, 典型值为2048或4096。该值一旦设定则不能改变。它影响表及索引的FREELISTS参数的最大值。 (4) OPTIMIZRER-MODE。若该参数的值为RULE, 则ORACLE优化器选择基于规则的优化;若设置为COST, 并且在数据字典中存在有统计信息, 则优化器选择基于代价的优化方法进行优化。
4.2 数据库运行阶段。
(1) SGA。在不影响应用系统的前提下, SGA应尽可能大, 通过合理设置SHARED-POOL-SIZE和DB-BLOCK-BUFFER的值来掌握好SGA的大小。如果服务器内存为1G, 那能够分配给SGA的内存大约是四五百兆, 通常我们习惯于通过直观的公式化来表达这样的问题:SGA+并发执行进程数* (sort-area-size+hashara-size+2M) +OS使用内存<总内存*70%。 (2) 共享池。共享池用于缓存最近被执行的SQL语句和最近被使用的数据定义, 主要包括库高速缓冲区和数据字典缓冲区。配置共享池的关键是看应该更改SHARED-POOL-SIZE还是应该使用保留池、大型池或Java池。通过查询库高速缓冲和数据字典缓冲的命中率, 可以衡量共享池的效率。 (3) 数据库缓冲区。数据库缓冲区是SGA中最大的区, 其大小设置是否合理直接跟应用系统的性能相关。通过测试我们得出结论:数据高速缓冲区的命中率最佳应保持在90%以上, 当该值低于80%时服务器性能就会下降, 而低于50%时则会严重影响服务器性能。 (4) 重做日志缓冲区。重做日志缓冲区的内存需求与数据库事务处理的数量和大小有关。重做日志缓冲池通常小于2M, 过大的重做日志将减少日志文件的I/O操作, 过小的重做日志缓冲区将会使日志写入过程过分繁忙。日志缓冲区的大小由LOG-BUFFER决定, 必须是DB-BLOCK-SIZE的整数倍。如果失败率大于1%, 则必须增大LOG-BUFF-ER的大小。
5 结束语
Oracle提供了丰富的选择环境, 可以从Oracle数据库的体系结构、软件结构、模式对象以及具体的业务和技术实现出发统筹考虑, 提高系统性能需要一种系统的整体方法, 在对数据库进行优化时, 需要对应用程序、系统和I/O子系统进行相应的优化, 有目的地调整一个或多个组件, 使系统满足一个或多个目标的过程。对于ORACLE来说, 优化是进行有目的调整组件级, 即增加吞吐量, 减少响应时间。综合考虑优化方案, Oracle应用按最优的方式来存取数据, 确保数据库的安全、稳定可靠。
摘要:在计算机技术中, Oracle数据库系统的优化对于整个系统的正常运行起着至关重要的作用, 但是它却是一项非常复杂的工作。Oracle数据库性能调整与优化涉及到多个层面, 并且可以提高Oracle数据库的稳定和可靠程度, 保障系统高效地运行, 解决系统瓶颈, 节约系统开销, 具有良好的应用价值。
关键词:数据库,Oracle,概述,优化,研究
参考文献
[1]魏亚楠, 宋义秋.Oracle数据库应用系统的性能优化[J].制造业自动化.2010.
浅谈Oracle数据库性能优化 篇9
Oracle数据库是现在使用最广泛的大型数据库之一, 选用Oracle作为数据库的应用系统一般规模比较大, 需要处理的用户数目较多, 对于这样的数据库系统来说, 效率是最重要的指标之一, 在实际应用中, 随着系统数据库中数据的增加, 访问量的加大, 数据库系统性能将会下降, 数据库的优化逐渐突显出其重要作用。
二、优化策略
Oracle数据库的性能优化, 可以从数据库的体系结构、软件结构、模式对象以及具体的业务和技术实现出发, 进行统筹考虑。优化是有目的地更改系统的一个或多个组件, 使其满足一个或多个目标的过程。下面从几个不同方面介绍Oracle数据库优化设计方案。
1 oracle内存优化
内存是Oracle数据库体系结构中最为重要的部分之一, 也是影响数据库性能的第一个因素。Oracle的内存可以按照共享和私有的角度分为系统全局区和进程全局区, 也就是SGA和PGA, 优化内存结构通常是对系统全局区 (SGA) 进行调整, SGA是Oracle数据库的心脏, 用户的进程对这个内存区发送事务, 并且以这里作为高速缓存读取命中的数据, 以实现加速的目的。正确的SGA大小对数据库的性能至关重要, 对于PGA我们通常采用PGA的自动调整。内存优化主要包括以下几个部分:
(1) 优化SQL共享池
设置共享池的目的为了缓存已经被解析过的SQL, 而使其能被重用, 不再解析。通过确保大多数语句能够在共享池中查找到它们自己的一个已分析版本, 就可以提高语句分析和执行的效率, 降低资源消耗。共享池中存放的信息是应用程序需要经常访问的, 因此需要保持这些信息的高命中率。共享池大小是否合适, 主要体现在库缓冲区和数据字典高速缓冲区的命中率上。
(2) 优化缓冲区高速缓存
缓冲区高速缓存的命中率, 对性能至关重要。缓冲区高速缓存越大, Oracle可装入内存的数据就越多, 磁盘的I/O就越少, 系统性能就越好。
(3) 调整重做日志缓冲区
重做日志缓冲区如果分配太小, 会导致没有足够的空间来放重做条目而等待, LGWR进程会频繁将LOG_BUFFER中的数据写入磁盘增加I/O的次数, 影响系统性能。
(4) PGA的自动调整
为实现自动的PGA管理, Oracle要修改的初始化参数:
(1) PGA_AGGREGATE_TARGET, 此参数用来指定所有SESSION总计可以使用最大PGA内存。
(2) WORKAREA_SIZE_POLICY, 此参数用于开关PGA内存自动管理功能, 该参数有两个选项:AUTO和MANU-AL, 当设置为AUTO时, 数据库使用Oracle提供的自动PGA管理功能, 当设置为MANUAL时, 则仍然使用以前手工管理的方式。
通过使用Oracle所提供的自动管理PGA的特性, Oracle会自动忽略*_AREA_SIZE等初始化参数, 自动调整SQL内存区, 每个查询被分配的内存都基于它的具体要求。因此, 在启动工作区自动管理, 并对PGA_AGGRE-GATE_TARGET参数进行适当的设置后, 不需要对HASH_AREA_SIZE, SORT_AREA_SIZE等参数进行设置。
另外, 内存调整还包括对大池、JA-VA池等的优化, 在这里没有论述, 经常需要调整的是上面几种内存结构。
2 优化磁盘I/O
对于数据库系统来说, 磁盘I/O操作是数据库性能最重要的方面, 影响磁盘I/O性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理。减少磁盘I/O操作的最根本的方法就是利用高速缓存存放频繁使用的数据信息, 最小化磁盘I/O, 降低Oracle服务器查找和返回行所花费时间的最有效的方法之一就是利用索引、分区。
(1) 索引Index的优化设计
索引是数据库中重要的数据结构, 是优化的基础, 索引把表中的逻辑值映射到Row ID, 因此索引能进行快速定位数据的物理地址。索引必须充分利用才能加快数据库访问速度, 建立索引根本目的是提高查询效率, 利用索引行记录定位, 减少磁盘的读写次数, 从而达到提高查询速度的目的。一个建有合理索引的数据库应用系统可能比一个没有建立索引的数据库应用系统效率高几十倍, 但并不是索引越多越好, 在那些经常需要修改的数据列上建立索引, 将导致索引B*树的不断重组, 造成系统性能的下降和存储空间的浪费, 对于索引的使用, 要注意以下原则:
(1) 该字段是否为关键词, 表的主键和外键必须有索引;
(2) 该字段是否为连接操作字段, 对经常与其他表进行连接的表的连接字段应该建立索引;
(3) 该字段出现在where子句的频率, 经常出现在where子句中的字段应该建立索引;
(4) 选择性高的字段应该建立索引。索引的选择性是指索引列里不同值的数目与表中记录数的比;
(5) 对查询型的表, 建立多个索引会大大提高查询速度, 对更新型的表, 如果索引过多, 会增大开销, 对数据库的插入、删除操作频繁, 不要建立过多索引;
(6) 应对经常出现在检索条件中的数据域建立索引, 如果某些数据域经常一起出现在检索条件中, 那么建立复合索引, 对于复合索引, 索引中的数据域的顺序要和实际应用的检索和连接顺序保持一致。
(2) 使用Oracle分区技术
分区将数据在物理上分隔开, 不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。这样, 当对这个表进行查询时, 只需要在表分区中进行扫描, 而不必进行FTS (Full Table Scan, 全表扫描) , 明显缩短了查询时间, 另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O, 一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开。
3 CPU性能调整
服务器的CPU使用情况对数据库的性能影响很大, 调整CPU可以更有效地利用服务器的各种资源, 提高数据库的运行速度和效率。
(1) 尽量利用多个CPU处理器来执行事务处理和查询
CPU的快速发展使得Oracle越来越重视对多CPU的并行技术的应用, 只要可能, 应该将数据库服务器和应用程序的CPU请求分开, 或将CPU请求从一个服务器移到另一个服务器。
(2) 使用PQO方式进行数据查询
PQO方式不仅可以在多个CPU间分配SQL语句的请求处理, 当所查询的数据处于不同的磁盘时, 一个个独立的进程可以同时进行数据读取。
4 SQL语句优化
对数据库进行的各种操作 (包括添加、删除、查询等等) 最终都是通过数据库的SQL语句来执行, 因此SQL语句的执行效率最终决定了Oracle数据库的性能高低, SQL语句的书写, 通常应该遵循以下原则:
(1) 尽量避免对全表扫描, 对经常查询的表创建合理索引, 对大表的查询应在索引上进行。
(2) 使用相同绑定变量对数据库进行查询, 这样可以充分利用SQL共享池中的已经分析的语法树。
(3) 限制动态SQL的使用, 虽然动态SQL很好用, 但是即使在SQL共享池中有一个完全相同的查询值, 动态SQL也会重新进行语法分析。
(4) 避免不带任何条件的SQL语句的执行。
(5) 如果对有些表中的数据有约束, 最好在建表的SQL语句用描述完整性来实现, 而不是用SQL程序中实现。
(6) 在字符串查询中尽可能少用通配符。
(7) 连接查询时, 要有充分的连接条件
(8) 尽量使用exists替代in, not exists替代not in这样的操作
(9) 用union all替换union, union在进行表链接后会筛选掉重复的记录, 所以在表连接后会对所产生的结果集进行排序运算, 删除重复的记录再返回结果。大部分应用中是不会产生重复记录的, 最常见的是过程表与历史表union。因此, 采用union all操作符替代union, 因为union all操作只是简单的将两个结果合并后就返回。
浅谈Oracle数据库安全问题 篇10
Oracle数据库是目前比较流行的关系型数据库, 以其功能强大, 性能卓越被广泛应用于在各个行业, 并且扮演着极其重要的角色, 随着应用的深入, 数据信息的不断增加, 数据库的安全性受到多方面的威胁, 包括对数据库中信息的窃取、篡改和破坏、数据库系统本身的安全缺陷、黑客的攻击和病毒的侵害等, 在无法预料的灾难发生时, 数据库系统不能正常运转, 造成大量数据信息丢失, 数据库的安全性问题已经日益重要。
二、保证数据库安全
保证Oracle数据库的安全主要有以下几个方面:
1用户管理
数据库用户是连接数据库、存取数据库对象 (表和记录等) 的通道。Oracle数据库系统将用户分为:一般用户、数据库管理员、应用程序开发人员等几类用户。用户要访问Oracle数据库系统, 必须以合法的用户名和口令登陆, 以保证Oracle数据库系统的安全性, 这是保护数据库系统安全的重要手段之一。通过建立不同的用户组和用户口令验证, 可以有效地防止非法的Oracle用户进入数据库系统, 对数据库进行非法操作, 造成不必要的麻烦和损坏。在应用程序开发调试初期为了方便经常把密码设成和用户名一致, 这是个很不安全的因素, 在应用系统上线后需要更改密码, 不要和用户名一样, 另外, 应注重数据库用户口令的复杂程度及使用期限, 及时修改系统默认的密码, 特别强调对SYS和SYSTEM两个特殊账户的保密管理, 要经常更改这两个账户的口令, 防止被盗用。对于数据库用户可以通过使用用户配置文件来管理用户, 用户配置文件是一个参数的集合, 其功能是限制用户可使用的系统和数据库资源并管理口令, 如果数据库没有创建用户配置文件, 将使用默认的用户配置文件, 默认用户配置文件指定对于所有用户资源没有限制, 可以通过用户配置文件建立口令管理策略, 对用户口令进行复杂性验证, 检查用户口令历史, 以及控制帐户锁定等, 增强用户口令安全, 从而进一步保证数据库的安全。
2角色、权限管理
权限是执行某种类型的SQL语句和访问其它用户对象的权力, 权限包括两种:系统权限和对象权限。系统权限使用户具有某种数据库操作的权力。对象权限使用户具有查询、插入、更新或修改某个具体对象的权力。在Oracle数据库中, 可以通过授权来对Oracle用户的操作进行限制, 即允许一些用户可以对O-racle服务器进行访问, 也就是说对整个数据库具有读写的权利, 而大多数用户只能在同组内进行读写或对整个数据库只具有读的权利。创建了用户后, 必须为用户授权才能使用, 这时就需要根据用户不同的情况进行授权。如果数据库用户很多, 权限又相同, 这时就需要创建角色。角色是对权限的集中管理机制, 是一组权限的集合, 当把角色授予不同用户时, 用户就有了相同的权限。角色的权限改变, 用户的权限也跟着改变, 可以建立不同的角色, 然后给每种角色授予相应的权限, 然后根据用户类型的不同授予不同的角色。关于用户权限普遍存在问题是, 对Oracle数据库编程和浏览的一般用户常常具有DBA权限, 能对数据库系统做任何修改或删除, 权限过大, 对数据库的安全造成隐患, 所以要给数据库用户授予适当的权限及角色。
3数据访问控制
随着数据库用户的增多, 数据信息的增加, 以及计算机网络应用的普及和提高, 我们应该加强对敏感数据的访问控制能力, 增强数据库的保密性, 不允许未授权的用户存取信息;保证数据的安全性, 只允许授权用户修改数据;保证数据的可用性, 不应拒绝已授权用户对数据的存取访问。数据访问控制是保证数据库安全的重要手段之一, 为了保证数据的正确访问控制, 需要加强访问控制机制, 所谓访问控制机制是指强制何人、何时以及从何处访问数据库指定数据的基本安全框架, 保证了无论是在主流的基于Web浏览器还是客户机/服务器或其他应用系统的访问安全性, 为了加强数据库在网络中的安全性, 对于远程用户, 必须使用加密方式通过密码来访问数据库, 加强网络上的DBA权限控制, 如拒绝远程的DBA访问等。
4数据保护
数据库的数据保护主要是数据库的备份, 备份是数据文件、表空间或某个时间点的数据库等的快照。如果对数据库进行了周期性备份, 则在数据丢失时用户可以将存储的重做信息应用到他们最新的备份中, 从而恢复数据库的当前状态。另一种数据保护就是日志, Oracle数据库实例都提供日志, 用来记录事务对数据库的更新操作的文件, 每个事务开始的标记、结束的标记和更新操作均作为日志文件中的一个日志记录存储在日志文件中, 以便恢复数据库使用。再一个就是控制文件的备份, 它一般用于存储数据库物理结构, 包含了数据库名、数据库数据文件和日志文件的名字和位置、数据库建立日期。
(1) Oracle数据库的备份方式
Oracle数据库的备份主要有以下几种方式:
1) 逻辑备份
逻辑备份就是将某个数据库的记录读出并将其写入到一个文件中, 这是经常使用的一种备份方式, 特别是在应用软件系统开发和测试阶段, 工程师通常采用逻辑备份方法来备份他们的开发或者测试数据库。
2) 物理备份
物理备份也是数据库管理员经常使用的一种备份方式。它可以对Oracle数据库的所有内容进行拷贝, 方式可以是多种, 有脱机备份和联机备份, 它们各有所长, 在实际中应根据具体情况和所处状态进行选择。
脱机备份
其操作是在Oracle数据库正常关闭后, 对Oracle数据库进行备份, 备份的内容包括:所有用户的数据库文件和表;所有控制文件;所有的日志文件;数据库初始化文件等。可采取不同的备份方式, 如:利用磁带转储命令将所有文件转储到磁带上, 或将所有文件原样复制到另一个备份磁盘中或另一个主机的磁盘中。
联机备份
这种备份方式也是切实有效的, 它可以将联机日志转储归档, 在Oracle数据库内部建立一个所有进程和作业的详细准确的完全记录。
(2) Oracle数据库的备份策略
在进行数据库备份前, 须结合自身数据库的特点指定一个切实可行的备份策略, 主要需要考虑以下要点:
用于备份的磁盘一定要和数据库数据文件、控制文件、联机日志文件所在磁盘相分离, 这样可以保证数据库文件所在的磁盘损坏时不会影响到备份的数据文件和日志文件。选择数据库的备份模式为存档模式, 存档模式下, 全部日志文件进行了完整的保存, 若数据库文件出现损失, 就可以从备份中还原数据文件和控制文件, 对其实施日志文件中记录的任何变化, 这样就把数据库完全恢复到错误发生前的情况。有计划地、经常地进行数据库备份, 根据数据库变化的频率制定备份的频率, 若数据库经常进行改动, 则应频繁地进行备份;反之, 若数据库是只读的或很少改动, 则可降低备份频率, 在数据库进行结构改动, 如创建或删除一个表空间的前后必须进行数据库备份。
三、小结
数据库安全性在构建企业应用时是非常重要的技术问题, 本文只是浅显地分析了Oracle数据库安全管理中需要注意的几方面内容, 还有很多没有涉及到的知识需要我们在实际的工作过程中去领悟。但我们应该认识到, 安全问题牵扯到许多因素, 过分的安全性可能会影响效率, 那么在实际的应用中如何平衡安全与效率的问题也是至关重要的。
摘要:对Oracle数据库安全方面的相关问题进行了研究, 深入分析用户管理、角色管理、数据保护等方面内容。
关键词:Oracle,数据库,安全
参考文献
[1]滕永昌、高杨:《Oracle数据库系统管理》.清华大学出版社。[1]滕永昌、高杨:《Oracle数据库系统管理》.清华大学出版社。
[2]飞思科技产品研发中心:《Ora-cle基础与提高》[M].电子工业出版社。[2]飞思科技产品研发中心:《Ora-cle基础与提高》[M].电子工业出版社。
Oracle数据库 篇11
关键词:Oracle;同步策略;Redo日志
中图分类号:TP311.13文献标识码:A文章编号:1007-9599 (2010) 09-0000-01
Research on Oracle Remote Database Synchronization Method
Chen Zhibo,Tang xian
(Henan Agricultural University,Huayu College,Shangqiu476006,China)
Abstract:This article discusses the distributed environment to achieve synchronization strategy based on Oracle database,and data synchronization system needs to resolve several key issues and put forward a feasible distributed database system as data synchronization solution.
Keywords:Oracle;Synchronization strategies;Redo Log
分布式數据库在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上,数据库系统间的数据有效同步成为一个必须要解决的问题。因此必须建立一套可靠的远程数据库同步方案。
一、数据库同步策略
在分布式数据库中保证数据同步的策略有两种:分布式事务和多副本数据近似一致方案。
(一)分布式事务采用两阶段提交协议或者三阶段提交协议等类似协议来保证事务的原子性。
(二)多副本间数据近似一致的方案。各数据副本的修改是异步的,也就是说各副本将不保证任何时刻数据库绝对的一致性,而保持松散一致性。
二、数据库同步系统的关键问题研究
(一)Oracle数据库日志
Oracle重做(Redo)日志记录了所有的发生在缓存中的变化,其中包括有数据、索引和回滚段的变更。只有当事务的变更记录在日志中标志为递交,才能认为事务已经完成,变更后的数据才会在后台进程的控制下写回该数据所在的数据文件中。如果用户没有递交,或是由于其它故障而导致没有递交,则对数据库的变更只会存在日志文件中而不会写入数据文件。而如果递交后在写数据文件时出错,这时由于日志文件中已经有了该事务的递交记录,数据库恢复程序会查找到对应的日志记录并在缓存中进行重做,最后再把结果写到数据文件中。
(二)LogMiner工具的使用
Oracle虽然在日志中详细记录数据操作的活动,LogMiner工具可以提取数据库日志的内容,获得对于数据库操作的DML语句,从而可以查明数据库的逻辑更改情况、检查并更正用户的误操作、执行数据更改的事后审计和执行变化分析等。
LogMiner工具的主要用途有:1.跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。2.回退数据库的变化:回退特定的变化数据,减少point-in-time recover的执行。3.优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。
为了使LogMiner重构出的SQL语句易于识别,我们需要将Oracle数据库中的内部编号转化成相应的名称,这就需要用到数据字典,LogMiner利用DBMS_LOGMNR_D.BUILD()过程来提取数据字典信息。
三、数据同步系统的设计
在分布式环境下开发数据交换系统,面对的主要问题还是增量数据如何同步以及数据同步的效率问题。在基于Oracle数据库的环境下,增量数据同步必须解决数据库日志的解析以及增量数据在目标计算机快速入库的问题。
利用LogMiner解析oracle系统日志是实现分布式数据交换系统所要解决前提之一。对LogMiner解析出的日志进行SQL语句分析重构(针对目标数据库的快速入库接口重构)是实现分布式数据同步系统要解决的前提之二。
本文提出的数据同步系统由三大模块构成,分为目的端、数据源端和控制端。1.数据源端根据控制端的要求,操纵地方各局数据库,提供系统所需的源数据。2.目的端根据用户在控制端的设置,在规定的时间内,抽取取数据源端的数据,并进行转换入库。3.控制端操纵数据源端和目的端服务运行,并提供GUI界面供用户设置系统运行所需配置信息。
在系统运行时,控制端先通过用户设置的源数据端信息和目的端信息,连接源数据端和目的端获取数据库表信息和字段信息;用户通过展示的表信息和字段信息,配置源数据端表和目的端表的映射关系;同时指定数据库日志文件的ftp信息和数据同步时间,然后将映射关系,同步时间,ftp上传路径发送给源数据端监听端口;将同步时间发送给目的端监听端口;源数据端在固定时间间隔,启动SQLPLUS运行LOGMNR脚本,进行日志转储,然后根据用户设定的映射关系进行解析、转换、保存;在同步时间到达时,将保存的解析结果上传;服务端在指定时间获得解析结果然后执行入库。
四、结论
本文根据分布式数据库的技术特点,对Oracle远程数据库同步方法进行了研究分析,提出了在分布式环境下实现基于Oracle数据库的数据同步系统的设计方法。本文所提出的数据同步解决方案是一种比较高效的开发技术,具有一定的理论和现实意义。
参考文献:
[1]李素萍.分布式数据库的同步更新技术研究[J].中国科技信息,2008,16:94
[2]杨辛宝,刘玉.Oracle数据库重做日志文件的分析及其应用[J].信息技术,2005,4:23
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数据库】推荐阅读:
Oracle数据08-20
oracle数据库学习之路09-30
Oracle数据仓库09-28
完全卸载Oracle数据库的方法08-30
RHAS 3.0上的Oracle 9i的安装数据库教程05-16
T1_Oracle数据库基础_教案范文07-02
用分割DMP的方法导入和导出大型ORACLE数据库数据库教程10-17
Oracle06-18