Oracle数据库体系结构(2)数据库实例
Oracle实例的概念:
实例(Instance):就是数据库管理系统,处于用户与物理数据库之间的一个中间层软件,由一系列内存结构和后台进程组成。
用户操作数据库的过程实质上与数据库实例建立连接,然后通过实例操作数据库的过程。
内存结构是oracle数据库体系结构的重要组成部分,是oracle数据库重要的信息缓存和共享区域。它的大小、速度直接影响数据库的运行效率。oracle数据库内存管理就是根据数据库运行状态的改变而不断优化内存结构大小的过程。
内存区域信心使用范围的不同,分为系统全局去(SGA)和程序全局区(PGA).oracle支持对着两个的完全自动管理。
后台进程是实例被创建时创建的一些具有特定功能的小程序,在数据库实力启动时被启动,用于监视各个服务器的进程状态,协调各个服务器进程的任务。
数据库与实例的关系
通常数据库和实例是一一对应的,即一个数据库对应一个实例。

在同一台计算机上可以创建多个oracle数据库,当要同时使用这些数据库是,,就要创建多个实例。
SGA
SGA是由oracle分配的共享内存结构,包含一个数据库实例的数据和控制信息。SGA数据供所有的服务器进程和后台进程共享所以称为共享全局区。用户对数据库的各种操作主要在SGA中进行。该内存区随数据库实例的创建而创建,终止而释放。
数据高速缓冲区:是存储的是最近从数据文件中检索出来的数据,供所有用户共享。当用户要操作数据库中的数据时,先由服务器进程将数据从磁盘的数据文件中读取到数据高速缓冲区中,然后在缓冲区中进行处理。用户处理后的结果被存储在
数据高速缓冲区中,最后由数据库写入进程DBWR写到磁盘的数据文件中永久保存。
缓存快的类型:
1.脏缓存块:存储的是已经被修改过的数据。
2.空闲缓存块:它不包含任何数据,它们等待后台进程或服务器进程向其中写入数据。
3.命中缓存块:指那些正在被使用的数据块,同时还有很多回话等待修改或访问的数据块。
4.干净缓存块:指那些当前没有被使用,即将被换出内存的缓存块。
缓存块的管理:在oracle中。采用脏缓存块列表和LRU列表来管理数据高速缓冲区中的缓存块。
LRU列表能保证最频繁使用的数据块始终保存在内存中。
当用户进程需要访问某些数据时,Oracle首先在数据高速缓冲区中寻找,若存在,则直接从数据高速缓冲区中读取并返回给用户,这种情况称为“缓存命中”否则,就要从数据文件中读取到高速缓冲区中,然后再从数据高速缓冲区中读取并返回给用户。
这种情况“缓存失败”
当“缓存失败”的情况,oracle的工作原理是,从LRU列表的尾部开始搜索所需要的空闲缓存。在搜索过程中如果搜索到了一个脏缓存块,则移入脏缓存块列表,然后继续搜索;如果搜索到合适的空闲缓存块,则将数据写入,并把该缓存块移动到LRU列表的头部;
如果搜索了一个数量的缓存块后任然没有找到所需空间缓存块,将停止对LRU列表搜索,然后激活DBWR,将脏缓存块列表中的脏缓存块写入数据文件,同时脏缓存块将恢复为空闲缓存块,并移动到LRU列表中。
数据高速缓冲区的大小不能太大也尽量大。
重做日志缓冲区:用于缓存用户对数据库进行修改操作时生成的重做记录。例如,当用户执行insert ,update等对表进行修改,或者执行create alter等语句创建、修改数据库对象时,oracle都会自动为这些操作生成重做记录,并写入重做日志文件。
而为了提高效率,日志和数据修改一样,不是直接写到日志文件中,而是首先被服务器进程写入重做日志缓冲区中,在一定条件下,再由日志写入进程LGWR把重做日志缓冲区内容写入到日志文件中做永久性保存。
在归档模式下,当重做日志切换时,由归档进程ARCH将重做日志文件的内容写入归档文件中。

重做日志缓冲区的大小对数据性能有较大的影响。由参数LOG_BUFFER参数指定,可以在数据运行期间进行调整。例如
alter system set LOG_BUFFER=30M;
共享池
是用与缓存最近执行过的SQL语句、PL/SQL程序和数据字典,是对SQL语句等进行语法分析、编译、执行的区域。由库缓存和数据字典缓存组成。
库缓存简单的将就是将编译执行过的SQL语句、pl/sql程序缓存在里面,当执行这些时。oracle首先在共享池的库缓存中搜索,这样不用对新的语句进行解析,从而大大提高了系统的执行速度。
数据字段缓存区中保存最常使用的数据字典信息。
共享池的大小由初始化参数文件中的SHARED_POOL_SIZE参数指定。
合适的笑答,可使编译过的程序代码常驻内存,大大降低了重复还行相同SQL语句。
java池是一个可选的内存配置项。提供对java程序设计的支持,用于存储java代码,java语句的语法分析表。由参数java_pool_size控制。
PGA
PGA是一个私有的内存区,不能共享,每个服务器进程只能访问自己的PGA。
PGA由四部分组成
排序区:存放排序操作所产生的临时数据
游标去:存放执行游标操作锁产生额数据
会话去:保存用户会话锁具有的权限、角色、性能统计信息
堆栈区:用于保存会话过程中的绑定变量、会话变量等信息
Oracle数据库体系结构(2)数据库实例的更多相关文章
- Oracle数据库体系结构、启动过程、关闭过程
一.Oracle数据库体系结构体系结构由下面组件组成:1.Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区) (1 ...
- Oracle数据库------体系结构
ORACLE体系结构包括:实例(Instance),数据库文件,用户进程(User process),服务器进程以及其他文件. 1.ORACLE实例(instance) 1).要访问数据库必须 ...
- Oracle学习笔记--第2章 oracle 数据库体系结构
第2章 oracle 数据库体系结构 目录: ————————————— 2.1物理存储结构 2.1.1数据文件 2.2.2控制文件 2.1.3重做日志文件 2.1.4其他文件 2.2逻辑存储结构 2 ...
- Oracle数据库基本操作(一) —— Oracle数据库体系结构介绍、DDL、DCL、DML
一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/ ...
- oracle数据库体系结构
一.oracle数据库体系结构 基本组成: Oracle server:一般情况下是一个instance和一个database组成 一般:1个instance只能对应一个数据库. 特殊:1个数据库可以 ...
- Oracle数据库体系结构-Shared Pool
Oracle数据库简单介绍 对象关系型数据库 重点:一致性+性能 一致性优于性能 处理模型:C/S模型 Client:用户和用户进程 Server:服务器进程,实例,数据库本身 ...
- 创建多个Oracle数据库及相应的实例
转 http://blog.csdn.net/luiseradl/article/details/6972217 对于使用过SQL Server数据库的用户可以会对Oracle中的数据库的实例的概念理 ...
- 关于ORACLE数据库名以及数据实例名等几个重要概念
在Oracle中有关数据库和数据库实例的几个重要概念,有时候如果理解不是很深或者对其疏忽.混淆了,还真容易搞错或弄不清其概念,下面就数据库实例名.数据库名.数据库域名.数据库服务名.全局数据库名几个概 ...
- Oracle体系结构之数据库启动的不同状态
数据库启动的不同状态: nomount状态:spfile和plile mount状态:control file open状态:data file和redo file 启动数据库的过程:nomount状 ...
随机推荐
- NSDate 类的总结,全面基础
<span style="font-size:24px;"><span style="font-size:18px;">//1.创建日期 ...
- eclipse debug调试java程序的九个技巧
九个技巧: 逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspect expressions display 远程debug 最早开始用eclipse的debug的时候,只会F5 F6 F ...
- oracle的sys密码重置
运行,cmd sqlplus /nolog;(也可能不要分号) connect / as sysdba alter user sys identified by 新密码; alter user sys ...
- 1.5.2 WHERE子句
1.5.2 WHERE子句正在更新内容,请稍后
- python常见面试题(一)
1.Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都 ...
- NoHostAvailableException: All host(s) tried for query failed (no host was tried)
NoHostAvailableException: All host(s) tried for query failed (no host was tried) cassandra连接报错:tried ...
- python 中的"switch"用法
转载:http://python.jobbole.com/82008/ 为什么Python中没有Switch/Case语句? 不同于我用过的其它编程语言,Python 没有 switch / case ...
- mapreduce学习资料
http://blog.csdn.net/tianjun2012/article/category/6794531 http://blog.csdn.net/tianjun2012/article/d ...
- Unix下网络编程概述
这部分我要学习的是Unix下的网络编程,参照的书籍是W. Richard. Stevens的<Unix网络编程>卷一和卷二,由于本身现在从事的工作是java后台开发,对客户端-服务器的这种 ...
- HBase中我认为比较常用的两个类:Scan和Filter
学习HBase一段时间后,我认为HBase中比较常用,同时也是必须掌握的两个API是Scan和Filter.如下是我的理解: 1.Scan ---- 扫描类 作用:用来对一个指定Table进行按行扫 ...