时间:2021-07-01 10:21:17 帮助过:9人阅读
在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置:
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
SMON负责系统监视已经一些系统清理及恢复工作,这些工作主要包含:
1.清理暂时空间以及暂时段
SMON负责在数据库启动时清理暂时表空间中的暂时段。或者一些异常操作过程遗留下来的暂时段,比如,当创建索引过程中,创建期间分配给索引的Segment被标志为TEMPORARY,假设Create Index (或rebuild Index等)会话因某些原因异常中断,SMON负责清理这些暂时段。
2.接合空暇空间
在DMT(字典管理表空间)中,SMON负责把那些在表空间中空暇的而且互相是邻近的Extent接合成一个较大的空暇扩展区,这须要表空间的pctincrease设置为非零值。
3.运行实例恢复(Instance recovery)
在实例恢复过程中,SMON的工作包含三个环节:应用Redo运行前滚、打开数据库提供訪问、回滚未提交数据
Tue Apr 22 21:31:10 2008
SMON: enabling cache recovery
Tue Apr 22 21:31:10 2008
ARC0: Completed archiving log 1 thread 1 sequence 238
Tue Apr 22 21:31:11 2008
Undo Segment 1 Onlined
Undo Segment 2 Onlined
Undo Segment 3 Onlined
Undo Segment 4 Onlined
Undo Segment 5 Onlined
Undo Segment 6 Onlined
Undo Segment 7 Onlined
Undo Segment 8 Onlined
Undo Segment 9 Onlined
Undo Segment 10 Onlined
Successfully onlined Undo Tablespace 1.
Tue Apr 22 21:31:11 2008
SMON: enabling tx recovery
Tue Apr 22 21:31:11 2008
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Completed: ALTER DATABASE OPEN
4.离线(Offline)回滚段
在自己主动回滚段管理(AUM)中负责Offline不再须要的回滚段。日志中会记录类似例如以下信息:
Fri May 2 15:43:21 2008
SMON offlining US=11
SMON offlining US=12
SMON offlining US=13
SMON offlining US=14
SMON offlining US=15
SMON offlining US=16
SMON offlining US=17
SMON offlining US=18
SMON offlining US=19
SMON offlining US=20
SMON offlining US=21
SMON offlining US=22
SMON offlining US=23
5.运行并行恢复
下面信息来自9i日志:
Fri May 11 21:30:45 2007
SMON: Parallel transaction recovery tried
Also Record some English Note About SMON:
The SMON background process performs all system monitoring functions on the Oracle database. The SMON process performs a "warm start" each time that Oracle is re-started, ensuring that any in-flight transaction at the time of the last shutdown are recovered. For example, if Oracle crashed hard with a power failure, the SMON process is attached at startup time, and detects any uncompleted work, using the rollback segments to recover the transactions. In addition, SMON performs periodic cleanup of temporary segments that are no longer needed, and also perform tablespace operations, coalescing contiguous free extents into larger extents. 来源: <http://www.eygle.com/archives/2008/05/oracle_smon_process.html>6.维护SMON_SCN_TIME 系统表。
SMON_SCN_TIME 表记录了SCN 与时间的对应关系,由SMON 定期进行定新。并将一些较老的数据定期删除。
(can query by x$kvit)
2) 当DBWR在主LRUW链表上查找已经更新完而正在等待被写入数据文件的buffer header时。假设找到的buffer header的数量超过一定限度(由隐藏參数:_db_writer_scan_depth_pct决定)时,DBWR就不再继续往下扫描了。而转到辅助LRUW链表上将其上的脏数据块写入数据文件。_db_writer_scan_depth_pct表示已经扫描的脏数据块的个数占整个主LRUW链表上buffer header总数的百分比。
3) 假设主LRUW链表和辅助LRUW链表上的脏数据块的总数超过一定限度,也将触发DBWR进程。该限度由隐藏參数:_db_large_dirty_queue决定。
4) 发生增量检查点(incremental checkpoint)或全然检查点(complete checkpoint)时触发DBWR。 5) 每隔三秒钟启动一次DBWR。 6) 将表空间设置为离线(offline)状态时触发DBWR。 7) 发出命令:alter tablespace … begin backup,从而将表空间设置为热备份状态时触发DBWR。 8) 将表空间设置为仅仅读状态时。触发DBWR。 9) 删除对象时(比方删除某个表)会触发DBWR。 3. 系统有多少个数据库写进程: 32位系统。最多有10个进程,名称从dbw0----dbw9 64位系统。最多有20个进程。名称从dbw0----dbw9 ,dbwa -----dbwj. 4.查看dbwr进程数据量: SQL> show parameter db_writer_processes所以。在事务返回成功标志给用户前,必须等待LGWR写完毕。进程通知LGWR写,而且以log file sync事件開始休眠,超时时间为1秒。
Oracle的隐含參数_wait_for_sync參数能够设置为false避免redo file sync的等待,可是就将无法保证事务的恢复性.注意,在递归调用(recursive calls)中的提交(比方过程中的提交)不须要同步redo直到须要返回响应给用户。因此递归调用仅须要同步返回给用户调用之前的最后一次Commit操作的RBA。
存在一个SGA变量用以记录redo线程须要同步的log block number。 假设多个提交在唤醒LGWR之前发生,此变量记录最高的log block number。在此之前的全部redo都将被写入磁盘。 这有时候被称为组提交(group commit). 4)在DBWR写之前 假设DBWR将要写出的数据的高RBA超过LGWR的on-Disk RBA,DBWR将post LGWR去运行写出。 在Oracle8i之前,此时DBWR将等待log file sync事件。 从Oracle8i開始。DBWR把这些Block放入一个defer队列,同一时候通知LGWR运行redo写出。DBWR能够继续运行无需等待的数据写出。 2.log buffer 日志缓冲区。通过lgwr 写到logfile文件里检查点信息包含检查点位置、SCN 、Redo的恢复位置等。
给DBWn发信号,DBWn改写数据。 更新数据文件头 更新控制文件 2.CKPT发送CHECKPOINT信号的触发条件:1)log_checkpoint_timeout时间达到 2)当前redo日志已经写够log_checkpoint_internavl*操作系统块大小 3)redo log switch 4)alter system checkpoint 5)alter tablespace XXX begin backup/end backup的時候 6)alter tablespace ,datafile offline,shutdown immediate,direct read的時候;
当一组重做日志文件被写满后。就開始写下一组,称为日志切换。日志切换以循环方式进行,当最后一组写满后,又開始写第一组。
假设Oracle执行在非归档模式下。就会发生重做日志文件覆盖的问题。
在归档模式下,ARCn进行将把切换后的重做日志文件拷贝到归档日志文件。Oracle保证在一组重做日志的归档完毕之前不会覆盖此组重做日志文件。 2.显示归档进程有多少个 SQL> show parameter log_archive_max_processes NAME TYPE VALUE ------------------------------------ ----------- ------------ log_archive_max_processes integer 4 3.改动归档进程个数: SQL> alter system set log_archive_max_processes=5; 系统已更改。当数据库执行在归档模式下,归档进程负责在日志切换后将已经写满的重做日志文件复制到归档目标.
【ora10,4】oracle后台进程介绍:
标签:查找 padding 写入 new 变量 dex rect 同步 查询