oracle进程结构中完成更新,Oracle 进程结构
Oracle进程结构
进程是动态创建的,完成任务后就消亡;而程序是静态的实体,程序是可以复制、编辑的。进程强调的是执行过程,而程序仅仅是指令的有序集合;进程在内存中,程序在外存中。
ORACLE分为用户进程和ORACLE进程。
l用户进程
当用户执行一个基于ORACLE数据库的应用程序时,客户端就会创建一个ORACLE的用户进程(如运行的sqlplus、OEM都叫用户进程)。
用户进程通过连接登录到ORACLE服务器,ORACLE服务器上就产生一个对应的服务器进程(Oracle服务器的“外交部”);该服务器进程代表运行在客户端的用户进程与服务器通信。
lORACLE进程
Oracle进程可以分为服务器进程和后台进程服务器进程。
²服务器进程
主要是服务于客户端的用户进程。服务器进程又可以分为:专用服务器进程(只为一个用户进程提供服务)和共享服务器进程(可以为多个用户进程提供服务)。
²服务器进程的任务:
A.解析并执行用户所提交的SQL语句;
B.搜索SGA区的数据库缓存,决定是否读取数据文件。如果数据块不在SGA区的数据库缓存中,就将其从数据文件中读入;
C.将查询执行的结构数据返回给用户。
²后台进程(BackgroundProcess)
服务器进程是由后台进程提供支持的,后台进程主要完成的任务是:
A.在内存和外存之间进行I/O操作;
B.监视各个进程的状态;
C.协调各个进程的任务;
D.维护系统的性能;
E.保证系统的可靠性;
可使用以下查询来检查数据库中启动的后台进程个数及其名称
SQL> SELECT * FROM V$BGPROCESS
常用的后台进程:
nSMON(SystemMonitor)系统监视进程:
ü启动条件:随ORACLE数据库系统启动;运行期间ORACLE可以唤醒SMON进程,以检查是否需要执行它所负责的工作;如果其他任何进程需要使用SMON进程的功能时,将随时唤醒SMON进程。
ü作用:
A、在例程启动时负责对数据库进行恢复。如果是非正常关闭数据库,则当下次启动例程时,SMON进程会自动读取重做日志文件,对数据库进行恢复(即执行将已提交的事务写入数据文件中、回退未提交的事务等操作);
B、清除已经分配但不再使用的表空间中的临时段(如果表空间中有大量的盘区,则清除就会花费大量时间,就会影响数据库启动时的性能)。
C、合并基于数据字典管理的各个表空间中位置相邻的空闲盘区,使之更容易分配。
ü备注说明:如果某个表空间的存储参数PCTINCREASE被设置为0,则SMON进程就不会对该表空间中的空闲盘区进行合并操作。
nPMON(Process Monitor)进程监视进程;
ü启动条件:
A、需要启动、清除中断或失败的用户进程时(即对ORACLE数据库的连接发生崩溃、挂起或其他非正常终止等);清除操作还包括非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA区、PGA区的资源。
B、运行期间ORACLE可以唤醒PMON进程,以检查是否需要执行它所负责的工作;如果其他任何进程需要使用PMON进程的功能时,将随时唤醒PMON进程。
C、PMON是在单独的数据库中启动的,而分布式数据库中是RECO恢复进程来完成PMON进程的任务的。
ü作用:
A、恢复中断或失败的用户进程、服务器进程;
B、清除非正常中断的进程留下的孤儿会话;
C、回退未提交的事务,重置活动事务的状态,从系统活动进程中删除用户进程标识号(ID);
D、释放进程所占用的各种资源,并通过自动回退事务来解决死锁,释放用户所拥有的表和行上的锁;
E、定期检查服务器进程和调度进程,如果它们因失败而被异常挂起,则自动重新启动它们。
nDBWn(Database Writer)数据库写进程;
ü启动条件
A、当DIRTY列表中的脏缓存块达到一定数量(即初始化参数db_block_write_batch指定值的一半),DBWn进程将脏缓存块写入数据文件(同时ORACLE将对控制文件和数据文件的头部的同步序号SCN进行修改,记录下当前数据库的结构和状态,以保证数据库中物理文件之间的同步);
B、当在LRU列表中找到一定数量(即初始化参数db_block_max_scan指定的值)的空闲缓存块,但还不够时,为获得更多的空闲缓存块,DBWn进程将脏缓存块写入数据文件;
C、当出现检查点LGWR进程通知DBWn进程进行写操作;
D、一个表空间被置于备份模式、脱机或只读状态时;
E、DBWn进程出现超时(Time_out)即大约3秒未启动时。
ü作用:
A、管理高速缓冲区,保证服务器进程总能找到空闲缓存块,以便保存从数据文件中读取的数据块;
B、将DIRTY列表中的脏缓存块写入到数据文件中,获取更多的空闲缓存块;
C、使用LRU算法将最近正在使用的缓存块即命中块,继续保留在LRU列表中,不必重新读取数据文件;
D、DBRn进程通过延迟写入来优化磁盘I/O操作,而服务器进程只在数据高速缓存区中做修改。
ü备注说明:
A、DBWn进程数最好不要超过CPU的个数,因为每个处理器同时只能运行1个DBWn进程;
B、ORACLE默认启动一个DBWn进程,启动受初始化参数(DB_WRITER_PROCESS)的限制。可以设置初始化参数DB_BLOCK_CHECKPOINT_BATCH来设置每当出现检查点时,DBWn进程写入的脏缓存块的最大数量。增大该值,可以延长启动DBWn进程的时间间隔。
nLGWR(Log Writer)日志写进程;
ü启动条件:
A、用户进程通过COMMIT语句提交当前事务;
B、重做日志高速缓存被写满1/3时,或含有1MB的重做信息时;
C、DBWn进程需要为检查点清除脏缓存块,即将脏缓存块写入数据文件时;
D、LGWR进程出现超时,即大约3秒为启动LGWR进程时。
ü作用:
A、负责管理重做日志高速缓冲区,即将重做日志记录从高速缓存区写入到重做日志文件;
B、如果例程没有启动CKPT检查点进程,则LGWR进程就来完成检查点执行任务。
ü备注说明:
A、每个例程只有一个LGWR进程;
B、LGWR进程先于DBWn进程启动。
nCKPT (CheckPoint)检查点进程
ü启动条件:
A、关闭数据库时;
B、一个重做日志文件被写满而产生日志切换时;
C、满足参数LOG_CHECKPOINT_TIMEOUT(指定检查点之间的时间间隔(以秒为单位));
D、参数LOG_CHECKPOINT_INTERVAL(指定当一定数量的操作系统数据块(非ORACLE数据块)被写入重做日志文件时,将触发一个检查点)
ü作用:
A、触发DBWn进程,使其将自上一个检查点之后的全部已经修改的数据块(脏缓存块)写入数据文件中;
B、保持数据库高速缓冲区与数据文件之间数据同步(用最新的检查点信息更新控制文件和数据库文件的文件头);
C、检查点信息会在恢复数据库期间使用,当SMON进程恢复数据库时,SMON会决定最后在数据文件中的检查点。(必须将数据文件的文件头和控制文件中最后记录的检查点之后的联机重做日志文件中的事务编号重新提交到数据文件中。)
ü备注说明:
A、不要设置不必要的检查点,或迫使不需要的检查点发生;
B、缩短检查点执行的间隔,可以缩短数据库恢复时所需的时间;
C、如果检查点执行的间隔短,将会产生过多的I/O操作;
D、应该使LOG_CHECKPOINT_INTERVAL设置的操作系统块数与重做日志文件的大小相匹配。
üORACLE在不同的时刻执行不同级别的检查点,故检查点有可分为4种:
A、数据库检查点:每一次重做日志文件切换时都执行数据库检查点;使用NORMAL\TRANSACTIONAL\IMMEDIATE选项关闭数据库时,会执行一个检查点;此时DBWn进程将数据高速缓存区中的所有脏缓存块都写入数据文件中。
B、表空间检查点:将一个表空间设置为脱机状态或备注为BACKUP模式,会执行一个表空间检查点;此时DBWn只会将高速缓存区中的与该表空间相关的脏缓存块写入数据文件中。
C、手动检查点:使用ALTER SYSTEM CHECKPOINT语句来手动设置一个检查点。
D、时间检查点:即每隔多久执行一次检查点。可以通过调整(LOG_CHECKPOINT_TIMEOUT和LOG_CHECKPOINT_INTERVAL)参数来改变检查点实行的间隔。
nARCn(Archiver)归档进程;
ü启动条件:
发生重做日志切换时(必须是归档模式下,并且初始化参数LOG_ARCHIVE_START为TRUE ,如果在归档模式下该参数是FALSE当重做日志文件全部写满,数据库将会被挂起。)
ü作用:避免数据库崩溃无法恢复。
ü备注说明:
A、一个例程默认只会启动一个归档进程ARCn,当ARCn正在归档一个重做日志文件时,任何其他进程都不能访问这个重做日志文件。
B、为了避免LGWR进程使用正在归档中的重做日志文件造成数据库被挂起,LGWR进程会根据需要主动启动更多的归档进程。ORACLE最多可以启用10个ARCn。
C、初始化参数LOG_ARCHIVE_DEST指定了归档日志文件所在的位置;LOG_ARCHIVE_FORMAT指定了归档日志文件的命名格式规则。
nRECO(Recoverer)恢复进程
nLCKn(Lock) 锁进程
nRVWR(Recovery Writer)闪回恢复进程
nCTWR(Change Tracking Writer)闪回变化跟踪写进程
nCJQn(Job Queue Monitor)作业队列监视进程
nJnnn(Job Queue)作业队列进程
nDnnn(Dispatcher)调度进程
nSnnn(Shared Server)共享服务器进程
²综合案例
案例:查询后台进程的编号,名称和描述。
col spid format a10;
col name format a10;
col description formata30;
select p.spid, b.name,b.description from v$bgprocess b, v$process p where p.addr=b.paddr;
案例:查询
col spid format a10;
col username formata10;
col terminalformat a10;
col program format a10;
select spid, username,terminal, program from v$process;
案例:查看用户进程情况。Username表示用户名,process记录操作系统进程号。
1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接1。
2) 在sqlplus中执行下面命令:
col username formata10;
col process format a10;
col machine format a10;
col program format a10;
select username,process, machine, program from v$session where username is not null;
3) 运行cmd,输入sqlplus/nolog,输入conn scott/tiger as sysdba;建立连接2。
4) 在第一步建立的连接1中再执行下面的命令:
select username,process, machine, program from v$session where username is not null;
5) 对比以上两个查询结果。
oracle进程结构中完成更新,Oracle 进程结构相关推荐
- oracle linux 5.8 更新,Oracle Linux迎来UEK R5U5企业内核更新
原标题:Oracle Linux迎来UEK R5U5企业内核更新 甲骨文在一篇官方博客文章中,宣布了面向企业级 Linux 内核(Unbreakable Enterprise Kernel)Relea ...
- Oracle 应用归档 卡死,关于Oracle归档进程的运行机制
前几天有位朋友在留言板上提了这样一个问题: Fri May 25 20:46:06 2007 //自动备份controlfile Starting control autobackup Control ...
- Oracle查看ogg延时,OGG复制进程延迟不断增长
集团某在线系统使用OGG做了同步复制用于二期业务生产使用.有同事过来说复制进程有点异常 -bash-3.2$ ogg Oracle GoldenGate Command Interpreter for ...
- oracle EBS查进程,Linux下使用ps命令来查看Oracle DB以及EBS相关的进程
Linux下可以使用ps命令来查看Oracle相关的进程 使用ps来查看Oracle数据库相关的服务 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [or ...
- oracle数据库进程pmon,【案例】Oracle进程异常 pmon和LISTENER进程负载均比较高的解决办法...
天萃荷净 运维DBA反映监控到Oracle数据库的pmon和LISTENER进程负载均比较高,查看alert日志文件发现动态注册监听太多,分析原因为REMOTE_LISTENER设置不当导致 1.Or ...
- 查看oracle 导出进程,【学习笔记】Oracle 通过v$session查看imp进程信息的案例
天萃荷净 运维DBA反映需求在执行Oracle imp导入时需要查看导入的进程信息,通过v$session分析imp导入进程在服务器端v$session中的username列不是imp登陆用户名,而是 ...
- Oracle processes和sessions参数(进程连接数会话连接数)
Oracle processes和sessions参数(进程连接数&会话连接数) 如果配置过小,连接时可能会报错:ORA-12519, TNS:no appropriate service h ...
- oracle 僵死的进程,查看进程僵死状态 linux查看进程的方法有几种
unix怎么看一个进程是不是僵死的 unix时程都有哪几种状态,具体怎么查看, unix怎么看一个进程是不是僵死的 利用命令ps,可以看到有标记为Z的进程就是僵尸进程. 显示Zombie状态进程 ps ...
- oracle下defunct,AIX僵死(defunct)进程故障分析(Aix)
故障描述: S80主机系统出现了大量的僵死(defunct)进程,由于这些进程不能自动终止,导致系统的进程数资源不能释放,因此,如果继续增多,到达系统设定的进程总数,用户的应用和生产将受到影响. 故障 ...
最新文章
- VM 下装ubuntu系统
- 遥控车_vijos1458_纪中1724_水
- [体感游戏]关于体感游戏的一些思考(三) --- 射击
- 用“龙头”促发展,以“立体”筑生态,长沙生物医药产业集群跑出“加速度”
- Java面试题2-附答案
- ThreadLocal的两种用法总结
- java csv下载_java 生成csv文件,弹出下载对话框。。。
- 框架源码专题:Spring的事件监听、发布机制 ApplicationListener
- Andorid APK反逆向
- 使用pinyin4j将中文转换为拼音
- 23、jQuery九类选择器/jQuery常用Method-API/jQuery常用Event-API
- C4996	'GetVersionExW': 被声明为已否决	TTS_one	f:\vs2015\speechsdk\include\sphel
- The proxy server received an invalid response from an upstream server.
- 中国地图分省设色地图竖版高清矢量cdr、pdf格式2020年
- numpy python安装_安装numpy
- 设置一个励志锁屏短语吧!苹果电脑锁屏短语在哪设置?
- 范浩强treap 普通平衡树
- 计算机无法连接移动硬盘,移动硬盘无法访问解决大全
- ubuntu fuji xerox scanner扫描仪安装和使用
- JAVA日志框架与日志系统
热门文章
- 做.NET开发多年,公司要我转Java...
- .NET Standard 来日苦短去日长
- BeetleX.FastHttpApi之Vuejs扩展
- .net core 基于Dapper 的分库分表开源框架(core-data)
- 今天网站都变成灰色了,这其中是怎么实现的?
- 给微软的依赖注入框架写一些扩展方法
- ASP.NET Core on K8S深入学习(10)K8S包管理器Helm-Part 1
- 编写优雅代码,从挖掉恶心的if/else 开始
- IdentityServer4-前后端分离之Vue
- 什么是量子计算机?用一个简单例子来解释