闲谈重做Oracle日志文件

数据库 Oracle
这里介绍重做Oracle日志文件是顺序写入磁盘的,所以尽量不要将重做Oracle日志文件跟数据文件存放在同一个磁盘上。

经过长时间学习重做Oracle日志文件,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。在Windows 2000 Server中可以通过“性能”工具来监控磁盘的活动,对VMS和Unix多数磁盘进行每秒40次以上的I/O是过度的,应当给予调节。

分布I/O以解决磁盘争用

(1)存放重做Oracle日志文件
重做Oracle日志文件是顺序写入磁盘的,所以尽量不要将重做Oracle日志文件跟数据文件存放在同一个磁盘上。如果不得不将数据文件跟重做Oracle日志文件存放在同一个磁盘上,那么该盘空间不应该属于SYSTEM表空间、RBS表空间,以及其它如DATA和INDEX表空间。它们都会直接导致与重做Oracle日志文件之间的争用,而且还会有增加写入日志数据库读写速度的可能性。

(2)存放档案日志文件
在进行大量数据事务处理的时候,数据库选择归档功能将会导致其与重做日志磁盘间的争用。而且当档案重做Oracle日志文件出现空间不够时,将会引起数据库的冻结。所以档案日志文件不能与SYSTEM表空间、RBS表空间或INDEX表空间段存储在同一设备上,也不能与任何联机重做Oracle日志文件存放在同一设备上。它只允许与一些小的、静态的文件存放到一起。

(3)存放数据代码文件
为了减少数据库文件和数据库代码之间的争用,应避免将数据库文件作为代码文件而放在同一磁盘中。如果数据文件不得不放在同一磁盘设备中,那么应当将最不常用的数据文件放在那儿。

(4)减少非Oracle文件的I/O

(5)优化DBWR进程争用

数据库写进程(DBWR)、日志写进程(LGWR)与归档进程(ARCH)三种后台处理进程可以空闲存取磁盘上的数据库文件。这三个进程之间常因同时读写争用而导致I/O争用,而DBWR进程还有自我争用发生的可能。通过对DBWR赋值可以有效的解决DBWR的自我争用问题。

通常在操作系统中为每个实例创建多个DBWR进程,并通过初始参数DB_WRITERS来确定DBWR的个数。建议将赋值在n与2n之间,这里的n是指磁盘的个数。如果赋值不能很好的解决DBWR的内部争用,可以通过异步I/O来减少DBWR的内部争用。由于I/O进程的执行都是并行的,所以异步的I/O仅需一个DBWR即可解决问题。

(6)表数据存放策略
将大表的数据划分成若干小部分,并将这些部分存储在不同磁盘的不同数据文件中。用create tablespace创建表空间,在datafile子句中指定数据文件,每个文件应在不同的盘上。如我们需要在三个磁盘上存放数据文件,可使用如下代码:

  1. create tablespace trip  
  2. datafile 'file_on_disk_1' size 500k,  
  3. 'file_on_disk_2' size 500k,  
  4. 'file_on_disk_3' size 500k; 

(7)指定表空间和表大小
用“create table”创建表,在tablespace子句中指定表空间,在storage子句中指定表的大小,如以下SQL语句:

  1. create table striptab (  
  2. ……  
  3. Tablespace strip 1500k  
  4. Storage (initial 495k next 495k minextent 5 pctincreate 0); 

(8)清除其它的磁盘I/O
数据块空间的分配因数据库中的数据被存放在数据块中,因此如何分配数据块中的空间将直接影响其存取性能。

当用update语句更新一行数据时,可能使该行的数据增加,从而使其在一个数据块内容纳不下。这时,Oracle就寻找能容纳下该行的数据块,如果能找到这样的块,便把该行全部存入新块中(这称为行移动)。如果找不到能容纳该整行的数据块,则把该行切成若干片,然后把每一片分别存放在一个数据块中,于是这样的行被存放在多个数据块中,这种行称为链接行。查询一个链接行则需要多次I/O操作,从而产生I/O瓶颈,这将降低数据的存取性能。以上介绍重做Oracle日志文件。

【编辑推荐】

  1. 闲扯Oracle数据导入
  2. 精炼概括Oracle性能测试
  3. 简介Oracle INDEX提示
  4. 五分钟精通Oracle Hints
  5. 简单介绍Oracle驱动表
责任编辑:佚名 来源: 博客
相关推荐

2010-10-29 14:29:55

Oracle移动重做日

2010-10-29 15:26:29

Oracle日志文件

2011-04-12 10:42:41

Oracle日志文件管理

2010-11-19 13:42:38

2023-03-31 17:33:06

Oracle数据库

2010-04-19 15:53:20

Oracle重做日志

2021-02-19 18:06:57

Oracle日志联机

2009-11-11 09:13:11

Oracle索引扫描

2010-04-20 12:09:31

Oracle数据库

2010-10-29 15:07:33

oracle日志

2010-11-19 13:01:31

Oracle日志文件

2011-08-03 18:42:21

Oracle数据库重做日志

2009-12-18 16:34:47

Fedora proc

2009-11-10 16:00:05

Oracle执行计划

2010-10-29 13:50:21

oracle日志文件

2010-10-27 14:34:56

Oracle日志文件

2018-03-12 14:33:49

数据库MySQL日志

2010-04-14 17:11:13

Oracle管理

2010-10-29 13:55:48

Oracle日志文件

2021-05-20 08:23:13

Oracle数据库rac启用
点赞
收藏

51CTO技术栈公众号