数据库有五个后台进程是必须启动的,否则数据库实例无法启动成功。
这五个进程分别是:DBWR、LGWR、PMON、SMON、CKPT
下面简单说下他们的实际作用
SMON(系统监控进程):
这个其实大家做过PL/SQL开发的都不陌生,一般情况大家数据库报错了突然卡住了,或者电脑突然重启了,实例SGA中所有没有写到磁盘的信息都将丢失。当数据库重启后,系统监控进程将自动恢复实例。
PMON(进程监控进程):
负责服务器进程的管理和维护工作,在进程失败或连接发生异常时该进程负责一些清理工作。
(回滚没有提交的事务、释放所持有的当前的表或行锁、是否进程占用的SGA资源、见识其他Oracle的后台进程,在必要时重启这些后台进程、向OracleTNS监听器注册刚启动的实例,如果监听器在运行,就与这个监听器通信并传送如服务器名和实例的负载等参数,如果没启动,进程监控会定期尝试连接监听器来注册实例)
DBWR(数据库写进程):
负责将脏数据写入到数据库文件中,写入是需要一些条件的(发生检查点事件、脏数据量达到了门限值、数据库缓冲区没有足够的缓存为其他事务提供足够的空间、表空间处于热备份状态、表空间被置为离线状态、表空间被置为只读状态、删除表或者截断表、超时)
LGWR(重做日志写进程):
负责将重做日志缓冲区中的数据写到重做日志文件。此时重做日志缓冲区中的内容是恢复事务所需要的信息,比如用户使用UPDATE语句更新了某行数据,恢复事务所需要的信息就是更新期的数据和更新后的数据,这些信息用于该事务的恢复。LGWR会在一下条件启动进程(当事务提交时、当重做日志缓冲区的1/3被占用时、当重做日志缓冲区有1M的数据时、当数据库写进程把脏数据写到数据文件之前、每3秒钟)
ARCH(归档日志进程):
此进程是一个可选的进程,它是自动启动不是实例启动。作用是把写满的重做日志文件的数据写到一个归档日志中,这个规定日志用作介质故障时的数据库恢复。
1> 如何查看系统的归档模式?
用系统管理员的身份登录
---------------------------------------------------------------------------------------
SQL>archive log list;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的日志序列 3
当前的日志序列 5
-------------------------------------------------------------------------------------
以上说明当前的数据库处于非归档模式,没有启动归档进程,归档文件存储在USE_DB_RECOVERY_FILE_DEST参数指定的目录下。
2> 如何设置归档模式
-------------------------------------------------------------------------------------
SQL> shutdown immediate
数据库已关闭。
已经卸载数据库。
Oracle 例程已经关闭。
SQL> startup mount;
ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务。
SQL> connect /as sysdba;
已连接到空闲例程。
SQL>startup mount;
Oracle 例程已经启动。
Total System Global Area 123561231232bytes
Fixed Size 1231242112bytes
Variable Size 32323232bytes
Database buffers 3 213123bytes
Redo Buffers 3232bytes
数据库装载完毕。
SQL> Alter database archivelog;
数据库已更改。
SQL>alter database open;
数据库已更改。
-------------------------------------------------------------------------------------
按照上述命令即可修改归档模式的状态。然后再用1>的操作去查看归档模式的状态。
CKPT(校验点进程):
校验点是个事件,当数据库写进程把SGA中所有被修改了的数据库高速缓存中的数据写到数据文件上时产生,这些被修改的数据包括已经提交的和未提交的数据。由于引入了校验点,是的所有校验点的所有变化了的数据都写到数据文件中,在实例恢复时就不必恢复校验点之前的重做日志中的数据,加快了系统恢复的效率。