Oracle梳理

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12035968/viewspace-586857/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值