Oracle 工艺结构
Oracle工艺结构
这个过程是动态创建,完毕任务后就消亡;而程序是静态的实体,程序是能够复制、编辑的。进程强调的是运行过程,而程序不过指令的有序集合;进程在内存中,程序在外存中。
ORACLE分为用户进程和ORACLE进程。
l 用户进程
当用户执行一个基于ORACLE数据库的应用程序时,client就会创建一个ORACLE的用户进程(如执行的sqlplus、OEM都叫用户进程)。
用户进程通过连接登录到ORACLEserver,ORACLEserver上就产生一个相应的server进程(Oracleserver的“外交部”);该server进程代表执行在client的用户进程与server通信。
l 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 工艺结构的更多相关文章
- oracle表结构和表内容差异比对
oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...
- Oracle目录结构及创建新数据库
oracle目录结构 当需要创建新的数据仓库时我可以用 Database Configuration Assistant(数据库配置助手) admin 存放创建的不同数据库 cfgtoollogs c ...
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
- MySql/Oracle树形结构查询
Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...
- oracle表结构和表内容差异比对【原】
oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...
- Oracle 服务器结构
[学习目标] 作为一个数据库管理员(DBA),经常会遇到各种没有见过的问题.除了宝贵的经验外, 通过理论基础去对问题进行判断.解决是至关重要的.因此,Oracle 服务器的结构和组成 是学习Oracl ...
- oracle 内存结构具体解释
Oracle 内存结构 与 Oracle 实例关联的基本内存结构包含: 系统全局区 (SGA):由全部server和后台进程共享.SGA 中存储的数据演示样例包含快速缓存的数据块和共享 SQL 区域. ...
- Oracle 导出表结构
Oracle导出表结构 select A.Table_Name 表名 , -- A.column_name 字段名 A.column_name 字段名, A.data_type 数据类型, A.dat ...
- Oracle 表结构、索引以及分区信息查询
Oracle 表结构.索引以及分区信息查询 /* 获取表:*/ select table_name from user_tables; --当前用户的表 select table_name from ...
随机推荐
- SVN最有效的方法打基线
笔者:张克强 在微博上:张克强-敏捷307 2014/7/6 方法一来自于我的一条微博: 组织级scm建一个名为controlled的文件夹,当项目某文档通过评审后,组织级scm从项目文件夹下找 ...
- hdu4280(最大流)
传送门:Island Transport 题意:有N个岛屿 M条无向路 每个路有一最大允许的客流量,求从最西的那个岛屿最多能运用多少乘客到最东的那个岛屿. 分析:无向图正反都加弧,权值一样,这题点多, ...
- hdu5119(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5119 分析:dp[i][j]表示由前i个数组成异或和为j的方法数,则dp[i][j]=d[i-1][j ...
- ZOJ3626(树形dp)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4772 题意:给一棵有n个结点的树,每个点有点权表示在这个点上的价值, ...
- 云计算分布式大数据神器Spark实战高手之旅
从2012年1月份研究Spark到如今已经两年多的时间了. 在这两年多的时间里比較彻底的研究了Spark的源码并已经在2014年4月24日编写完毕了世界上第一本Spark书籍. 鉴于CSDN在大陆IT ...
- GitLal+sourceTree版本号管理
GitLab+sourceTree版本号管理 假设把代码提交到github上,仅仅能是公开的,除非你花钱了,可是我不想花钱,所以我选择了gitLab作为gitserver,使用gitLab的详细过程例 ...
- SVN基于Maven的Web项目更新,本地过程详细解释
周围环境 MyEclipse:10.7 Maven:3.1.1 概要 最近在做项目,MyEclipse下载SVN基于上述Maven的Web问题,有时候搞了非常半天,Maven项目还是出现叉号,最后总结 ...
- 核心ASP.NET
1.用于Web应用程序的.NET Framework ASP.NET是.NET Framework的一部分,它可以在通过HTTP请求文档是在WEB服务器上动态创建它们,在.Net Framework中 ...
- Linux内核的同步机制---自旋锁
自旋锁的思考:http://bbs.chinaunix.net/thread-2333160-1-1.html 近期在看宋宝华的<设备驱动开发具体解释>第二版.看到自旋锁的部分,有些疑惑. ...
- Android build-tools升级到23.0.0_rc1无法解决编译后的问题
背景 作为项目要改变android studio,它采取了.他们主动向我,结果下载了最新的build-tools 23.0.0_rc1,然后,当我再次使用eclipse不了了.git reset了n次 ...