Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183789
  • 博文数量: 60
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 635
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-15 17:12
文章分类

全部博文(60)

文章存档

2013年(2)

2011年(13)

2008年(45)

我的朋友

分类: Oracle

2008-08-30 10:58:20

1 数据库的物理结构和逻辑结构之间的关系由后台进程来维护和实现,后台进程由数据库来管理

 

2 只有当出现问题,才创建跟踪文件。后台进程追踪文件的命令约定和位置随操作系统和数据库版本而定

 

3 一般而言,追踪文件含有后台进程名和后台进程的操作系统进程ID。通过设定BACKGROUND_DUMP_DEST来指定后台进程追踪文件位置

 

4 排除数据库故障时,追踪文件是最重要的

 

5 影响后台进程的严重问题通常记录在数据库的警告日志中,警告日志通常位于BACKGROUND_DUMP_DEST目录下,路径为Oracle_BASE目录下的/admin/INSTANCE_NAME/bdump目录


 

6 可以视图V$BGPROCESS查看数据库中可用后台进程的完整清单

 

7 SMON (系统监控程序)进程执行所需的实例恢复操作(联机重做日志文件),它也可以清除数据库,消除系统不再需要的事务对象,还可以将连续的自由空间合成一个大的自由空间,SMON只合并表空间中的空闲空间,这些表空间的默认pctincrease存储值为0

 

8 PMON (进程监控程序)后台进程清除失败的用户进程,释放用户当时正在使用的资源,同SMON一样,PMON周期性地唤醒检测它是否需要被使用。

 

9DBWR(数据库写入程序)后台进程负责管理数据块缓冲区及字典缓存区的内容,它以批量写入的将修改块从SGA写到数据文件中. 当缓冲区中的一缓冲区被修改,它被标志为弄脏DBWR的主区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时, DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。 ORACLE采用LRULEAST RECENTLY USED)算法(最近最少使用算法)保持内存中的数据块是最近使用的,使I/O最小。

 

在下列情况预示DBWR 要将弄脏的缓冲区写入磁盘

n         当一个器进程将一缓冲区移入弄脏表,该弄脏表达到临界长度时,该服务进程将DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH的值的一半。

 

n         当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没有查到未用的缓冲区,它停止查找并通知DBWR进行写

n         出现超时(每次3秒),DBWR 将通知本身

n         当出现检查点时,LGWR将通知DBWR .

在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数DB-BLOCK-WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DBWRLUR表中查找另外一个弄脏缓冲区。 如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWRLRU表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK-WRITE-BATCH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。

在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲区写入磁盘。

 

10 每个数据库只有一个SMON和一个PMON进程在运行,但可有多个DBWR进程,多个DBWR有助于在进行大的操作期间减少DBWR冲突。

 

11 DBWR的数量由参数DB_WRITER_PROCESSES 决定,命名方式为:DBW1DBW2DBW3…

 

12 LGWR(日志写程序)后台进程负责把联机重做日志缓冲区的内容写入联机重做日志文件,LGWR分批将日志条目写入联机重做日志文件,重做日志缓冲区条目总是包含着数据库的最新状态,这是因为将数据块缓冲区中的修改数据块写入到数据文件中之前,DBWR进程将一直处于等待状态

 

12 LGWR是数据库正常操作时唯一向联机重做日志文件写入内容并从重做日志缓冲区直接读取内容的进程.DBWR对数据文件执行的完全随机访问相反,联机重做日志文件按顺序方式写入,如果联机重做日志文件被镜像,LGWR同时向镜像日志文件中写入内容.

 

以下几个条件触发LGWR执行写操作:

 

1超时(timeout)

 

LGWR处于空闲状态时,它依赖于rdbms ipc message等待,处于休眠状态,直到3秒超时时间到。如果LGWR发现有redo需要写出,那么LGWR将执行写出操作,log file parallel write等待事件将会出现。

 

2缺省的_log_io_size等于1/3 log buffer大小,上限值为1M,此参数在X$KSPPSV中显示的0值,意为缺省值。也就是,LGWR将在Min(1M,1/3 log buffer size)时触发。注意此处的log buffer size是以log block来衡量的。此值通常为512 bytes.

3提交(commit)

当一个事物提交时,在redo stream中将记录一个提交标志。

在这些redo被写到磁盘上之前,这个事物是不可恢复的。所以,在事务返回标志给用户前,必须等待LGWR写完成。进程通知LGWR写,并且以log file sync事件开始休眠,超时时间为1秒。

Oracle的隐含参数_wait_for_sync参数可以设置为false避免redo file sync的等待,但是就将无法保证事务的恢复性。

 

注意管理员在2009年8月13日编辑了该文章文章。

-->
阅读(874) | 评论(0) | 转发(0) |
0

上一篇:Oracle10g归档参数研究

下一篇:Wine安装手记

给主人留下些什么吧!~~