标签:
SMON系统监控进程
作用:实例的恢复 --> 1、前滚所有重做日志中的改变
2、打开数据库为了用户能够访问
3、回滚没有提交的事物
--> 实例恢复不需要DBA操作,由oracle自动完成
--> 在执行startup force命令后,会进行实例恢复操作
--> 相关命令:
alter database archivelog;
shutdown mount
shutdown immediate
startup mount
--> 遇到报错:ERROR at line 1: ORA-00265: instance recovery required , cannot set ARCHIVELOG mode
解决:先将数据库关闭,再启动
暗合自由的空间(不重要)
释放临时表空间(不重要)
PMON进程监控进程
作用:清除失败的进程 --> 1、回滚事务,即:roolback
2、释放锁,自动释放
3、释放其他资源
4、重启死掉的服务
5、动态注册监听器
--> 操作中误操作kill掉PMON进程后,暂时在进程列表中还会看到该进程,但是当操作过程中触发PMON时,
数据库就会找不到PMON进程,便会报错,导致整个实例都被关闭
DBWR数据库写进程
作用:用户修改数据并且提交之后,被修改的数据保存在database buffer cache中,通过该进程将更新的数据写入物理磁盘的数据文件中
什么时候会触发DBWR进程: 1、CKPT进程触发之后,先触发LGWR进程,然后再触发DBWR进程
2、数据库缓冲区中的脏缓存到达参数限制时
3、没有自由的缓存
4、超时发生
5、RAC ping请求
6、表空间离线
7、表空间只读
8、表被删除或者截断
9、开始备份表空间DBWR的个数:根据参数文件设定
32位系统,默认的DBWR个数是10个(命名:DBW0 -- DBW9),最多可以跑10个进程
64位系统,默认的DBWR个数是10个(命名:DBWa -- DBWi),最多可以跑20个进程
查看后台进程语句:
select name from v$bgprocess where paddr <> ‘00‘;
查看当前设定DBWR进程的个数语句:
show parameter db_w
修改DBWR进程的个数语句:
alter system set db_writer_processes=2 scope=spfile;
startup force;-->恢复实例
流程:database buffer cache --> dbwr --> database files
LGWR日志写进程
作用:将保存在redo log buffer中的日志信息,通过该进程写入物理磁盘的日志文件中
什么时候会触发LGWR进程: 1、commit提交的时候
2、redo log buffer空间达到三分之一满的时候
3、日志文件的大小为1M的时候
4、每隔三秒钟的时候
5、在DBWR进程写之前的时候
日志写操作必须在数据写之前:因为日志的作用是为了数据库的恢复,如果先执行数据写操作,此时服务器出现异常了,
在根据日志做数据恢复时,由于刚才的操作没有记录到日志中,所以不能恢复服务器出现异常之前的数据写的操作,
因此日志写操作必须在数据写操作之前。
LGWR的个数:默认为1个
优化方面:由于日志写操作在数据写操作之前,所以在IO性能方面一定要快,假设数据写的IO性能很快,而日志写操作的性能不快,
也会导致整体性能很低
查看日志缓冲区空间语句:show parameter log_buff
流程: log_buff --> lgwr --> log files
CKPT检查点进程
概念:在oracle中用来保证日志文件、数据文件和控制文件之间实现同步的后台进程,该进程必须要正常
作用:1、给DBWR提供触发信号
2、更新所有数据文件的型号
3、更新所有控制文件的信息
其他后台进程
1、归档进程(ARCH/ARCn):如果oracle的数据文件丢失或损坏,数据库就要进行完全恢复,
此时数据库就应该运行在归档模式下,只有在归档模式下才会启动归档进程。
2、日志切换:在oracle中,重做日志文件被划分为若干个组。当一组重做日志文件写满后,oracle就开始写下一组重做日志,这就成为日志切换。
3、归档日志:日志切换是以循环的方式进行的,就是当最后一组日志文件被写满后,又开始写第一组日志文件。因此如果只有重做日志文件(即数据库运行 在非归档方式下),当遇到数据文件丢失或损坏时,oracle系统就很难保证完全恢复数据库中的数据,因为此时所需要的重做记录因重做日志循环而被覆盖掉了。在归档方式下,ARCn进程将会把切换后的重做日志文件内容复制到归档日志文件中,可以把归档日志文件看成是重做日志文件的备份,但归档日志文件是脱机的,除了在进行复制时,oracle数据库在正常运行时时不会关注归档日志文件的,oracle系统确保在一组重做日志的归档操作完成之前不会重新使用该组重做日志。在oracle数据库中归档操作一般是自动执行的。利用这些归档日志文件,oracle系统就能确保在遇到数据文件丢失或损坏后可以完全恢复数据库中的数据。
4、查看数据库是否为归档模式语句:
select log_mode from v$database;
-->非归档模式:NOARCHIVELOG
5、切换成归档模式步骤:
(1)关闭数据库 shutdown immediate
(2)将数据库启动到mount状态 startup mount
(3)设置数据库模式为归档 alter database archivelog;
(4)打开数据库 alter database open;
(5)查看数据库是否为归档模式 select log_mode from v$database;
6、归档进程的个数语句:
show parameter log_archiv
7、修改归档进程个数语句:最多只能设置30个
alter system set log_archive_max_processes=2;
8、将日志归档语句(即:将重做日志内容复制到归档日志文件中,每执行一次,就会新增一个归档日志文件)
alter system switch logfile;
9、查看归档日志文件所在路径语句:
show parameter db_rec;
10、其他后台进程:
Pnnn:并行进程,用于并行查询或者并行DML操作
Dnnn:调度器进程,用于共享模式连接的用户需求调度
Snnn:共享服务进程,用于共享模式连接的用户需求操作
MMAN:内存管理进程,用于10g的内存自动管理
MMON:内存监视进程,用于10g的性能优化中的统计信息自动收集
RECO:分布式恢复进程,用于完成用户自定的自动执行任务
Jnnn:任务执行进程,用于完成用户定制的自动执行任务
CJQO:任务调度进程,用于在用户规定的时间唤醒任务进程
标签:
原文地址:http://www.cnblogs.com/login2012/p/5496548.html