当前位置:首页 » 操作系统 » oracle数据库维护

oracle数据库维护

发布时间: 2023-01-01 08:49:35

⑴ Oracle数据库无响应故障处理方式

Oracle数据库无响应故障处理方式

Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个sql后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接请求后,一直处于等待状态。Oracle数据库无响应故障怎么处理呢?下面跟我一起来学习Oracle数据库无响应故障的处理方法吧!

无响应的故障现象一般有以下几种:

1.Oracle的进程在等待某个资源或事件

这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视图中检查进程正在等待的资源或事件,而被等待的资源或事件,一直都不能被获取,甚至是很长时间都不可获得。如果这个正在等待的进程持有了其他的资源,则会引起其他的进程等待,这样就很可能引起实例中大范围的会话发生等待。由于进程在等待资源或事件时,通常都处于SLEEP状态,消耗的CPU资源非常少(在等待latch时要稍微多消耗一些CPU资源),所以从OS来看,CPU的消耗并不高,甚至是非常低。

这种因为等待而引起的个别进程Hang,相对比较容易处理。

2. OracleProcess Spins

所谓Spin,就是指Oracle进程中的代码在执行某个过程时,陷入了循环。在V$SESSION视图中,往往可以看到Hang住的会话,一直处于“ACTIVE”状态。对于这样的会话,用“alter system kill session ‘sid,serial#’”命令也不能完全断开会话,会话只能被标记为“killed”,会话会继续消耗大量的CPU。进程Spins由于是在做循环,CPU的消耗非常大,从OS上明显可以看到这样的进程,通常会消耗整个CPU的资源。

而对于这样的Hang住的会话,处理起来相对比较复杂,并且为了从根本上解决问题,需要超过DBA日常维护所需要的技能。

从故障范围来看,无响应故障可以分为以下几种情况:

1. 单个或部分会话(进程)Hang住

这种情况属于小范围的故障,业务影响相对较小,一般来说只会影响业务系统的个别模块。在一个多应用系统的数据库上面,如果Hang住的会话比较多,则影响的可能是其中的一个应用系统。这里有一个例外,如果Hang住的进程是系统后台进程,如pmon、smon等,则影响的范围就非常大了,最终甚至会影响整个数据库及所有应用系统。还有值得注意的是,即使是少部分会话Hang住,也要及时处理,否则极有可能会扩散到整个系统。

2. 单个数据库实例Hang住

这种情况造成的影响非常大。在这个实例上的所有应用系统均受到严重影响,并且在找到根源并最终解决问题之前,数据库实例往往须要重启。

3. OPS或RAC中的多个实例或所有实例都Hang住

在这种情况下,即使是OPS或RAC,都已经没办法提供高可用特性了。使用这个数据库的所有应用系统将不能继续提供服务,这种情况往往须要重启。

无响应故障成因分析

Oracle数据库无响应,一般主要由以下几种原因引起:

1. 数据库主机负载过高,严重超过主机承受能力

比如应用设计不当,数据库性能低下,活动会话数的大量增加,导致数据库主机的负载迅速增加,数据库不能正常操作,并最终Hang住;主机物理内存严重不足,引起大量的换页,特别是在SGA中的内存被大量换出到虚拟内存时,数据库实例往往就会Hang住。

2. 日常维护不当、不正确的操作引起数据库Hang住

比如归档日志的存储空间满,导致数据库不能归档,引起数据库Hang住;在一个大并发的繁忙的系

统上,对DML操作比较多的大表进行move、增加外键约束等操作也可能使系统在短时间内负载大幅升高,并引起数据库系统Hang住;不正确的资源计划(Resource Plan)配置,使进程得不到足够的CPU等。

3. Oracle数据库的Bug

几乎每个版本都存在着会导致数据库系统Hang住的Bug,这些Bug会在一些特定的条件下触发,特别是在RAC数据库中,引起数据库Hang住的Bug比较多。

4. 其他方面的一些原因

比如在RAC数据库中,如果一个节点退出或加入到RAC的过程中,当进行Resource Reconfiguration时,会使系统冻结一段时间,也有可能使系统Hang住。

以上所描述的几种常见的会导致Oracle数据库实例Hang住的原因中,大部分的情况是可以避免的,只要维护得当,一般不会出现这种故障。对于Oracle数据库Bug所导致的数据库无响应故障,由于是在特定的情况下才会触发,所以如果能够尽量对数据库打上最新版本的补丁,并且熟悉当前版本中会导致系统Hang住的Bug以及触发条件,就能够最大限度地避免这种故障的发生,提高系统的可用性。

那么,在数据库Hang住的情况下,如何去分析并发现导致问题的根源?一方面,由于系统Hang住会导致业务系统不可用,为了能够尽快地恢复业务,须快速地判断问题所在,然后Kill掉引起故障的会话和进程,或者数据库实例不得不重启以迅速恢复业务;但另一方面,如果只是重启数据库或Kill会话和进程来解决问题,在很多情况下是治标不治本的办法,在以后故障随时可能会出现。如何在二者之间进行抉择呢?对于数据库Hang故障的处理,首先是尽可能地收集到系统Hang住时的状态数据,然后尽快地恢复业务,恢复业务后分析收集到的数据,找到数据库系统Hang住的真正原因,然后再进行相应的处理。下一节将详细描述数据库系统Hang住后的处理流程。

无响应故障处理流程

对于Oracle无响应故障的处理,我们可以按下图所示的流程进行。

值得注意的是,上图并不是一个完整的Oracle数据库故障处理流程图,只是处理Oralce数据库无响应这一类特定的故障的流程,只列出了针对这一特定类型故障处理时的关键处理点。不过既然是故障,所以这类故障的处理流程与其他故障的处理流程,有着非常相似的地方。

下面是整个流程的详细说明:

1. 在出现数据库无响应故障后,首先确认系统的影响范围,如上节所描述的',是部分业务系统或模块还是所有的业务系统都受影响,是不是整个实例或多个实例都无响应。同时应询问系统维护和开发人员,受影响的系统在出现故障前是否有过变动,包括主机硬件、操作系统、网络、数据库以及应用等。有时一个细小的变动就可能导致出现数据库Hang住这样严重的故障。曾经遇到一个库,应用只是修改了一个SELECT语句就导致了数据库Hang住。

2. 为了避免由于网络、数据库监听或客户端因素影响分析,建议都登录到主机上进行操作。

3. 如果主机不能登录(为了避免干扰流程主线,这里不讨论如网络问题这样也会导致不能连接的故障),尝试关闭出现问题的业务系统,甚至是所有的业务系统。如果关闭了所有的业务系统之后,仍然不能连接,则只有考虑重新启动数据库主机。在数据库主机重新启动后,使用操作系统工具或OSW等长期监控操作系统的资源使用,同时监控Oracle数据库的性能和等待等。

4. 登录上主机后,先用top、topas等命令简单观察一下系统。看看系统的CPU使用、物理内存和虚拟内存的使用、IO使用等情况。

5. 使用SQLPLUS连接数据库,如果不能连接,则只能从操作系统上观察系统中是否有异常的现象,比如占用CPU过高的进程。使用gdb、dbx等debugger工具对数据库进行system state mp;使用strace、truss等工具检查异常进程的系统调用;使用pstack、procstack等工具察看异常进程的call stack等。

6. 使用SQLPLUS连接上数据库后,进行hanganalyze、system state mp等操作;或检查等待事件、异常会话等正在执行的SQL等待。

7. 找到故障产生的原因,如果暂时找不到原因,尽量收集数据。

8.确良如果应用急须恢复,可通过Kill会话、重启数据库实例等方式,先恢复应用。

9. 根据最终诊断结果,对数据库升级打补丁,或者修改应用等方式从根本上解决问题。

怎样避免数据库出现无响应故障

作为Oracle数据库DBA,除了处理故障之外,更重要的是如何预防故障的发生。根据前面对数据库无响应故障的成因分析,在日常的维护工作中,须做到以下几点:

1. 进行正确的维护操作

很多的数据库无响应故障都是由于不正确的维护操作引起的。应避免在业务高峰期做大的维护操作,比如像move、加主外键约束等会长时间锁表的操作。如果的确需要,尽量使用正确的操作方法。比如用ONLINE方式重建索引;建主键、唯一键约束时先建索引,然后在建约束时指定新建的索引,等等。也就是保证系统的并发性、可伸缩性,避免系统串行操作的出现。

2. 优化应用设计,优化数据库性能

为避免性能问题导致在业务高峰期数据库不能及时有效处理来自业务的请求,甚至于完全Hang住。对于数据库中存在串行访问的部分进行优化,比如latch、enqueue,还包括不合理的sequence设计等。特别是在RAC数据库中,严重串行访问等待往往更容易引起严重的性能问题。优化应用设计,使数据库具有更好的可伸缩性和并行处理能力,能够有效地避免性能问题引起的数据库Hang住。

3. 利用监控系统随时监控系统负载

遇到系统负载过高,内存不足,OS中虚拟内存换页很频繁等情况时,及时采取措施;监控Oracle数据库的核心进程,如pmon、smon等,看是否有异常,如过高的CPU消耗。出现异常应立即处理;监控归档空间和日志切换;监控数据库中的等待事件,比如是否有大量的enqueue、log file switch (archiving needed)、resmgr:become active等待事件等。

4. 为数据库打上补丁

很多的无响应故障是由于Oracle的Bug引起的,数据库DBA应关注当前版本中有哪些Bug会导致数据库Hang住,尽量为数据库打上解决这些Bug的补丁。

;

⑵ 动态性能视图,Oracle数据库维护的好帮手(一)

动态性能视图主要是Oracle数据的库自动收集并记录当前例程的活动信息 当数据库管理员启动某个例程时 数据库会自动建立动态性能视图;当停止某个例程时 数据库又会自动删除这些动态性能视图 这表面看起来跟数据字典有异曲同工之妙 但是 两者信息的来源还是有很大差异的 数据字典的信息是从数据文件中取得;而动态性能视图的信息则是从SGA内存以及控制文件中取得 所以 两者所反映的信息还是有很大差异的 数据库管理员利用这些动态性能视图 可以了解数据库运行的一些基本信息 为我们进行数据库维护以及数据库性能优化提供一些数据上的支持 一般情况下 我们可以通过动态性能数据掌握两类重要的数据库运行信息 一是了解数据库运行相关的性能数据 如内存的使用量 磁盘排序发生的机率等等 二是取得与磁盘和内存结构相关的其他信息 这些信息将是我们进行数据库维护与数据库性能调整的主要参考依据

为了便于数据库管理员查询这些动态视图 Oracle数据库中的动态性能视图跟其他数据库对象有着不同的命名规则 通常情况下 动态性能视图都是以V_$前缀开头的 并且Oracle数据库维每个动态性能视图提供了相应的同义词 下面笔者就介绍一些动态性能视图查询中的一些技巧以 帮助广大数据库管理员提高对Oracle数据库动态性能视图的认识

一 知道可用的动态性能视图

因为动态性能视图是随着例程的启动而启动 随着例程的消亡而消亡 其是动态变化的 所以 对于一些动态性能视图不怎么了解的数据库管理员来说 第一步就是需要了解 现在数据库中到底有哪些动态性能视图可以用 Oracle数据库中有一张V_$fixed_table动态性能视图 这张视图中纪录着当前所有可用的动态性能视图 当数据库管理员对动态性能不怎么了解的话 可以先通过这张视图了解动态性能视图的概况 并了解哪些动态性能视图当前是可用的 数据库管理员可以通过下面的命令查询当前可用的所有动态性能视图

在通常情况下 数据库不同的状态其动态性能视图还是有比较大的差异 数据库管理员掌握这些差异 对于他们借助这些视图来管理数据库可能会有更大的帮助

一是数据库处于 NOMOUNT 状态 数据库启动例程时 Oracle数据库会打开参数文件 分配SGA内存并启动后台进程 此时 其实数据库还没有挂栽 此时 动态性呢视图收集的信息来源只有是SGA 而不会从控制文件中收集相关的信息 所以 动态性能视图的数量要少得多

二是当数据库处于MOUNT状态时 数据库会根据初始化参数打开所有的控制文件 所以 当例程处于Mount状态时 动态性能视图其收集到的信息就要第一个状态多的多 因为此时 动态性能视图还会去收集控制文件的相关信息 不过 此时动态性能视图所收集到的资料还不是最全的

三是当用户打开数据库时 Oracle系统会根据控制文件所记载的信息去打开所有的数据库文件以及重做日志 此时 数据库管理员除了可以从SGA和控制文件中获取信息的动态性能视图外 还可能访问与Oracle数据库性能相关的动态性能视图 如会话等待时间等视图 另外需要注意一点 就是只有在这个状态时 我们才能够访问数据库的数据字典视图

lishixin/Article/program/Oracle/201311/17253

⑶ 怎样维护oracle数据库。。请知道的告诉我下。QQ286073088。可加分哦。 谢谢

1、新手必用的工具
oracle 10G以后,可以用数字库自带的管理软件维护有网页版本的和c/s客户端版本的EM,
如果是新手,建议直接用EM,很好用,和sql server的企业管理器有得一拼。
新建表格、数据库等等。
数据库备份、
数据库用户管理,权限管理
当然也可以用网页版的那个管理软件,也很方便、尤其是数据库备份维护,数据库恢复,超级简单。只要认识汉字,学过计算机数据库,搞这个不在话下。

2、你一定要看一下书,了解一下表空间之类的概念
3、以前DB2、oracle都比较侧重命令行的操作,但是时代的潮流不可阻挡,图形化的交互操作将慢慢代替操作麻烦的命令行。
一开始不要老想着用命令来解决问题,现在都走图形化的界面了,先从简单的来。

⑷ oracle数据库,树形结构维护,添加字段值

为什么这样设计?我认为是设计上不太好。问题的本质是劳动街的爸爸是南岗区,南岗区的爸爸是哈尔滨,哈尔滨的爸爸是黑龙江,这个问题的实质是找到最上层的节点。
建议你首先学习一下Oralce独有的ConnectBy查询。特别是level什么的虚拟字段要搞懂。
table结构修改成:地区代码 父地区代码 地区名称 足够了
然后通过connect by 地区代码=父代码 找到root的这个记录的地区名字,问题解决
现在这个结构,假设不找黑龙江,要找到哈尔滨,得了,要吐血了。
===追加一下,假设表已经有了,可以通过视图修改成父,子结构。用字符函数截取,得到父地区的邮编,同样也能解决问题。这样做性能不好,会大量的全表扫描。性能的根本果然在于设计。

⑸ 怎样管理好ORACLE数据表

ORACLE数据库中 表是最基本的内容 可以说 表设计的好坏直接跟数据库的性能相关 所以 在设计表的时候 除了要遵循其固有的数据库准则之外 还需要看个人的数据库管理经验 下面我就把这些经验分享一下 或许对大家有所帮助 一 表该存放在哪里? 我们都知道 在ORACLE数据库中 使利用空间这个概念来管理表对象的 在数据库创建的时候 数据库中已经建立了一些表空间 那么当我们新建立表的时候 这个新表的位置该放在什么地方呢?这就好像吃饭时的坐的位置一样 是有讲究的 一般来说 我们在新建表的时候 至少要遵循如下建议 一是在数据库创建的时候 在数据库中已经有了一个SYSTEM的表空间 一般情况下 这个表空间中 只包含数据字典及Oracle系统对象 如果我们将我们的表建立在这个空间上的话 那是要降低数据库的性能的 所以 一般我们是不建议用户把表格建立在这个空间上 但是 若我们不只一个人维护数据库 如有八个人共同设计数据库系统时 如何才能保证其他用户不在SYSTEM表空间中建立数据库表格呢?最好的办法就是通过权限控制 如我们可以给每个数据库设计人员指定一个默认的表空间 让他们只能在这个表空间中建立表格 如此的话 就能防止他们在SYSTEM表空间中建立自己的数据表格 从而对数据库的运行性能产生不良影响 所以 若给每个用户设置默认表空间的话 那么用户在建立具体的表时 不用具体指定表空间了 二是我们在为某个应用设计数据库的时候 最好先对表的空间进行规划 一般情况下 不要把数据表随意的分散到不同的表空间中去 如我们在为一个ERP系统设计数据库的时候 若把采购部门相关的表跟销售部门相关的表放到两个不同的表空间中去 这是不明智的做法 这么处理的话 会降低某些数据库管理和维护操作的效率 如数据的备份与恢复操作;而且 也无法集中管理属于某个特定应用的数据 所以 我们一般建议 在规划数据库表空间的时候 把相同应用的表放在同一个表空间中去 如果要区分不同部门或者不同模块的表的话 我们可以在表的命名上动脑子 如我们在设计ERP系统的数据库中 可以根据其应用模块的不同 在前面加上前缀来进行识别 如跟系统基本配置相关的表 我们可以用AD为前缀;而跟销售部门相关的表 我们可以加上SA前缀等等 如此的话 这些表具体是属于哪个模块的 就一清二楚了 完全没有必要为此设置不同的表空间 这是ORACLE数据库初学者经常会犯的错误 主要是对ORACLE表空间的定义不是很熟悉所导致的 二 对预计存储数量比较大的表时 要给与额外的重视 有些表非常的大 我们这边说的大 不一定是说结构复杂 而是指在这个表格中 预期会存储比较多的数据 为了提高对这个表格的处理效率 我们在事先要做出一定的安排 否则的话 后续对这些大表进行查询 插入等操作的话 速度会很慢 所以 我们就有必要在数据库设计的时候 先预先估计一下表的数据存储量 把一些数据量大的表格 做一些额外的设置 如在ERP软件的数据库设置中 一般来说 产品数据与物料清单数据这两个表的数据量会比较大;而从长远看的话 销售订单 采购订单 生产订单 记账凭证等这种单据类相关的表格其数据量也会比较大 一年两年可能感觉不出来 但是 到十年后 这个纪录数量就会很庞大 而像ERP系统这种大型的信息化管理项目 用个几十年时很正常的事情 而且 为了记录的完整性 也不建议用户把以前的数据删除 所以 为这种应用进行数据库设计的时候 要充分考虑这些大表的性能问题 具体的来说 设计大表的时候 可以考虑遵循如下的建议 一是不要为大表设置存储的限制 在ORACLE数据库中 可以为每张表格设置存储配额限制 如此的话 表最大容量就不能超过这个限制 对于一些数据容量比较小的表格 这么设置时合理的 可以提高空间的利用率 但是 若数据量比较大的话 就不建议事先设置表的存储空间了 如ERP系统的销售订单表 其刚开始可能记录量很小 第一年预计只有 G的记录容量 但是 估计在十年后 这个记录容量就会达到 G了 在这种情况下 我们怎么来给其设置存储空间呢?一开就设置 G空间 这也是不合理的 而且 设置存储空间 就意味着有可能产生存储碎片 从而影响到数据查询的效率 所以 在数据库表的设计过程中 若某些应用的表可能会有比较大的数据容量时 建议不要对其存储空间做出任何的限制 二是要为这大表分配足够的临时空间 如我们使用ERP系统时 要查询产品资料信息 我们都知道 产品信息的话 有些企业这个纪录数非常的庞大 而且在查询时 我们还会经常的进行排序操作 如有时候会按照产品编码对查询出来的数据进行排序 当记录少的话 还好;但是 当记录多的话 这个排序动作 要求具有比较大的临时存储空间 所以 当某个表预计会有很大的记录数量的时候 我们就要给其分配足够多的临时空间 临时空间的存储参数设置取决于临时表空间的默认储存参数设置 我们可以更改这些参数 以达到我们对要求 若没有给大表分配足够多的临时空间的话 则排序的动作将会很慢 而且很可能不成功 三是要考虑将表与表的索引分离存放 大表所对应的索引通常也比较大 一般来说 索引的数量是随着表记录的数量增加而增加 两者是接近于一个正比例的关系 所以 通常表的记录容量大的时候 索引数量也会很庞大 针对这种情况 我们考虑突破我们上面讲的表空间的规则定义 而考虑把表和他的索引分别存储于不同的表空间中 甚至在条件允许的情况下 分别存储于不同的硬盘中 这么做的好处是什么呢?最大的好处是让索引比较容易的获得所需要的连续的存储空间 从而提高输入输入的效率 通俗的说 就是可以提高数据的查询效率 如不这么处理的话 查询大容量的记录的话 数据库可能需要花费 秒;而如此设计的话 就可能把时间缩短为 秒 这是一个很明显的性能改善 三 如何给表命名? 上面我在讲如何为表分配存储空间的时候 已经讲到过这方面的问题 下面 我就将对这个问题进行详细的描述 以帮助数据库管理员掌握一套好的数据库命名规则 首先 毋庸置疑的 在为标命名的时候 要遵循ORACLE数据库的基本命名规则 如不能以数字开头为表命名 如不能利用数据库的关键字为表命名 如表的名字不能重复等等 这些是最基本的要求 就不用我多费口舌了 除了要遵循这些基本的命名规则外 在实际工作中 为了数据库后续的维护等方面出发 我们还是要遵循一些额外的规则 这些规则跟ORACLE定义的规则不同 我们所讲的规则没有约束力 可以说 只是业界的一些共识而已 你若不怎么处理 ORACLE数据库也不会说你错误 只是后续维护的时候 会比较麻烦而已 一是在对数据库命名的时候 最好能跟体现表的分类关系 如最常见的 我们在设计数据库的时候 表都是按系统的具体模块来区分的 如根据前端系统要求的不同 数据库的表大致可以分为系统基本配置表 销售模块表 采购模块表 报表模块表等等 我们可以根据这些模块的不同 分别给与不同的前缀来区分 这么做的好处是很明显的 如一看到表最大名字 就可以知道这个表是属于哪个应用的 哪个模块的 这无疑可以提高数据库设计与前台软件开发的效率 同时 数据库中默认的排序规则是按名字来排序的 所以 为表格设置类别前缀的话 可以把同一类的表格排在一起 方便我们察看 二是对表格命名的时候 要考虑可读性 而不能随便阿狗阿猫的乱取名字 最常见的是 那些刚学数据库的人 在表命名的时候 如要建几张测试表 就会随便命名如TEST TEST 之类的 虽然这只是测试 但是 也不符合我们的命名过则 要做测试的话 那就以TEST开头 然后后面加上具体要测试的内容 如此的话 我们才可以通过表的名字知道该表具体的用途 而不用打开表去看里面具体的结构或者注释才能知道我们需要的信息 所以 在设计表的名字的时候 还要关注一下其的可读性 lishixin/Article/program/Oracle/201311/18317

⑹ 你的Oracle数据库安全吗

随着计算机的普及以及网络的发展 数据库已经不再仅仅是那些程序员所专有的话题 Oracle数据库更是凭借其性能卓越 操作方便灵活的特点 在数据库的市场中已经占据了一席之地

但是 随着网络技术的不断进步 数据信息的不断增加 数据安全也已经不再是以前的 老生长谈 更不是以前书本上那些 可望而不可及 的条条框框

或许很久以前 大家都觉得Oracle数据库的安全并不存在隐患 因为Oracle公司在 年 月份开始促销其数据库软件时提出的口号是 只有Oracle i能够做到绝对安全

但是不管它这么说是为了促销 还是为了扩大知名度 这口号提出仅一个月后 英国的安全专家 David Litchfield就发现的 iAS中存在的程序错误导致缓冲溢出漏洞 后来 PenTest Limited和 eEye Digital Security各自提出了一个小的漏洞 所有使用Oracle公司产品的人都不由地紧张了原本松弛的大脑——对于用户来说 毕竟是关系到了 身家性命

下面笔者将带着大家走进Oracle数据安全的世界

一 Oracle数据库的一些基本常识

这里仅仅是为了以后的安全奠定一些基础 因为我们后面要用到它们

Oracle所包含的组件

Oracle数据库是指整个Oracle RDBMS环境 它包括以下组件:

·Oracle 数据库进程和缓冲(实例)

·SYSTEM 表空间包含一个集中系统类目 它可以由一个或多个数据文件构成

·其它由数据库管理员(DBA)(可选)定义的表空间 每个都由一个或多个数据文件构成

·两个以上的联机恢复日志

·归档恢复日志(可选)

·其它文件(控制文件 Init ora Config ora 等)

每个 Oracle 数据库都在一个中央系统类目和数据字典上运行 它位于SYSTEM 表空间

关于 日志

Oracle数据库使用几种结构来保护数据:数据库后备 日志 回滚段和控制文件 下面我们将大体上了解一下作为主要结构之一的 日志 :

每一个Oracle数据库实例都提供日志 记录数据库中所作的全部修改 每一个运行的Oracle数据库实例相应地有一个在线日志 它与Oracle后台进程LGWR一起工作 立即记录该实例所作的全部修改 归档(离线)日志是可选择的 一个Oracle数据库实例一旦在线日志填满后 可形成在线日志归档文件 归档的在线日志文件被唯一标识并合并成归档日志

·在线日志:一个Oracle数据库的每一实例有一个相关联的在线日志 一个在线日志由多个在线日志文件组成 在线日志文件(online redo log file)填入日志项(redo entry) 日志项记录的数据用于重构对数据库所作的全部修改

·归档日志:Oracle要将填满的在线日志文件组归档时 则要建立归档日志(archived redo log) 其对数据库备份和恢复的用处如下:a 数据库后备以及在线和归档日志文件 在操作系统和磁盘故障中可保证全部提交的事物可被恢复 b 在数据库打开和正常系统使用下 如果归档日志是永久保存 在线后备可以进行和使用

数据库可运行在两种不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式 数据库在NOARCHIVELOG方式下使用时 不能进行在线日志的归档 如果数据库在ARCHIVELOG方式下运行 可实施在线日志的归档

物理和逻辑存储结构

Oracle RDBMS是由表空间组成的 而表空间又是由数据文件组成的 表空间数据文件被格式化为内部的块单位 块的大小 是由DBA在Oracle第一次创建的时候设置的 可以在 到 个字节的范围内变动

当一个对象在Oracle表空间中创建的时候 用户用叫做长度的单位(初始长度(initial extent) 下一个长度(next extent) 最小长度(min extents)以及最大长度(max extents))来标明该对象的空间大小 一个Oracle长度的大小可以变化 但是要包含一个由至少五个连续的块构成的链

二 Oracle数据安全的维护

记得某位哲学家说过: 事物的变化离不开内因和外因 Oracle数据安全也不例外 分为 内 和 外 两个部分 我们就先从 内 开始说起:

从Oracle系统本身说起

先抛开令人闻风色变的 hacker 和其他一些外部的原因 来想一下我们的数据库 硬盘损坏 软件受损 操作事物…… 一系列由于我们的 疏忽 而造成的系统问题就完全可以让我们辛苦建立的数据库中的数据一去不复返 那么 我们先从自己身上找找原因吧

( ) 解决系统本身问题的方法 数据库的备份及恢复

首先讲数据库的备份 关于Oracle数据库的备份 有三种标准办法:导出/导入(Export/Import) 冷备份 热备份 导出/导入备份是一种逻辑备份 冷备份和热备份是物理备份

< >导出/导入(Export/Import)

利用Export可将数据从数据库中提取出来 利用Import则可将提取出来的数据送回Oracle数据库中去

a 简单导出数据(Export)和导入数据(Import)

Oracle支持三种类型的输出:

(a) 表方式(T方式) 将指定表的数据导出

(b) 用户方式(U方式) 将指定用户的所有对象及数据导出

(c) 全库方式(Full方式) 将数据库中的所有对象导出

数据导出(Import)是数据导入(Export)的逆过程 它们的数据流向不同

b 增量导出/导入

增量导出是一种常用的数据备份方法 它只能对整个数据库来实施 并且必须作为SYSTEM来导出 在进行此种导出时 系统不要求回答任何问题 导出文件名缺省为export dmp 如果不希望自己的输出文件定名为export dmp 必须在命令行中指出要用的文件名

增量导出包括三个类型:

(a) 完全 增量导出(Complete)

即备份整个数据库 比如:

$exp system/manager inctype=plete file= dmp

(b) 增量型 增量导出

备份上一次备份后改变的数据 比如:

$exp system/manager inctype=incremental file= dmp

(c) 累计型 增量导出(Cumulative)

累计型导出方式只是导出自上次 完全 导出之后数据库中变化了的信息 比如:

$exp system/manager inctype=cumulative file= dmp

数据库管理员可以排定一个备份日程表 用数据导出的三个不同方式合理高效地完成 比如数据库的备份任务可作如下安排:

·星期一:完全导出(A)

·星期二:增量导出(B)

·星期三:增量导出(C)

·星期四:增量导出(D)

·星期五:累计导出(E)

·星期六:增量导出(F)

·星期日:增量导出(G)

如果在星期日 数据库遭到意外破坏 数据库管理员可按以下步骤来恢复数据库:

第一步:用命令CREATE DATABASE重新生成数据库结构;

第二步:创建一个足够大的附加回段

第三步:完全增量导入A:

$imp system /manager inctype= RECTORE FULL=Y FILE=A

第四步:累计增量导入E:

$imp system/manager inctype= RECTORE FULL=Y FILE =E

第五步:最近增量导入F:

$imp system/manager inctype=RESTORE FULL=Y FILE=F

< >冷备份

冷备份发生在数据库已经正常关闭的情况下 冷备份是将关键性文件拷贝到另外位置的一种说法 对于备份Oracle信息而言 冷备份是最快和最安全的方法 冷备份的优点是:

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

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

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

·能与归档方法相结合 作数据库 最新状态 的恢复

·低度维护 高度安全

但冷备份也有如下不足:

·单独使用时 只能提供到 某一时间点上 的恢复

·在实施备份的全过程中 数据库必须要做备份而不能做其它工作 也就是说 在冷备份过程中 数据库必须是关闭状态

·若磁盘空间有限 只能拷贝到磁带等其它外部存储设备上 速度会很慢

·不能按表或按用户恢复

如果可能的话(主要看效率) 应将信息备份到磁盘上 然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时 数据库也可以工作) 冷备份中必须拷贝的文件包括:

·所有数据文件

·所有控制文件

·所有联机REDO LOG文件

·Init ora文件(可选)

值得注意的是冷备份必须在数据库关闭的情况下进行 当数据库处于打开状态时 执行数据库文件系统备份是无效的

下面是做冷备份的完整例子:

a 关闭数据库$sqldba lmode=y

SQLDBA >connect internal;

SQLDBA >shutdown normal;

b 用拷贝命令备份全部的时间文件 重做日志文件 控制文件 初始化参数文件

SQLDBA >! cp < file > < backup directory >

c 重启Oracle数据库

$sqldba lmode=y

SQLDBA >connect internal;

SQLDBA >startup;

< >热备份

热备份是在数据库运行的情况下 采用Archivelog mode方式备份数据的方法 所以 如果你有昨天夜里的一个冷备份而且又有今天的热备份文件 在发生问题时 就可以利用这些资料恢复更多的信息 热备份要求数据库在Archivelog方式下操作 并需要大量的档案空间 一旦数据库运行在Archivelog状态下 就可以做备份了 热备份的命令文件由三部分组成:

a 数据文件一个表空间一个表空间地备份

(a) 设置表空间为备份状态

(b) 备份表空间的数据文件

(c) 恢复表空间为正常状态

b 备份归档log文件

(a) 临时停止归档进程

(b) log下那些在archive redo log目标目录中的文件

(c) 重新启动archive进程

(d) 备份归档的redo log 文件

c 用alter database backup controlfile命令来备份拷贝文件

热备份的优点是:

·可在表空间或数据文件级备份 备份时间短

·备份时数据库仍可使用

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

·可对几乎所有数据库实体作恢复

·恢复是快速的 在大多数情况下在数据库仍工作时恢复

热备份的不足是:

·不能出错 否则后果严重

·若热备份不成功 所得结果不可用于时间点的恢复

lishixin/Article/program/Oracle/201311/18027

⑺ 实例讲解Oracle密码文件的使用与维护

在Oracle系统中 用户使用特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle有两种身份验证方法

使用与操作系统集成的身份验证

使用Oracle数据库的密码文件进行身份验证

因此 管理好密码文件 对于控制授权用户从远端或本机登录Oracle数据库系统 执行数据库管理工作 具有重要的意义

Oracle数据库的密码文件存放有超级用户INTERNAL/SYS的口令及其他特权用户的用户名/口令 它一般存放在ORACLE_HOME\DATABASE目录下

一 密码文件的创建

在使用Oracle Instance Manager创建一数据库实例的时侯 在ORACLE_HOME\DATABASE目录下还自动创建了一个与之对应的密码文件 文件名为PWDSID ORA 其中SID代表相应的Oracle数据库系统标识符 此密码文件是进行初始数据库管理工作的基础 在此之后 管理员也可以根据需要 使用工具ORAPWD EXE手工创建密码文件 命令格式如下

C \ >ORAPWDFILE=< FILENAME >PASSWORD

=< PASSWORD > ENTRIES=< MAX_USERS >

各命令参数的含义为

FILENAME 密码文件名

PASSWORD 设置INTERNAL/SYS帐号的口令

MAX_USERS 密码文件中可以存放的最大用户数 对应于允许以SYSDBA/SYSOPER权限登录数据库的最大用户数 由于在以后的维护中 若用户数超出了此限制 则需要重建密码文件 所以此参数可以根据需要设置得大一些

有了密码文件之后 需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制密码文件的使用状态

二 设置初始化参数REMOTE_LOGIN_PASSWORDFILE

在Oracle数据库实例的初始化参数文件中 此参数控制着密码文件的使用及其状态 它可以有以下几个选项

NONE 指示Oracle系统不使用密码文件 特权用户的登录通过操作系统进行身份验证

EXCLUSIVE 指示只有一个数据库实例可以使用此密码文件 只有在此设置下的密码文件可以包含有除INTERNAL/SYS以外的用户信息 即允许将系统权限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户

SHARED 指示可有多个数据库实例可以使用此密码文件 在此设置下只有INTERNAL/SYS帐号能被密码文件识别 即使文件中存有其他用户的信息 也不允许他们以SYSOPER/SYSDBA的权限登录 此设置为缺省值

在REMOTE_LOGIN_PASSWORDFILE参数设置为EXCLUSIVE SHARED情况下 Oracle系统搜索密码文件的次序为 在系统注册库中查找ORA_SID_PWFILE参数值(它为密码文件的全路径名) 若未找到 则查找ORA_PWFILE参数值 若仍未找到 则使用缺省值ORACLE_HOME\DATABASE\PWDSID ORA 其中的SID代表相应的Oracle数据库系统标识符

三 向密码文件中增加 删除用户

当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时 系统允许除INTERNAL/SYS以外的其他用户以管理员身份从远端或本机登录到Oracle数据库系统 执行数据库管理工作 这些用户名必须存在于密码文件中 系统才能识别他们 由于不管是在创建数据库实例时自动创建的密码文件 还是使用工具ORAPWD EXE手工创建的密码文件 都只包含INTERNAL/SYS用户的信息 为此 在实际操作中 可能需要向密码文件添加或删除其他用户帐号

由于仅被授予SYSOPER/SYSDBA系统权限的用户才存在于密码文件中 所以当向某一用户授予或收回SYSOPER/SYSDBA系统权限时 他们的帐号也将相应地被加入到密码文件或从密码文件中删除 由此 向密码文件中增加或删除某一用户 实际上也就是对某一用户授予或收回SYSOPER/SYSDBA系统权限

要进行此项授权操作 需使用SYSDBA权限(或INTERNAL帐号)连入数据库 且初始化参数REMOTE_LOGIN_PASSWORDFILE的设置必须为EXCLUSIVE 具体操作步骤如下

创建相应的密码文件

设置初始化参数REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

使用SYSDBA权限登录

CONNECTSYS/internal_user_passswordASSYSDBA

启动数据库实例并打开数据库

创建相应用户帐号 对其授权(包括SYSOPER和SYSDBA)

授予权限 GRANTSYSDBATOuser_name

收回权限 REVOKESYSDBAFROMuser_name

现在这些用户可以以管理员身份登录数据库系统了

四 使用密码文件登录

有了密码文件后 用户就可以使用密码文件以SYSOPER/SYSDBA权限登录Oracle数据库实例了 注意初始化参数REMOTE_LOGIN_PASSWORDFILE应设置为EXCLUSIVE或SHARED 任何用户以SYSOPER/SYSDBA的权限登录后 将位于SYS用户的Schema之下 以下为两个登录的例子

以管理员身份登录

假设用户scott已被授予SYSDBA权限 则他可以使用以下命令登录

CONNECTscott/tigerASSYSDBA

以INTERNAL身份登录

CONNECTINTERNAL/INTERNAL_PASSWORD

五 密码文件的维护

查看密码文件中的成员

可以通过查询视图V$PWFILE_USERS来获取拥有SYSOPER/SYSDBA系统权限的用户的信息 表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用户是否拥有相应的权限 这些用户也就是相应地存在于密码文件中的成员

扩展密码文件的用户数量

当向密码文件添加的帐号数目超过创建密码文件时所定的限制(即ORAPWD EXE工具的MAX_USERS参数)时 为扩展密码文件的用户数限制 需重建密码文件 具体步骤如下

(a)查询视图V$PWFILE_USERS 记录下拥有SYSOPER/SYSDBA系统权限的用户信息

(b)关闭数据库

(c) 删除密码文件

(d) 用ORAPWD EXE新建一密码文件

(e) 将步骤a中获取的用户添加到密码文件中

修改密码文件的状态

密码文件的状态信息存放于此文件中 当它被创建时 它的缺省状态为SHARED 可以通过改变初始化参数REMOTE_LOGIN_PASSWORDFILE的设置改变密码文件的状态 当启动数据库事例时 Oracle系统从初始化参数文件中读取REMOTE_LOGIN_PASSWORDFILE参数的设置 当加载数据库时 系统将此参数与口令文件的状态进行比较 如果不同 则更新密码文件的状态 若计划允许从多台客户机上启动数据库实例 由于各客户机上必须有初始化参数文件 所以应确保各客户机上的初始化参数文件的一致性 以避免意外地改变了密码文件的状态 造成数据库登陆的失败

修改密码文件的存储位置

密码文件的存放位置可以根据需要进行移动 但作此修改后 应相应修改系统注册库有关指向密码文件存放位置的参数或环境变量的设置

删除密码文件

在删除密码文件前 大家应当确保当前运行的各数据库实例的初始化参数REMOTE_LOGIN_PASSWORDFILE皆设置为NONE

lishixin/Article/program/Oracle/201311/18956

⑻ oracle数据库维护的介入时期最好是

维护,说白了,就是管理数据库,人家操作数据库都会经过你的手,你得管理大家的数据库,责任重大,而且问题很多,容易出错,特别是数据备份,还原等。

⑼ 数据库手册:Oracle维护常用SQL语句二

回滚段查看 select rownum sys dba_rollback_segs segment_name Name v$rollstat extentsExtents v$rollstat rssize Size_in_Bytes v$rollstat xacts XActs v$rollstat gets Gets v$rollstat waits Waits v$rollstat writes Writes sys dba_rollback_segs status status from v$rollstat sys dba_rollback_segs v$rollname where v$rollname name(+) = sys dba_rollback_segs segment_name andv$rollstat usn (+) = v$rollname usn order by rownum 耗资源的进程(top session) select s schemaname schema_name decode(sign( mand) to_char(mand) Action Code # || to_char(mand) ) action statussession_status s osuser os_user_name s sid p spid s serial# serial_num nvl(s username [Oracle process] ) user_name s terminal terminal s program program st value criteria_value from v$sesstat st v$session s v$process pwhere st sid = s sid and st statistic# = to_number( ) and ( ALL = ALL or s status = ALL ) and p addr = s paddr order by st value desc p spid asc s username asc s osuser asc 查看锁(lock)情况 select /*+ RULE */ ls osuser os_user_name ls username user_name decode(ls type RW Row wait enqueue lock TM DML enqueue lock TX Transaction enqueue lock UL User supplied lock ) lock_type o object_name object decode(ls lmode null Row Share Row Exclusive Share Share Row Exclusive Exclusive null)lock_mode o owner ls sid ls serial# serial_num ls id ls id from sys dba_objects o ( select s osuser s username l type l lmode s sid s serial# l id l id from v$session s v$lock l where s sid = l sid ) ls where o object_id = ls id and o owner<> SYS order by o owner o object_name 查看等待(wait)情况 SELECT v$waitstat class v$unt count SUM(v$sysstat value) sum_valueFROM v$waitstat v$sysstat WHERE v$sysstat name IN ( db block gets consistent gets ) group by v$waitstat class v$unt 查看sga情况 SELECT NAME BYTES FROM SYS V_$SGASTAT ORDER BY NAME ASC 查看catched object SELECT owner name db_link namespace type sharable_mem loads executions locks pins kept FROM v$db_object_cache 查看V$SQLAREA SELECT SQL_TEXT SHARABLE_MEM PERSISTENT_MEM RUNTIME_MEM SORTS VERSION_COUNT LOADED_VERSIONS OPEN_VERSIONS USERS_OPENING EXECUTIONS USERS_EXECUTING LOADS FIRST_LOAD_TIME INVALIDATIONS PARSE_CALLS DISK_READS BUFFER_GETS ROWS_PROCESSED FROM V$SQLAREA 查看object分类数量 select decode (o type# INDEX TABLE CLUSTER VIEW SYNONYM SEQUENCE OTHER ) object_type count(*) quantity fromsys obj$ o where o type# > group by decode (o type# INDEX TABLE CLUSTER VIEW SYNONYM SEQUENCE OTHER ) union select COLUMN count(*) from l$ union select DB LINK count(*) from 按用户查看object种类 select u name schema sum(decode(o type# NULL)) indexes sum(decode(o type# NULL)) tables sum(decode(o type# NULL))clusters sum(decode(o type# NULL)) views sum(decode(o type# NULL)) synonyms sum(decode(o type# NULL)) sequences sum(decode(o type# NULL NULL NULL NULL NULL NULL ))others from sys obj$ o sys user$ u where o type# >= and u user# =o owner# and u name <> PUBLIC group by u name order bysys link$ union select CONSTRAINT count(*) from n$ 有关connection的相关信息 )查看有哪些用户连接select s osuser os_user_name decode(sign( mand) to_char(mand) Action Code # || to_char(mand) ) action p program oracle_process status session_status s terminal terminal s program program s username user_name s fixed_table_sequence activity_meter query memory max_memory cpu_usage s sid s serial# serial_numfrom v$session s v$process p where s paddr=p addr and s type = USER order by s username s osuser )根据v sid查看对应连接的资源占用等情况select n name v value n class n statistic#from v$statname n v$sesstat vwhere v sid = andv statistic# = n statistic#order by n class n statistic# )根据sid查看对应连接正在运行的sqlselect /*+ PUSH_SUBQ */mand_type sql_text sharable_mem persistent_mem runtime_mem sorts version_count loaded_versions open_versions users_opening executions users_executing loads first_load_time invalidations parse_calls disk_reads buffer_gets rows_processed sysdate start_time sysdate finish_time > || address sql_address N statusfrom v$sqlareawhere address = (select sql_address from v$session where sid = ) 查询表空间使用情况select a tablespace_name 表空间名称 round((nvl(b bytes_free )/a bytes_alloc)* ) 占用率(%) round(a bytes_alloc/ / ) 容量(M) round(nvl(b bytes_free )/ / ) 空闲(M) round((a bytes_alloc nvl(b bytes_free ))/ / ) 使用(M) Largest 最大扩展段(M) to_char(sysdate yyyy mm dd hh :mi:ss ) 采样时间 from (select f tablespace_name sum(f bytes) bytes_alloc sum(decode(f autoextensible YES f maxbytes NO f bytes)) maxbytesfrom dba_data_files fgroup by tablespace_name) a (select f tablespace_name sum(f bytes) bytes_freefrom dba_free_space fgroup by tablespace_name) b (select round(max(ff length)* / ) Largest ts name tablespace_namefrom sys fet$ ff sys file$ tf sys ts$ tswhere ts ts#=ff ts# and ff file#=tf relfile# and ts ts#=tf ts#group by ts name tf blocks) cwhere a tablespace_name = b tablespace_name and a tablespace_name = c tablespace_name 查询表空间的碎片程度 select tablespace_name count(tablespace_name) from dba_free_space group by tablespace_namehaving count(tablespace_name)> ;alter tablespace name coalesce;alter table name deallocate unused;create or replace view ts_blocks_v asselect tablespace_name block_id bytes blocks free space segment_name from dba_free_spaceunion allselect tablespace_name block_id bytes blocks s lishixin/Article/program/Oracle/201311/18531

⑽ 数据库是什么Oracle又是啥玩意

经常会有人问我数据库是干啥的,其实一开始我是拒绝回答的,因为我也不能做到通俗易懂的表达出来,毕竟我接触这个概念也没有多长时间,但随着问的人多了,我觉得是时候脑补一下我的第一堂课了,万一哪天冒出来个货跟你掰扯这事儿,你没分分钟给他说清,最后弄个丢里儿丢面儿,好尴尬呀。

数据库,说白了就是按照数据结构来组织、存储和管理数据的仓库,这些数据是结构化的,并可为多种应用服务。也就是说,数据库是使用计算机服务器来存储数据的,专门用来提供各种数据服务。可以这样想象,过去一个公司的所有财务数据都是放在保险柜里面,而现在我们就可以针对这些财务数据搭建一个数据库放在某台计算机或服务器上面;再比如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。最常见的数据库有:银行储蓄系统、手机话费系统、美容美发会员系统、超市会员积分系统、水电费系统、机票或火车票系统等,这些都需要后台数据库基础设施的支撑。举了这么多例子,应该是把数据库说明白了,至少能在大脑里面有个概念,知道这个东西是干啥的。

现在大数据被炒的红得发紫,而大数据的基础也是数据,由此可见,数据是一个企业的核心资源,说它是企业的立身之本、发展之基都不为过,因此,维护数据库的数据库管理员(DBA)是企业不可或缺的。

目前市面上的数据库产品有很多,单从规模上分可分为大型、中型、小型几种,典型的数据库产品如下:

大型数据库:Oracle、DB2、Sybase;

中型数据库:MySQL、SQLServer、Infomix;

小型数据库:Access、VisualFoxpro。在众多的数据库产品中,Oracle数据库一直处于行业领导先地位,也是当今最流行的关系型数据库。Oracle可翻译成"甲骨文",它是一家以数据库为主业的全球化公司,是全球第二大软件公司(第一名是微软公司),目前Oracle在数据库软件市场已经排名第一,数据库软件市场份额达到48.6%,遥遥领先于第二名占有率仅为20.7%的IBM公司的DB2。在中国市场上的计算机专业系统后台所使用的数据库尤以Oracle数据库居多。但是购买Oracle数据库需要很大一笔费用,一般的大型企业使用,需要有专业人员进行管理和维护,中小企业承担不起。中小企业为了节省成本,一般使用MySQL、PostgreSQL这类免费开源的数据库,所以Oracle数据库相关的工作岗位一般是在大型企业中。

对于为什么选择Oracle数据库,而不是其他的数据库?

第一,是因为Oracle数据库占据最大的市场份额,并且越来越大,市场需要很多Oracle数据库方面的人才,中国有句老话说"做对事,选对人",是同样的道理;第二,是很多非Oracle数据库的老系统正往Oracle数据库迁移,其他数据库市场占有率在减少,其他数据库工作者有面临失业的风险;第三,Oracle有大量的官方学习文档,还有部分中文文档,可以有效地进行学习;第四,Oracle有大量的从业人员,有共同方向的朋友可以互相帮助,不再是孤胆英雄;第五,是可以很容易地从Oracle官方网站下载功能齐全的数据库最新版本进行学习,可以让你了解数据库方面的最新发展趋势等。

在此说明,以后的所有内容都是基于Oracle11g数据库产品的,下面我们就简单介绍一下Oracle11g的系列产品:

企业版(EnterpriseEdition)此版本包含了数据库的所有组件,并且能够通过购买选项和程序包来进一步对其增强。

能支持例如大业务量的在线事务处理OLTP(On-LineTransactionProcessing联机事务处理系统)环境、查询密集的数据仓库和要求苛刻的互联网应用程序。

标准版1(StandardEditionOne)此版本为工作组、部门级和互联网、内联网应用程序提供了前所未有的易用性和性价比。从针对小型商务的单服务器环境到大型的分布式部门环境,该版本包含了构建重要商务应用程序所必需的全部工具。它仅许可在最高容量为2个处理器的服务器上使用,支持Windows/Linux/UNIX操作系统,并支持64位平台操作系统。

标准版(StandardEdition)此版本提供了StandardEditionOne所不具有的易用性、能力和性能,并且利用真正的应用集群(RAC)提供了对更大型计算机和服务集群的支持。它可以在最高容量为4个处理器的单台服务器上、或者在一个支持最多4个处理器的集群上使用,可支持Windows、Linux和UNIX操作系统,并支持64位平台操作系统。

简化版此版本支持与标准版1、标准版和企业版完全兼容的单用户开发和部署。通过将Oracle数据库获奖的功能引入到个人工作站中,该版本提供了结合世界上最流行的数据库功能的数据库,并且该数据库具有桌面产品通常具有的易用性和简单性,可支持Linux和Windows操作系统。

从存储结构上来说,目前流行的数据库主要包含以下两种:

RDBMS:关系型数据库,是指采用了关系模型来组织数据的数据库;

NoSQL数据库,是指那些非关系型的、分布式的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

关系型数据库优点:

1、容易理解

二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。

2、使用方便

通用的SQL语言使得操作关系型数据库非常方便。

3、易于维护

丰富的完整性大大减低了数据冗余和数据部移植的概率。

4、事务安全

所有关系型数据库都不同程度的遵守事物的四个基本属性,因此对于银行、电信、证券等交易型业务是不可或缺的。

关系型数据库的瓶颈:

1、高并发读写需求

网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统型数据库来说,硬盘I/O是一个很大的瓶颈。

2、海量数据的高效率读写

互联网上每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的。

3、高扩展性和可用性

在基于WEB的结构中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像WEBServer和APPLICATIONServer那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。

NoSQL数据库

NoSQL一词首先是CarloStrozzi在1998年提出的。2009年再次提出了NoSQL一词,用于指那些非关系型的、分布式的,且一般不保证遵循ACID原则的数据存储系统。

NoSQL具有以下特点:

1、可以弥补关系型数据库的不足

2、针对某些特定的需求而设计,可以具有极高的性能

3、大部分都是开源的,由于成熟度不够,存在潜在的稳定性和维护性问题。

关系型数据库适用于结构化数据,而非关系型数据库适用于非结构化数据,二者优势互补,相得益彰。

Oracle数据库未来的发展方向是提供结构化、非结构化、半结构化的解决方案,实现关系型数据库和NoSQL共存互补。值得强调的是,目前关系型数据库仍是主流数据库。

虽然NoSQL数据库打破了关系型数据库存储的观念,可以很好地满足WEB2.0时代数据的存储要求,但NoSQL数据库也有自己的缺陷。在现阶段的情况下,可以将关系型数据库和NoSQL数据库结合使用,相互弥补各自的不足。

关于数据库及其代表产品Oracle今天就介绍这么多,有兴趣的可以继续深挖,希望我的介绍能让你对数据库有一个更深入的认识。如果有志于在这方面发展的话,就让我们一起跟往事干杯从头再来。

热点内容
湖南外网ftp服务器租用云主机 发布:2025-05-10 10:59:19 浏览:758
入门编程教学视频 发布:2025-05-10 10:56:41 浏览:914
php开发php开发 发布:2025-05-10 10:37:49 浏览:862
服务器地址s开头 发布:2025-05-10 10:36:59 浏览:841
为什么账号风险不能修改密码 发布:2025-05-10 10:31:23 浏览:69
sql与in相对 发布:2025-05-10 10:31:15 浏览:226
c语言led灯闪烁 发布:2025-05-10 10:26:54 浏览:813
比尔密码价值多少人民币 发布:2025-05-10 10:26:20 浏览:449
怎样用电脑远程连接拨号服务器 发布:2025-05-10 10:17:44 浏览:468
服务器需要什么系统 发布:2025-05-10 10:17:38 浏览:196