首先看张图

下面来解释下这个图.
对于一个数据库系统来说,假设这个系统没有运行,我们所能看到的和这个数据库相关的无非就是几个基于操作系统的物理文件,这是从静态的角度来看,如果从动态的角度来看呢,也就是说这个数据库系统运行起来了,能够对外提供服务了,那就意外着数据库系统启动了自己的一个实例,综合以上2个角度,oracle如何定义上述描述呢?
我们来引入第一个概念,oracle服务器,所谓oracle服务器是一个数据库管理系统,它包括一个oracle实例(动态)和一个oracle数据库(静态)。oracle实例是一个运行的概念(如操作系统的进程),提供了一种访问oracle数据库的方式,始终打开一个,并且只能打开一个oracle数据库,oracle实例有SGA和一些后台服务进程组成,在后台服务进程当中,DBWn PMON CKPT LGWR SMON是必备的后台进程,而ad queue,rac,shared server,ad replication则是可选的,之所以可选,要们是因为离开它oracle也能正常运行,要么是一些高级的功能才可以用得到。
oracle数据库是一个被统一处理的的数据的集合,从物理角度来看包括三类文件数据文件,控制文件,重做日志文件。从逻辑角度来看,oracle数据库至少包含一个表空间,表空间至少包含一个段,段由区做成,区有块组成。需要注意的是表空间可以包含若干个数据文件,段可以跨同一个表空间的多个数据文件,区只能在同一个数据文件内。
oracle还设计了其他的关键文件用来为整个系统服务,如配置文件,密码文件,归档日志文件,还有还有用户进程和服务进程,现在可以简单理解下执行sql语句就要用到这2个进程。
下表是SGA和PGA的总结
 

SGA

SHARE POOL

(共享池)

用如下命令可以调整

ALTER SYSTEM SET

SHARED_POOL_SIZE=64M

LIBRARY CACHE

(库高速缓存)

1存储最近使用的SQL和PL/SQL语句信息

2包括SHARED SQL和SHARED PL/SQL

3用LRU算法管理

4大小由SHARE POOL大小决定

DATA DICTIONARY CACHE

(数据字典高速缓存)

1数据库中最近使用的定义的集合

2包含数据库文件,表,索引,列,用户,权限和其他的数据库对象相关信息

3在语法分析阶段,服务器进程会在数据字典中查找用于对象解析和验证访问的信息

4将数据字典信息高速缓存到内存中,可缩短查询和DML的响应时间

5大小由共享池的大小决定

DATABASE BUFFER CACHE

(数据缓冲区高速缓存)

1存储已从数据文件检索到的数据的复本

2大幅提高读取和更新数据的性能

3使用LRU算法管理

4主块的大小由DB_BLOCK_SIZE确定

REDO LOG BUFFER

(重做日志缓冲区)

1记录对数据库数据块作的全部更改

2主要用来恢复

3其中记录的更改被称作重做条目

4重做条目包含用于重新构建或重做更改的信息

5大小由LOG_BUFFER定义

LARGE POOL

(大型池)

1 SGA可选的内存区

2分担了共享池的一部分工作

3用于共享服务器的UGA

4用于I/O服务器进程

5备份和恢复操作或RMAN

6并行执行消息缓冲区(前提PARALLEL_POOL_SIZE=TRUE)

7不使用LRU列表

8大小由LARGE_POOL_SIZE确定

JAVA POOL

(JAVA池)

1存储JAVA命令服务分析要求

2安装和使用JAVA时必须的

3大小有JAVA_POOL_SIZE确定

PGA

PRIVATE SQL AREA

(专用SQL区)

专用SQL 区的位置取决于为会话建立的连接类型。在专用服务器环境中,专用SQL 区位于各自服务器进程的PGA中。在共享服务器环境中,专用SQL 区位于SGA 中。

管理专用SQL 区是用户进程的职责。用户进程可以分配的专用SQL 区的数目始终由

初始化参数OPEN_CURSORS 来限制。该参数的缺省值是50。

PERSISTEN AREA

(永久区)

包含绑定信息,并且只在关闭游标时释放

RUNTIME AREA

(运行时区)

在执行请求时的第一步创建。对于INSERT、UPDATE 和DELETE命令,该区在执行语句后释放,对于查询操作,该区只在提取所有行或取消查询后释放。

SESSION MEMORY

(会话内存)

包含为保留会话变量以及与该会话相关的其它信息而分配的内存。对于共享服务器环境,该会话是共享的而不是专用的。

SQL WORK AREAS

(SQL工作区)

用于大量占用内存的操作,如排序、散列联接、位图合并和位图创建。

工作区的大小可进行控制和调整

                            下表是后台进程总结

DBWn

DBWn 延迟写入数据文件,直到发生下列事件之一:

• 增量或正常检查点

• 灰数据缓冲区的数量达到阈值

• 进程扫描指定数量的块而无法找到任何空闲缓冲区时

• 出现超时

• 实时应用集群(Real Application Clusters, RAC) 环境中出现ping 请求

• 使一般表空间或临时表空间处于脱机状态

• 使表空间处于只读模式

• 删除或截断表

• 执行ALTER TABLESPACE 表空间名BEGIN BACKUP 操作

LGWR

LGWR 在下列情况下执行从重做日志缓冲区到重做日志文件的连续写入:

• 当提交事务时

• 当重做日志缓冲区的三分之一填满时

• 当重做日志缓冲区中记录了超过1 MB 的更改时

• 在DBWn 将数据库缓冲区高速缓存中修改的块写入数据文件以前

• 每隔三秒

SMON

例程恢复

– 前滚重做日志中的更改

– 打开数据库供用户访问

– 回退未提交的事务处理

• 合并空闲空间

• 回收临时段

PMON

进程失败后,后台进程PMON 通过下面的方法进行清理:

• 回退用户的当前事务处理

• 释放当前保留的所有表锁或行锁

• 释放用户当前保留的其它资源

• 重新启动已失效的调度程序

CKPT

• 在检查点发信号给DBWn

• 使用检查点信息更新数据文件的标头

• 使用检查点信息更新控制

启动检查点的原因如下:

• 确保定期向磁盘写入内存中发生修改的数据块,以便在系统或数据库失败时不会丢失数据

• 缩短例程恢复所需的时间。只需处理最后一个检查点后面的重做日志条目以启动恢复操作

• 确保提交的所有数据在关闭期间均已写入数据文件

由CKPT 写入的检查点信息包括检查点位置、系统更改号、重做日志中恢复操作的起始位置以及有关日志的信息等等。

注:CKPT 并不将数据块写入磁盘,或将重做块写入联机重做日志。

ARCn

• 可选的后台进程

• 设置ARCHIVELOG 模式时自动归档联机重做日志

• 保留数据库的全部更改记录

 
  最后,举一个用户提交sql语句的的例子来结束本文,如果用户想提交sql语句,那么首先你必须要连接到oracle实例,连接到oracle实例有三种途径,1如果用户登陆到运行oracle实例的操作系统上,则通过进程间通信进行访问2C/S结构访问3三层结构
发起连接的应用程序或工具通常称为用户进程,连接发起后,oracle服务器就会创建一个进程来接受连接,这个进程就成为服务进程,服务器进程代表用户进程与oracle实例进行通信,在专用服务器连接模式下,用户进程和服务进程是1对1的关系,在共享服务器模式下,多个用户进程可能共享一个服务进程。
当服务器进程开始和oracle实例进行通信时,一个会话就被创建了。
显然处理一个查询要经过语法分析,绑定,执行,提取等阶段。
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Oracle体系中各个组件的含义的更多相关文章

  1. Oracle db中 CONNECT role的含义

    出自: Complete Checklist for Manual Upgrades to 11gR2 (文档 ID 837570.1) 该文章中有例如以下的文字: From Oracle 10.2, ...

  2. WebLogic中WLS 组件漏洞(CVE-2017-10271)专项检测工具

    来源: 时间:2017-12-23 00:00:00 作者: 浏览:1929 次 近期安恒信息在应急响应过程中发现有恶意攻击者利用WebLogic漏洞对企业服务器发起大范围远程攻击,攻击成功后植入挖矿 ...

  3. oracle存储过程中%type的含义

    转: oracle存储过程中%type的含义 2018-11-07 11:43:56 lizhi_ma 阅读数 1361更多 分类专栏: 数据库   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  4. 理解 Oracle 多租户体系中(12c,18c,19c)Grant授权作用域范围

    本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个授权可以成功执行? 1. 在CDB级别中对用户进行授权,不带 container 子句的效果: 2. 在CDB级别中对用户进行授权,带 co ...

  5. Oracle基础学习(二)v$session中Command的数字含义

    v$session中Command的数字含义. 1 CREATE TABLE 2 INSERT 3 SELECT 4 CREATE CLUSTER 5 ALTER CLUSTER 6 UPDATE 7 ...

  6. RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议

    RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...

  7. 盘点 Oracle 11g 中新特性带来的10大性能影响

    Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先引起的是一些麻烦,因为对于新技术的不了解.因为对于旧环境的不适应,从Oracle产品到技术服务运维,总是 ...

  8. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

  9. 关于Oracle GoldenGate中Extract的checkpoint的理解 转载

    什么是checkpoint? 在Oracle 数据库中checkpoint的意思是将内存中的脏数据强制写入到磁盘的事件,其作用是保持内存中的数据与磁盘上的数据一致.SCN是用来描述该事件发生的准确的时 ...

随机推荐

  1. PHP中new static()与new self()的比较

    今天在coding的时候,发现了 new static(),觉得实例化的地方不是应该是 new self()吗?查询了一下才知道两者的区别: 1)在有子类集成的时候,两者的表现不一样 2)php 5. ...

  2. 服务器判断http是否中断

    一般来说,只需要send或者recv一下,如果结果为零,则为掉线. 1.当recv返回值为0是表示对方已经正常(MSDN说是完美的)的断开连接.2.当recv返回SOCKET_ERROR时,说明对方已 ...

  3. 设计模式-观察者模式(Observer Model)

    文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/6031844.html LZ刚刚开始心热的开启了博客之路,想着记点流水账,可帝都的天都冷成 ...

  4. IBM实习

    来到北京,进入IBM实习已经好多天了,两个月的暑假,两个月夏日在这里度过了,并将在未来个一个月里面,仍将在这里走过,但是我却一无所成,现在仍然只在徘徊中游走,丹迪什么时候能真正懂得实习的难得可贵,懂得 ...

  5. Linux0.11内核--加载可执行二进制文件之2.change_ldt

    前面分析完了copy_strings函数,这里来分析另一个注意的函数change_ldt. 先来看调用处: // 根据a_text 修改局部表中描述符基址和段限长,并将参数和环境空间页面放置在数据段末 ...

  6. 关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法,有人在暴力破解

    关于csrss.exe和winlogon.exe进程多.占用CPU高的解决办法 最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个 ...

  7. LruCache缓存

    LruCache通常用于实现内存缓存,采用的缓存算法是LRU(Least Recently Used)即近期最少使用算法,其核心思想是:当缓存满的时候,会优先淘汰那些近期最少使用的缓存对象. 1.Lr ...

  8. Intent的七大组件——Android开发之路5

    ------Intent------ Android中三个核心组件——Activity.Services.BroadCastProvider都是通过Intent传递参数. startActivity( ...

  9. WWDC 后苹果最新 App Store 审核条款!

        WWDC 2016 大会之后,苹果公司发布了四个全新平台:iOS,macOS,watchOS 和 tvOS.并且在此之后,苹果应用商店审核条款也同时进行了更新——貌似不算进行了更新,简直就是重 ...

  10. 在 CentOS7 上安装 MySQL5.7

    在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建 ...