Oracle后台进程

 查看后台进程
$ ps -ef |grep ora_
或者

SQL> select * from v$bgprocess where paddr<>'00';

--1、SMON 系统监控进程: 

作用:
  - 实例恢复
 - 前滚所有重做日志中的改变
        - 打开数据库为了用户能访问
 - 回滚没有提交的事务
 - 连接自由的空间  (coalesce every three seconds)
 - 释放临时表空间 (deallocated)   

自动恢复过程:

SQL> startup force mount;
SQL> alter database noarchivelog;
*
ERROR at line 1:
ORA-38774: cannot disable media recovery
SQL> shutdown immediate;
SQL> startup 

--2、PMON进程监控进程  --->在服务器进程出现故障时执行进程恢复,负责清理内存内存和释放该进程所使用的资源。 
作用分类:
 - 回滚事务
 - 释放锁
 - 释放其他资源
 - 重启死掉的dispatchers
 - 动态注册监听

如:把归档进程停掉,PMON会自动重启归档进程(重启失败的进程)

如:完成rollback动作

如:配置监听的动态注册是PMON完成的,但静态注册是SMON完成的

--3、DBWn 数据库写进程 --->进程将缓冲区中的数据写入数据文件,负责数据缓冲区的管理。
作用分类:
 1) 管理数据缓冲区,以便服务器进程总能找到空闲缓冲区
 2) 将所有修改后的缓冲区中的数据写入数据库文件
 3) 使用LRU算法将最近使用过的块保留在内存中
 4) 通过延迟写来优化磁盘I/O.

 - DBWn写的条件:
     发生检查点
     脏缓存到达限制 (该临界长度由参数DB_BLOCK_WRITE_BATCH决定)
     没有自由的缓存 (服务器进程在LRU表中查找DB_BLOCK_MAX_SCAN_CNT缓冲区)
       超时发生
     RAC ping请求
     表空间离线
     表空间只读
        表被删除或者截断
     开始备份表空间

10g

32bit系统  -->DBW0--WDW9 10个

64bit系统  -->(DBW0--WDW9)+(DBWa--WDW.) 20个

11g

32bit系统  -->DBW0--WDW9 10个

64bit系统  -->(DBW0--WDW9)+(DBWa--WDWz) 36个

默认一个

SQL> show parameter db_w

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_writer_processes                  integer     1
SQL> alter system set db_writer_processes =50 scope=spfile;  --试着更改到50个
SQL> startup force;
SQL> show parameter db_w

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_writer_processes                  integer     36
SQL> select name from v$bgprocess where paddr<>'00' and name like 'DBW_';

NAME
------------------------------
DBW0
DBW1
DBW2
DBW3
DBW4
DBW5
DBW6
DBW7
DBW8
DBW9
DBWa
DBWb
DBWc
DBWd
DBWe
DBWf
DBWg
DBWh
DBWi
DBWj
DBWk
DBWl
DBWm
DBWn
DBWo
DBWp
DBWq
DBWr
DBWs
DBWt
DBWu
DBWv
DBWw
DBWx
DBWy
DBWz

36 rows selected.

--发现只生成36个


--4、LGWR 日志写进程   --->进程将日志数据从日志缓冲区中写入磁盘日志文件中。
LGWR写的条件:
 - 事务提交的时候commit
 - 日志缓冲区达到总数的1/3时
 - 日志大小到1M的时候
 - 每隔三秒
 - 在DBWn进程写之前,DBWR进程需要为检验点清除缓冲区时

每一个Oracle实例只有一个LGWR进程。LGWR将日志信息同步的写入到日志文件组的多个日志成员中,如果组

中的一个成员文件被删除或不可使用,LGWR将日志信息继续写到该组的其他文件中,不影响数据库的运行。 

--5、CKPT CHECKPOINT触发检查点的进程
CKPT(the Checkpoint Process)进程负责向DBWR进程发送信号,要求执行一次检查点,并更新数据库的所有

数据和控制文件。
CheckPoint(检查点),是指有DBWR进程将所有修改过的数据缓冲区写回数据文件。CKPT是可选的,如果没有

CKPT进程,则有LGWR代行这些任务。
作用:
 - 把信号给DBWn
 - 更新数据文件头
 - 更新控制文件
--6、ARCn  归档日志进程
作用:
 - 在归档模式下,ARCn进程将把切换后的重做日志文件复制到归档日志文件
打开归档模式:
SQL> select log_mode from v$database;

LOG_MODE
------------
NOARCHIVELOG
SQL> shutdown immediate;
SQL> startup mount ;
SQL> alter database archivelog;
SQL> alter database open;
SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

SQL> show parameter log_arch
log_archive_format                   string      %t_%s_%r.dbf
log_archive_local_first              boolean     TRUE
log_archive_max_processes            integer     4
log_archive_min_succeed_dest         integer     1
log_archive_start                    boolean     TRUE
log_archive_trace                    integer     0

SQL> alter system set log_archive_max_processes=32;
alter system set log_archive_max_processes=32
*
ERROR at line 1:
ORA-00068: invalid value 32 for parameter log_archive_max_processes, must be between 1 and 30
SQL> alter system set log_archive_max_processes=30; --最大允许有30个归档进程
SQL> show parameter log_arch
log_archive_format                   string      %t_%s_%r.dbf
log_archive_local_first              boolean     TRUE
log_archive_max_processes            integer     30
log_archive_min_succeed_dest         integer     1
log_archive_start                    boolean     TRUE
log_archive_trace                    integer     0

 

 

 

 

你可能感兴趣的:(oracle后台进程)