Oracle工艺结构

这个过程是动态创建,完毕任务后就消亡;而程序是静态的实体,程序是能够复制、编辑的。进程强调的是运行过程,而程序不过指令的有序集合;进程在内存中,程序在外存中。

ORACLE分为用户进程和ORACLE进程。

用户进程

当用户执行一个基于ORACLE数据库的应用程序时,client就会创建一个ORACLE的用户进程(如执行的sqlplus、OEM都叫用户进程)。

用户进程通过连接登录到ORACLEserver,ORACLEserver上就产生一个相应的server进程(Oracleserver的“外交部”);该server进程代表执行在client的用户进程与server通信。

ORACLE进程

Oracle进程能够分为server进程和后台进程server进程。

² server进程

主要是服务于client的用户进程。server进程又能够分为:专用server进程(仅仅为一个用户进程提供服务)和共享server进程(能够为多个用户进程提供服务)。

² server进程的任务:

A.   解析并运行用户所提交的SQL语句;

B.   搜索SGA区的数据库缓存,决定是否读取数据文件。

假设数据块不在SGA区的数据库缓存中,就将其从数据文件里读入;

C.   将查询运行的结构数据返回给用户。

² 后台进程(BackgroundProcess)

server进程是由后台进程提供支持的。后台进程主要完毕的任务是:

A.    在内存和外存之间进行I/O操作;

B.    监视各个进程的状态;

C.    协调各个进程的任务。

D.    维护系统的性能;

E.    保证系统的可靠性;

可使用下面查询来检查数据库中启动的后台进程个数及其名称

SQL> SELECT * FROM V$BGPROCESS

经常使用的后台进程:

n SMON(SystemMonitor)   系统监视进程:

ü 启动条件:随ORACLE数据库系统启动;执行期间ORACLE能够唤醒SMON进程,以检查是否须要执行它所负责的工作;假设其它不论什么进程须要使用SMON进程的功能时,将随时唤醒SMON进程。

ü 作用:

A、在例程启动时负责对数据库进行恢复。

假设是非正常关闭数据库,则当下次启动例程时。SMON进程会自己主动读取重做日志文件。对数据库进行恢复(即运行将已提交的事务写入数据文件里、回退未提交的事务等操作)。

B、清除已经分配但不再使用的表空间中的暂时段(假设表空间中有大量的盘区。则清除就会花费大量时间,就会影响数据库启动时的性能)

C、合并基于数据字典管理的各个表空间中位置相邻的空暇盘区。使之更easy分配。

ü 备注说明:假设某个表空间的存储參数 PCTINCREASE
,则SMON进程就不会对该表空间中的空暇盘区进行合并操作。

n PMON(Process Monitor) 进程监视进程。

ü  启动条件:

A、 须要启动、清除中断或失败的用户进程时(即对ORACLE数据库的连接发生崩溃、挂起或其它非正常终止等);清除操作还包含非正常中断的用户进程留下的孤儿会话。回退未提交的事务。释放会话所占用的锁、SGA区、PGA区的资源。

B、 执行期间ORACLE能够唤醒PMON进程,以检查是否须要执行它所负责的工作;假设其它不论什么进程须要使用PMON进程的功能时,将随时唤醒PMON进程。

C、PMON是在单独的数据库中启动的。而分布式数据库中是RECO
恢复进程来完毕PMON进程的任务的。

ü 作用:

A、 恢复中断或失败的用户进程、server进程;

B、 清除非正常中断的进程留下的孤儿会话;

C、回退未提交的事务。重置活动事务的状态。从系统活动进程中删除用户进程标识号(ID)

D、释放进程所占用的各种资源,并通过自己主动回退事务来解决死锁,释放用户所拥有的表和行上的锁;

E、 定期检查server进程和调度进程。假设它们因失败而被异常挂起。则自己主动又一次启动它们。

n DBWn(Database Writer) 
数据库写进程。

ü 启动条件

A、当DIRTY列表中的脏缓存块达到一定数量(即初始化參数db_block_write_batch指定值的一半),DBWn进程将脏缓存块写入数据文件(同一时候ORACLE将对控制文件和数据文件的头部的同步序号SCN进行改动,记录下当前数据库的结构和状态,以保证数据库中物理文件之间的同步);

B、当在LRU列表中找到一定数量(即初始化參数db_block_max_scan指定的值)的空暇缓存块,但还不够时,为获得很多其它的空暇缓存块,DBWn进程将脏缓存块写入数据文件;

C、当出现检查点LGWR进程通知DBWn进程进行写操作。

D、一个表空间被置于备份模式、脱机或仅仅读状态时;

秒未启动时。

ü 作用:

A、管理快速缓冲区,保证server进程总能找到空暇缓存块,以便保存从数据文件里读取的数据块;

B、将DIRTY列表中的脏缓存块写入到数据文件里。获取很多其它的空暇缓存块;

C、使用LRU算法将近期正在使用的缓存块即命中块,继续保留在LRU列表中。不必又一次读取数据文件;

D、DBRn进程通过延迟写入来优化磁盘I/O操作,而server进程仅仅在数据快速缓存区中做改动。

ü 备注说明:

个DBWn进程;

B、ORACLE默认启动一个DBWn进程,启动受初始化參数(DB_WRITER_PROCESS)的限制。能够设置初始化參数
DB_BLOCK_CHECKPOINT_BATCH来设置每当出现检查点时。DBWn进程写入的脏缓存块的最大数量。增大该值,能够延长启动DBWn进程的时间间隔。

n LGWR(Log Writer)  日志写进程;

ü 启动条件:

A、用户进程通过COMMIT语句提交当前事务;

B、重做日志快速缓存被写满1/3时,或含有1MB的重做信息时;

C、DBWn进程须要为检查点清除脏缓存块,即将脏缓存块写入数据文件时;

秒为启动LGWR进程时。

ü 作用:

A、负责管理重做日志快速缓冲区,即将重做日志记录从快速缓存区写入到重做日志文件;

B、假设例程没有启动CKPT检查点进程,则LGWR进程就来完毕检查点运行任务。

ü 备注说明:

A、 每一个例程仅仅有一个LGWR进程;

B、 LGWR进程先于DBWn进程启动。

n CKPT (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)參数来改变检查点实行的间隔。

n ARCn(Archiver) 
归档进程。

ü 启动条件:

发生重做日志切换时(必须是归档模式下,而且初始化參数 LOG_ARCHIVE_START
为 TRUE
,假设在归档模式下该參数是FALSE当重做日志文件所有写满,数据库将会被挂起。

)

ü 作用:避免数据库崩溃无法恢复。

ü 备注说明:

A、一个例程默认仅仅会启动一个归档进程ARCn,当ARCn正在归档一个重做日志文件时,不论什么其它进程都不能訪问这个重做日志文件。

个ARCn。

C、初始化參数 LOG_ARCHIVE_DEST
指定了归档日志文件所在的位置;LOG_ARCHIVE_FORMAT指定了归档日志文件的命名格式规则。

n RECO(Recoverer) 
恢复进程

n LCKn(Lock) 
锁进程

n RVWR(Recovery Writer) 
闪回恢复进程

n CTWR(Change Tracking Writer)  
闪回变化跟踪写进程

n CJQn(Job Queue Monitor) 
作业队列监视进程

n Jnnn(Job Queue)  
作业队列进程

n Dnnn(Dispatcher)  
调度进程

n Snnn(Shared Server)   共享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表示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 工艺结构的更多相关文章

  1. oracle表结构和表内容差异比对

    oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...

  2. Oracle目录结构及创建新数据库

    oracle目录结构 当需要创建新的数据仓库时我可以用 Database Configuration Assistant(数据库配置助手) admin 存放创建的不同数据库 cfgtoollogs c ...

  3. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  4. MySql/Oracle树形结构查询

    Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...

  5. oracle表结构和表内容差异比对【原】

    oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...

  6. Oracle 服务器结构

    [学习目标] 作为一个数据库管理员(DBA),经常会遇到各种没有见过的问题.除了宝贵的经验外, 通过理论基础去对问题进行判断.解决是至关重要的.因此,Oracle 服务器的结构和组成 是学习Oracl ...

  7. oracle 内存结构具体解释

    Oracle 内存结构 与 Oracle 实例关联的基本内存结构包含: 系统全局区 (SGA):由全部server和后台进程共享.SGA 中存储的数据演示样例包含快速缓存的数据块和共享 SQL 区域. ...

  8. Oracle 导出表结构

    Oracle导出表结构 select A.Table_Name 表名 , -- A.column_name 字段名 A.column_name 字段名, A.data_type 数据类型, A.dat ...

  9. Oracle 表结构、索引以及分区信息查询

    Oracle 表结构.索引以及分区信息查询 /* 获取表:*/ select table_name from user_tables; --当前用户的表 select table_name from ...

随机推荐

  1. 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET

    基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...

  2. www.centos.org

    https://www.centos.org/forums/viewtopic.php?t=5770 In order to conserve the limited bandwidth availa ...

  3. jQuery UI 是建立在 jQuery JavaScript 库上的一组用户界面交互、特效、小部件及主题

    jQuery UI 是建立在 jQuery JavaScript 库上的一组用户界面交互.特效.小部件及主题.无论您是创建高度交互的 Web 应用程序还是仅仅向窗体控件添加一个日期选择器,jQuery ...

  4. 前端控件之Jquery datetimepicker的使用总结

    效果图 在介绍jquery datetimepicker的使用方法前,我们先来看一下它的实现效果图,这样以便让你更快地了解它是否是你所需要的. 下面我截了四张常用的效果图(截取自http://xdso ...

  5. Linux下hp打印机驱动hplip分析

    Hplip分析 版本号是2.14,源代码位置:http://hplipopensource.com. 图的来源:http://hplipopensource.com/node/128. 实践中使用的打 ...

  6. pygame系列_font游戏字体

    在pygame游戏开发中,一个友好的UI中,漂亮的字体是少不了的 今天就给大伙带来有关pygame中字体的一些介绍说明 首先我们得判断一下我们的pygame中有没有font这个模块 1 if not ...

  7. u-boot 的bootcmd 和bootargs详解,烧写分析

    下面链接这篇文章也非常重要,介绍DM3X的一系列烧写步骤和设置方法 http://www.61ic.com/Article/DaVinci/TMS320DM3x/201204/41827.html U ...

  8. Android版本铎A梦幻连连看游戏源代码完整版

    我写主代码,没有版权问题,它少量小游戏和应用源代码稍后会陆续上线!哆啦A梦连连看包含了2种游戏模式和60关卡,并能够通过改动配置文件非常方便的实现自行添加新关卡.採用andengine游戏引擎开发,内 ...

  9. M3U8格式解说及实际应用分析

    M3U8有啥优点 ? 网上搜索了一下,大家众说纷纭,个人理解主要是能够做多码率的适配,依据网络带宽,client会选择一个适合自己码率的文件进行播放,保证视频流的流畅. 在IOS device和mac ...

  10. log4net和一般的记录日志方法

    下载 http://files.cnblogs.com/crazyair/log4net.zip 1 在web项目中新建一个 Log4Net.config <?xml version=" ...