oracle有三种进程---用户进程,服务器进程和后台进程。
下面分别讲讲这三种进程:
(1)用户进程:用户进程是一个需要和oracle服务器进行交互的程序。当用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程(如客户端的SQLPLUS程序),用户进程位于客户端,服务器进程和后台进程位于服务器端。
(2)服务器进程:服务器进程用于处理连接到该实例的用户进程的请求,当用户连接至oracle数据库实例创建会话时,即产生服务器程序,服务器进程需要消耗pga。
(3)后台进程:后台进程是oracle数据库为了保持最佳系统性能和协调多个用户请求而设置的,oracle实例启动时即创建了一系列的后台进程,oracle实例常见的后台进程包括SMON,PMON,DBWR,LGWR,ARC,CKPT。
下面简要讲讲oracle的后台进程:
(1)SMON系统监控进程,实时监控整个oracle的状况。
.例程恢复
-前滚重做日志中的更改
-打开数据库供用户访问
-回退未提交的事务处理
.合并空闲空间
.回收临时段
(2)PMON进程监控进程,监控用户进程是否正常
.回退事务处理
.释放锁
.释放其他资源
.重新启动已失效的调度程序
(3)DBWR数据写入进程,将修改的数据写回到数据文件
在以下情况写入:
.出现检查点
.当数据缓冲区达到阈值
.没有空闲缓冲区
.出现超时
.执行了RAC ping请求
.表空间处于offline状态
.表空间处于read only状态
.对表执行drop或truncate操作
.对表空间执行begin backup操作
(4)LGWR日志写入进程,负责将日志缓冲区中的日志数据写入日志文件
LGWR在以下情况写入:
.提交时
.三分之一填满
.有1MB的重做时
.每隔3秒
.DBWn写入前
(5)CKPT检查点进程,在实例崩溃后提交快速恢复的进程
.在发生检查点的时候发信号给DBWn
.使用检查点信息更新数据文件头和控制文件
如果想要查看这些后台进程有两种方法:
(1)在终端输入ps -ef|grep ora_
[root@localhost ~]# ps -ef |grep ora_
oracle 20033 1 0 23:34 ? 00:00:00 ora_pmon_orcl
oracle 20035 1 0 23:34 ? 00:00:00 ora_vktm_orcl
oracle 20039 1 0 23:34 ? 00:00:00 ora_gen0_orcl
oracle 20041 1 0 23:34 ? 00:00:00 ora_diag_orcl
oracle 20044 1 0 23:34 ? 00:00:00 ora_dbrm_orcl
oracle 20046 1 0 23:34 ? 00:00:00 ora_psp0_orcl
oracle 20048 1 0 23:34 ? 00:00:00 ora_dia0_orcl
oracle 20050 1 0 23:34 ? 00:00:00 ora_mman_orcl
oracle 20054 1 0 23:34 ? 00:00:00 ora_dbw0_orcl
oracle 20056 1 0 23:34 ? 00:00:00 ora_lgwr_orcl
oracle 20058 1 0 23:34 ? 00:00:00 ora_ckpt_orcl
oracle 20060 1 0 23:34 ? 00:00:00 ora_smon_orcl
oracle 20062 1 0 23:34 ? 00:00:00 ora_reco_orcl
oracle 20064 1 0 23:34 ? 00:00:00 ora_mmon_orcl
oracle 20067 1 0 23:34 ? 00:00:00 ora_mmnl_orcl
oracle 20069 1 0 23:34 ? 00:00:00 ora_d000_orcl
oracle 20071 1 0 23:34 ? 00:00:00 ora_s000_orcl
oracle 20186 1 0 23:34 ? 00:00:00 ora_arc0_orcl
oracle 20188 1 0 23:34 ? 00:00:00 ora_arc1_orcl
oracle 20190 1 0 23:34 ? 00:00:00 ora_arc2_orcl
oracle 20192 1 0 23:34 ? 00:00:00 ora_arc3_orcl
oracle 20195 1 0 23:34 ? 00:00:00 ora_qmnc_orcl
oracle 20223 1 0 23:34 ? 00:00:00 ora_cjq0_orcl
oracle 20242 1 0 23:34 ? 00:00:00 ora_vkrm_orcl
oracle 20283 1 0 23:34 ? 00:00:00 ora_q000_orcl
oracle 20285 1 0 23:34 ? 00:00:00 ora_q001_orcl
oracle 21103 1 0 23:44 ? 00:00:00 ora_smco_orcl
oracle 21111 1 0 23:44 ? 00:00:00 ora_w000_orcl
root 21361 21341 0 23:48 pts/4 00:00:00 grep ora_
(2)在sqlplus查看v$process动态性能视图:
SYS@orcl 04-SEP-14>select pname,spid from v$process;
PNAME SPID
----- ------------------------
PMON 20033
VKTM 20035
GEN0 20039
DIAG 20041
DBRM 20044
PSP0 20046
DIA0 20048
MMAN 20050
DBW0 20054
LGWR 20056
PNAME SPID
----- ------------------------
CKPT 20058
SMON 20060
RECO 20062
MMON 20064
MMNL 20067
D000 20069
S000 20071
20184
ARC0 20186
ARC1 20188
ARC2 20190
PNAME SPID
----- ------------------------
ARC3 20192
QMNC 20195
20216
20219
CJQ0 20223
20225
20227
20229
20231
20233
VKRM 20242
PNAME SPID
----- ------------------------
Q000 20283
SMCO 21103
W000 21111
20465
20270
Q001 20285
20481
20507
J000 22588
J001 22590
22383
PNAME SPID
----- ------------------------
22387
22389
46 rows selected.