老鸟全面讲述oracle数据库对象
创始人
2024-06-10 13:01:11
0

Oracle有很多值得学习的地方,这里我们主要介绍Oracle数据库对象,包括介绍Oracle实例等方面。每一个Oracle实例都是由一组Oracle后台进程和SGA的一个内存区组成的。这组后台进程会自动的读写数据库的数据文件,数据库性能可以被这些因素所影响:
◆SGA各部分的分配是否合理,使用效率是否正常;
◆I/O和锁竞争是否较多。

1.SGA的分配及使用效率

分配给每个实例的内存,即SGA的使用效率如何,会大大影响数据库系统的性能。SGA由下列部分组成:共享池、数据块缓冲区、重做日志缓冲区、大池组成。

共享池存放库缓存(存储共享SQL和PL/SQL区)和数据字典缓存(Oracle数据库对象信息)以及会话期间信息(对于MTS)。由于这些信息是应用程序需要经常访问的,因此这些信息需要保持高的命中率。可以通过以下语句来确认共享池数据的命中率:

◆库缓存:

  1. select gethitratio from v$librarycache 应大于90%  
  2. select sum(reloads)/sum(pins) from v$librarycache 应小于1% 

◆数据字典缓存:

  1. select sum(getmisses)/sum(gets) from v$rowcache 应小于15% 

由于程序设计人员的水平参差不齐,可能存在大的匿名块,这会导致SQL不能重用,因此需要找出大的匿名块以转换为存储过程达到重用:

  1. select * from v$sqlarea where command_type=47 and length(sql_text)>500 

而对于一些应用系统非常频繁使用的SQL对象如存储过程、函数、包等,可以通过钉在内存中的方式来防止由于共享池太小被移出:

  1. exec dbms_shared_pool.keep 

◆数据块缓冲区(Db block buffer):

数据块缓冲区存放用户所经常访问的数据文件的数据块内容以及用户修改的数据内容。数据库把数据文件里的内容读到内存中,下次需要时直接从内存中读取,从而减少了磁盘的I/O和响应时间。当然,一般只在比较小的数据表(如常用代码表)才缓存到内存中。

由于数据快缓冲区中不可能存放所有的数据,因此可使用LRU算法来确定移出哪些数据块,但又尽量保证有较高的数据命中率。

查看数据块命中率的SQL语句为:

  1. select 1-(phy.value/(cur.value+con.value)) 
    from v$sysstat cur,v$sysstat con,v$sysstat phy  
  2. where cur.name='db block gets' and con.name='consistent gets' 
  3. and phy.name='physical gets' 

如果这个命中率小于0.85,就要考虑为数据块缓冲区分配更多的内存了。

◆重做日志缓冲区(Log buffer):

重做日志缓冲区存放从用户内存区复制来的每个DML或DDL语句的重做条目。如果这个缓冲区分配太小会导致没有足够的空间来放重做条目而等待。

2.I/O和资源竞争

由于有众多的进程要写数据文件,因此需要通过I/O调整来解决I/O瓶颈问题。如果在设计阶段有效地考虑了表空间的合理分配,就能有效地在一定程度上减少I/O竞争。在数据库运行时,由于数据的动态增长,原来分配给表或索引的空间已经用完,Oracle会自动分配空间给这些Oracle数据库对象。而这个动态分配会对系统性能有所影响,所以要求:

避免动态空间管理

表空间的本地化管理,以减少与数据字典表空间的磁盘竞争。

在系统设计和试运行阶段数据量相对较小,效率低下的SQL可能并不会影响系统响应时间,但当系统数据量增长到一定程度时,需要在系统运行时监控并找出是哪些SQL不能有效使用索引或缺少索引,并进行相应调整:建立索引;修改SQL写法。

另外,在Oracle中,需要采用一些机制来保证Oracle数据库对象在使用期间的稳定性和数据的一致性,如使用锁存器(latch)、锁(lock)等。因此争用和这些机制相关的资源会影响数据库的性能。为了减少这种资源竞争,可以通过调整数据库的相关初始化参数(如db_block_lru_latches、 dml_locks)来减少资源的争用,优化数据库性能。

【编辑推荐】

  1. 老鸟全面讲述oracle数据库对象
  2. 高手谈怎样调整Oracle数据库
  3. 五分钟了解什么是Oracle数据库
  4. Oracle数据库备份与恢复特性浅谈
  5. SQL Server与Oracle数据库事务处理横向对比

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...