最近遇到Oracle数据库运行过程实例进程由于某种原因导致中止的问题,专门看了下正常Oracle数据库启动后的进程有哪些,查阅资料了解了下各进程的作用,记录如下。
oracle 3032 1 0 07:36 ? 00:00:00 ora_pmon_orcl
oracle 3034 1 0 07:36 ? 00:00:00 ora_vktm_orcl
oracle 3038 1 0 07:36 ? 00:00:00 ora_gen0_orcl
oracle 3040 1 0 07:36 ? 00:00:00 ora_diag_orcl
oracle 3042 1 0 07:36 ? 00:00:00 ora_dbrm_orcl
oracle 3044 1 0 07:36 ? 00:00:00 ora_psp0_orcl
oracle 3046 1 0 07:36 ? 00:00:00 ora_dia0_orcl
oracle 3048 1 0 07:36 ? 00:00:00 ora_mman_orcl
oracle 3050 1 0 07:36 ? 00:00:00 ora_dbw0_orcl
oracle 3052 1 0 07:36 ? 00:00:00 ora_lgwr_orcl
oracle 3054 1 0 07:36 ? 00:00:00 ora_ckpt_orcl
oracle 3056 1 0 07:36 ? 00:00:00 ora_smon_orcl
oracle 3058 1 0 07:36 ? 00:00:00 ora_reco_orcl
oracle 3060 1 0 07:36 ? 00:00:00 ora_mmon_orcl
oracle 3062 1 0 07:36 ? 00:00:00 ora_mmnl_orcl
oracle 3064 1 0 07:36 ? 00:00:00 ora_d000_orcl
oracle 3066 1 0 07:36 ? 00:00:00 ora_s000_orcl
oracle 3108 1 0 07:36 ? 00:00:00 ora_qmnc_orcl
oracle 3122 1 0 07:36 ? 00:00:00 ora_cjq0_orcl
oracle 3128 1 0 07:36 ? 00:00:00 ora_q000_orcl
oracle 3130 1 0 07:36 ? 00:00:00 ora_q001_orcl
oracle 3133 1 0 07:36 ? 00:00:00 /home/oracle/app/oracle/product/11.2.0/dbhome_1//bin/tnslsnr LISTENER -inherit
oracle 3568 1 0 07:37 pts/1 00:00:00 /home/oracle/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/emwd.pl dbconsole /home/oracle/app/oracle/product/11.2.0/dbhome_1/localhost_orcl/sysman/log/emdb.nohup
oracle 3584 3568 39 07:37 pts/1 00:00:38 /home/oracle/app/oracle/product/11.2.0/dbhome_1/jdk/bin/java -server -Xmx384M -XX:MaxPermSize=400M -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -DORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 -Doracle.home=/home/oracle/app/oracle/product/11.2.0/dbhome_1/oc4j -Doracle.oc4j.localhome=/home/oracle/app/oracle/product/11.2.0/dbhome_1/localhost_orcl/sysman -DEMSTATE=/home/oracle/app/oracle/product/11.2.0/dbhome_1/localhost_orcl -Doracle.j2ee.dont.use.memory.archive=true -Djava.protocol.handler.pkgs=HTTPClient -Doracle.security.jazn.config=/home/oracle/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_localhost_orcl/config/jazn.xml -Djava.security.policy=/home/oracle/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_localhost_orcl/config/java2.policy -Djavax.net.ssl.KeyStore=/home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/config/OCMTrustedCerts.txt-Djava.security.properties=/home/oracle/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/home/config/jazn.security.props -DEMDROOT=/home/oracle/app/oracle/product/11.2.0/dbhome_1/localhost_orcl -Dsysman.md5password=true -Drepapi.oracle.home=/home/oracle/app/oracle/product/11.2.0/dbhome_1 -Ddisable.checkForUpdate=true -Doracle.sysman.ccr.ocmSDK.websvc.keystore=/home/oracle/app/oracle/product/11.2.0/dbhome_1/jlib/emocmclnt.ks -Dice.pilots.html4.ignoreNonGenericFonts=true -Djava.awt.headless=true -jar /home/oracle/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/home/oc4j.jar -config /home/oracle/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_localhost_orcl/config/server.xml
oracle 3598 3568 1 07:37 pts/1 00:00:01 /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/emagent
oracle 4019 1 0 07:37 ? 00:00:00 oracleorcl (LOCAL=NO)
oracle 4024 1 1 07:37 ? 00:00:01 oracleorcl (LOCAL=NO)
oracle 4128 1 0 07:37 ? 00:00:00 oracleorcl (LOCAL=NO)
oracle 4133 1 1 07:37 ? 00:00:00 oracleorcl (LOCAL=NO)
oracle 4140 1 0 07:37 ? 00:00:00 oracleorcl (LOCAL=NO)
oracle 4172 1 14 07:37 ? 00:00:08 oracleorcl (LOCAL=NO)
oracle 4214 1 5 07:37 ? 00:00:02 oracleorcl (LOCAL=NO)
oracle 4216 1 0 07:37 ? 00:00:00 oracleorcl (LOCAL=NO)
oracle 4218 1 0 07:37 ? 00:00:00 oracleorcl (LOCAL=NO)
oracle 4266 1 3 07:38 ? 00:00:00 ora_j000_orcl
oracle 4268 1 0 07:38 ? 00:00:00 ora_j001_orcl
一、监听服务
这是监听进程,用来监听客户端请求的。可以看到其端口就是Oracle连接的默认端口1521。
监听进程是独立于oracle之外的进程。监听进程不依赖于oracle实例存在,是独立于oracle实例之外的进程,实例的启停并不会影响监听进程,监听进程只跟内核对接,然后将数据包转发给实例。监听进程只是实例和linux内核之间的桥梁。
相关命令:
lsnrctl status 查看监听服务状态
lsnrctl start 启动监听服务
lsnrctl stop 停止监听服务
二、OEM(Oracle Enterprise Manager)服务
OEM是采用直观而且方便的图像化界面来控制和管理ORACLE数据库的工具集,它包含大量对DBA有用的工具。在oracle中,数据库管理和操作都可以使用OEM来完成,如创建用户和角色,权限分配,创建方案对象,进行存储管理等。
使用火狐浏览器访问:https://ip:1158
相关命令
emctl stop dbconsole 关闭OEM服务
emctl start dbconsole 启动OEM服务
emctl status dbconsole 查看OEM服务状态
三、Oracle实例相关进程
实际生产环境OEM服务不是必须的,可以暂时关闭。关闭后Oracle剩下的进程如下。以下除监听进程外就是Oracle后台进程。后台进程是oracle实例运行起来后自动运行的进程,完成oracle的基本功能。
必需:dbwn、ckpt、lgwr、smon、pmon、reco
可选:arcn、asmb、rbal、其他
1、dbw0进程
必须存在的进程 --> database writer n --> 数据写进程,在进程中看到n,意思就是该类型进程可以存在多个,并且进程之间的关系为并发
2、lgwr进程
lgwr --> log writer进程,负责将sga中的redo log buffer中的redo log落盘到redo log file中。实现和保证redo log的持久化。
3、ckpt进程(检查点进程)
ckpt --> checkpoint。这个进程的作用就是专门设置和维护检查点。检查点的作用就是为了尽量缩短数据库恢复时间。
4、smon进程(系统监视器进程)
smon进程 --> system moniter系统监视器进程。
查看oracle实例进程时,仅需要查看smon进程即可。smon进程是整个oracle实例的主进程。他的作用就是管理oracle中的其他进程。
oracle实例中的进程都是独立运行的,这些进程的ppid都是1。换句话将这些进程的父进程都是linux操作系统的主进程。
kill smon 会导致实例结束的。
kill 非smon 实例不会结束,且会被自动运行起来。
5、pmon进程(进程监视器进程)
pmon --> 进程监视器进程。这个的作用是监视进程的。
smon/pmon本身作为监视器进程都会对其他进程进行监视。
smon --> system --> 监视的是后台进程
pmon --> process --> 监视的是服务器进程
客户连接实例,会创建对应的服务器进程,可以执行的SQL语句等都是在服务器进程中完成的。客户连接中,事务执行期间,实际上都是服务器进程在工作。
6、arcn进程(归档进程)
arcn --> archive归档 --> 归档进程,并不是oracle必须的进程
归档进程:负责将redo log file中的数据转储到归档日志文件中