Oracle 工艺结构

Oracle工艺结构

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

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

用户进程

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

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

ORACLE进程

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

2 server进程

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

2 server进程的任务:

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

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

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

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

2 后台进程(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
被设置为0,则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、一个表空间被置于备份模式、脱机或仅仅读状态时;

E、DBWn进程出现超时(Time_out)即大约3秒未启动时。

ü 作用:

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

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

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

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

ü 备注说明:

A、DBWn进程数最好不要超过CPU的个数。由于每一个处理器同一时候仅仅能执行1个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进程须要为检查点清除脏缓存块,即将脏缓存块写入数据文件时;

D、LGWR进程出现超时,即大约3秒为启动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正在归档一个重做日志文件时,不论什么其它进程都不能訪问这个重做日志文件。

B、为了避免LGWR进程使用正在归档中的重做日志文件造成数据库被挂起,LGWR进程会依据须要主动启动很多其它的归档进程。ORACLE最多能够启用10个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进程

2 综合案例

案例:查询后台进程的编号。名称和描写叙述。

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)     控制以上两个查询的结果。

时间: 2024-11-08 23:45:37

Oracle 工艺结构的相关文章

oracle进程结构简介

我们经常说数据库实例,实例其实就是指的是数据库的内存结构和进程结构.我们安装数据库软件大量的是在安装其内存和进程组件结构.上篇节我们介绍了oracle内存结构,这节就介绍下oracle进程结构. 首先看下oracle进程的分类: 1)用户进程 是连接到Oracle DB 的应用程序或工具 2)数据库进程 服务器进程:连接到Oracle实例,在用户建立会话时启动 后台进程:在启动Oracle实例时启动 3) 守护程序/应用程序进程 网络监听程序 Gridinfrastructure 守护程序 从进

Oracle内存结构(之三)

[深入解析--eygle] 学习笔记 1.2.3 PGA的管理: [email protected] SQL>show parameter area_size NAME TYPE VALUE ------------------------------------ ---------------------------------------------------- bitmap_merge_area_size integer 1048576 create_bitmap_area_size i

DBA_Oracle基本体系架构(概念)(每个Oracle开发员和维护员都必须熟知的一些关于Oracle底层结构的概念)

2014-07-26 BaoXinjian 一. Oracle体系结构基本概念 1. Oracle总体结构分为三个部分 第一部分:系统全局区(SGA) 第二部分:程序全局区和后台进程 第三部分:Oracle的文件 2. 从功能角度接那些划分 存储结构 包括: 控制文件.数据文件和日志文件 作用: 由这些文件就构成了Oracle的物理存储结构. 内存结构 包括: 系统全局区(SGA) 和 程序全局区(PGA) 作用: 使用内存最多的是SGA,也是影响数据库系统性能最大的一个参数. 进程结构 包括:

ORACLE内存结构简介

ORACLE数据库作为世界上一款功能强大的数据库管理软件,功能体系特别庞大.我们有必要对它的每一部分学习了解,然后才从全局的角度进行有效把握.我们会着重从理论基础体系角度再逐步到实战应用.实际上,如果没有掌握基础理论体系,而直接生搬硬套一些维护技术经验,那也只是空中楼阁罢了.而如果你想直接通过一两篇文章学到什么秘籍成为维护或是DB优化高手那也是不现实的.所以这些文适合静下心来真正想了解学习ORALCE体系的读者.方法论掌握好,起码头脑中的思路方向是正确的,至于术也就是水到渠成. 我们通常所说的O

oracle 内存结构详解

Oracle 内存结构 与 Oracle 实例关联的基本内存结构包括: 系统全局区 (SGA):由所有服务器和后台进程共享.SGA 中存储的数据示例包括高速缓存的数据块和共享 SQL 区域. 程序全局区 (PGA):各个服务器进程和后台进程专用,每个进程都有一个 PGA. SGA 是共享内存区,包含实例的数据和控制信息,由以下各项组成: 数据库缓冲区高速缓存:用于缓存从磁盘检索到的数据块 重做日志缓冲区:用于缓存重做信息,直到其可以写入磁盘为止 共享池:用于缓存可在用户间共享的各种结构 大型池:

oracle内存结构(一)

Oracle 内存结构 与Oracle 实例关联的基本内存结构包括: 系统全局区(SGA):由所有服务器进程和后台进程共享 程序全局区(PGA):由每个服务器和后台进程专用,每个进程都有一个PGA. 系统全局区(SGA) 是共享内存区,包含实例的数据和控制信息,由以下各项组成: 数据库缓冲区高速缓存(DB buffer cache):用于缓存从磁盘检索到的数据块 重做日志缓冲区(redo buffer):用于缓存重做信息,直到其可以写入磁盘为止 共享池(share pool):用于缓存可在用户间

Oracle 进程结构

Oracle进程结构 进程是动态创建的,完成任务后就消亡:而程序是静态的实体,程序是可以复制.编辑的.进程强调的是执行过程,而程序仅仅是指令的有序集合:进程在内存中,程序在外存中. ORACLE分为用户进程和ORACLE进程. l 用户进程 当用户执行一个基于ORACLE数据库的应用程序时,客户端就会创建一个ORACLE的用户进程(如运行的sqlplus.OEM都叫用户进程). 用户进程通过连接登录到ORACLE服务器,ORACLE服务器上就产生一个对应的服务器进程(Oracle服务器的"外交部

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

oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 STUDENT_A 和 STUDENT_B create table STUDENT_A ( id VARCHAR2(36) not null, name VARCHAR2(100), age NUMBER, sex VARCHAR2(2) ); insert into STUDENT_A (id

oracle数据库结构及基本操作

本篇博客主讲oracle数据库的基本操作,作为目前世界上使用范围最广的数据库管理系统,充分体现出其功能的强大和可靠.首先,oracle数据库结构是我们必须了解的,有助于掌握oracle数据库操作. 系统简介 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一. 如图所示:SGA---为数据库提供服务PGA---为用户提供服务整个系统主要分为两大部分:(一)实例-管理端