ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle梳理

Oracle梳理

原创 Linux操作系统 作者:jerryhui 时间:2009-04-09 13:35:12 0 删除 编辑

Oracle服务器包括:Oracle例程和Oracle数据库。

Oracle例程包括:SGA(系统全局区)和后台进程。

系统全局区:数据库高速缓冲区(db_cache_size),重做日志缓冲区(log_buffer),共享池(shared_pool_size).

后台进程:DBWR,LGWR,PMON,SMON,CKPT.

用户在客户端通过应用程序或者Oracle客户端提交SQL语句,客户端为其分配用户进程,服务器端为其分配服务器进程,用户的SQL操作都是服务器进程处理的。

共享池用于存放最近执行的SQL语句和数据字典信息;数据库高速缓冲区用于存放最近访问的数据块信息。可以使用DB_nk_CACHE_SIZE定义非标准数据高速缓存。

重做日志缓冲区:用于记载例程变化,其尺寸由初始化参数LOG_BUFFER定义。

重做日志用于记载数据库变化,当执行例程恢复或介质恢复时需要使用重做日志。当执行DDL和DML操作时,事物变化会被写入到重做日志缓冲区,而在特定时刻LGWR会将重做日志缓冲区的内容写入重做日志。每个操作线程至少要包含两个重做日志组,并且这些重做日志组是循环使用的。当一组日志写满后,Oracle会自动进行日志切换,并LGWR会将事务变化写入到下一日志组。

LGWR用于将重做日志缓冲区所记载的内容写入到重做日志。当执行DML或DDL语句时,服务器进程首先将事务变化写到重做日志缓冲区,然后才会修改数据高速缓存。注意,Oracle总是“先日志后修改”。也就是说在DBWR工作之前,LGWR首先将事务变化写入到重做日志。

在以下情况中LGWR进程会开始工作:

1.提交事务(COMMIT)

2.每隔三秒钟

3.当重做信息超过1M时

4.重做日志缓冲区已有1/3填满

5.在DBWR进程将脏缓冲区写入到数据文件之前

当Oracle处于ARCHIVELOG模式时,当后台进程LGWR进行日志切换时,那么后台进程ARCH会自动将重做日志内容复制到归档日志中。

当重做日志写完之后,数据库开始写数据文件。

DBWR用于将数据高速缓冲区的脏缓冲区数据写入到数据文件中。当执行DML操作时,服务器进程会修改缓冲区,并且将这些缓冲区标识为“脏缓冲区”,将来这些脏缓冲区会由后台进程DBWR写入到数据文件中。

默认情况下只有一个DBW0进程,可以设置初始化参数db_writer_processes定义最多10个DBWR进程(DBW0-DBW9)。在以下情况时,DBWR开始工作:

1.系统发出检查点(checkpoint)

2.服务器进程不能找到空闲缓冲区

3.删除或截断表

4.使表空间正常脱机(Alter Table....Offline Normal)

5.开始表空间备份(Alter Tablespace....Begin Backup)

CKPT(Checkpoint Process):用于发出检查点(Checkpoint),并且检查点会同步数据库的数据文件,控制文件和重做日志文件。当发出检查点时,后台进程CKPT会将检查点时刻的SCN(System Change Number)写入到控制文件和数据文件头部,同时促使后台进程DBWR将所有脏缓冲区数据写入到数据文件中。

当发出检查点时,不仅后台进程CKPT和DBWR要开始工作,而且LGWR也会将重做日志缓冲区写入到重做日志,从而确保了数据文件,控制文件和重做日志的一致性。在以下情况中CKPT会开始工作:

1.日志切换

2.关闭例程(Shutdown Abort例外)

3.手工检查点操作(Alter System Checkpoint)

4.由初始化参数Fast_start_mttr_target强制发出检查点

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12035968/viewspace-586857/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle梳理二
请登录后发表评论 登录
全部评论

注册时间:2009-03-12

  • 博文量
    18
  • 访问量
    61648