Oracle体系结构理论
问题:
1:通常说Oracle数据库是什么?
2:如何理解Oracle实例?
3:Oracle实例由哪些部分组成,它们之间的作用是什么?
4:如何理解Oracle的物理结构?
5:Oracle的物理结构由哪些部分组成,它们之间的作用是什么?
6:如何理解Oracle的逻辑结构?
7:Oracle的逻辑结构由哪些部分组成,它们之间的作用是什么?
一:Oracle数据库服务器
我们说的Oracle数据库是指Oracle数据库服务器(Oracle sever)是由Oracle实例(Oracle Instance) 和Oracle数据库(Oracle database)组成的。
Oracle实例:用于与数据库进行交互的一片内存区域和后台进程的集合,实例启动的时候,系统先在服务器内存中分配系统全局区(System Global Area SGA),构成Oracle内存结构,然后启动必须的常驻内存的操作系统进程,组成Oracle的进程结构,内存结构和进程结构构成Oracle实例。
oracle数据库:物理文件的集合,包括数据文件,重做日志文件,控制文件,参数文件,密码文件,归档日志文件,备份文件,告警文件,跟踪文件等。其中数据文件,控制文件,重做日志文件和参数文件是必须的。其它文件可选。
一个实例只能对应/操作一个数据库,一个数据库可以由一个或多个实例操作。(比如RAC集群架构)
二:Oracle实例
下图为Oracle实例结构图

Oracle实例就是用于数据库进行交互的一片内存区域和后台进程的集合,一个单独的数据库可以被多个实例访问,Oracle早期的并行服务器OPS演变到 现在普遍使用的RAC集群架构。
实例启动的时候,先在服务器内存中分配系统全局区(SGA),构成Oracle内存结构,然后启动必须的常驻内存的操作系统进程,组成Oracle的进程结构,内存结构和进程结构一起组成Oracle实例。实例在操作系统中用ORACLE_SID来标识,在Oracle中用参数实例名(Instance Name)来标识,这两个值是相同的,区别就是一个在操作系统中,一个在Oracle中。
1:系统全局区(System Global Area SGA)
系统全局区是系统分配的共享的内存结构,当数据库实例启动时,SGA的内存被自动分配;当数据库实例关闭时,SGA内存被回收;SGA可以包含一个数据库实例的数据和控制信息。当多个用户连接到同一个数据库实例时,在实例的SGA中,数据可以被多个用户共享。SGA是占用内存最大的一个区域,同时也是影响数据库性能的重要因素。
SGA主要包括:
1)、共享缓冲区(Shared Pool)
共享池(Shared Pool)就是我们常说的SQL共享池,它还包括库缓冲区(Library Cache)和数据字典缓冲区(Data Dictionary Cache);共享缓冲区大小由参数SHARED_POOL_SIZE设定。
a)、库缓冲区:存储对数据库进行操作的语句信息,包括执行计划及运行数据库的SQL语句的语法分析树,所有用户在第二次运行相同的SQL语句时,可以利用SQL共享池中可用的语法分析信息来加快执行速度;库缓冲区通过最近最少使用(LRU,LeastRecentlyUsed)算法来管理可用空间,当SQL共享池填满时,将从库缓存区中删掉最近最少使用的执行路径和语法分析树,以便为新的条目腾出空间;如果SQL共享池太小,语句将被连续不断地再装入到库缓存区,从而影响操作性能。
b)、数据字典缓冲区(Database Buffer Cache):数据库对象的信息存储在数据字典表中,这些信息包括用户帐号数据、权限、数据文件名、段名、表结构及表说明等,当数据库需要这些信息(如用户对表是否有读写权限)时,将读取数据字典表且将返回的数据存储在字典缓存区中。数据字典缓冲区使用最近最少使用(LRU,LeastRecentlyUsed)算法来管理,数据字典缓存区的大小由数据库内部管理,如果字典缓存区太小,数据库需要反复查询数据字典表以获取访问数据库所需的信息,这些查询由循环调用(recuesivecall)事件完成。
2)、数据库缓冲区(Database Buffer Cache)
数据库缓冲区由DB_CACHE_SIZE参数设定,Oracle使用最近最少使用(LRU,LeastRecentlyUsed)算法来管理数据库缓冲区可用空间;当存储区需要空闲空间时,最近最少使用块将被移出,新数据块将在存储区代替它的位置,通过这种方法,将最频繁使用的数据保存在存储区中;如果SGA的大小不足以容纳所有最常使用的数据,那么,不同的对象将争用数据库缓存区中的空间;当多个应用程序共享同一个SGA时,很有可能发生这种情况。此时,每个应用的最近使用段都将与其他应用的最近使用段争夺SGA中的空间,这样,数据库缓冲区的数据请求将出现较低的命中率,导致系统性能下降。
3)、重做日志缓冲区(Redo Log Buffer Cache)
Redo log包含所有的数据库变化历史,数据库的所有操作变化,均按照写入重做日志缓冲区先于数据块缓冲区、写入重做日志文件先于写入数据文件;当发生提交动作时,将重做日志缓冲区变化刷到重做日志文件。在被写入联机重做日志文件之前,事务首先被记录在称作重做日志缓冲区(Redo Log Buffer)的SGA中,数据库可以周期地分批向联机重做日志文件中写重做项的内容,从而优化这个操作。重做日志缓冲区的大小(以字节为单位)由LOG_BUFFER参数决定。
4)、大池(Large Pool)
大池属于一个可选内存区,如果数据库使用线程服务器选项或频繁执行备份、恢复操作,只要创建一个大池,就可以更有效地管理这些操作。大池将致力于支持大型SQL命令,利用大池,就可以防止这些大型SQL命令争用SQL共享池,从而减少再装入到库缓存区中的语句数量。大池的大小(以字节为单位)由LARGE_POOL_SIZE参数设置,可以使用LARGE_POOL_MIN_ALLOC参数设置大池的最小分配,可以使用SHARED_POOL_RESERVED_SIZE参数为SQL大型语句保留一部分SQL共享池。
5)、Java池(Java Pool)
Java池为Java命令提供语法分析,Java池的大小(以字节为单位)由JAVA_POOL_SIZE参数设置,缺省值为10MB。
6)、多缓冲池
可以在SGA中创建多个缓冲池,能够用多个缓冲池把大数据集与其他的应用程序分开,以减少数据库缓存区内相同资源争用;对于创建的每一个缓冲池,都要设定LRU锁存器的大小和数量,缓冲区的数量必须至少比LRU锁存器的数量多50倍。创建缓冲池时,需要设定保存区(KeepArea)的大小和再循环区(RecycleArea)的大小,与SQL共享池的保留区一样,保存区保持条目,而再循环区则被频繁地再循环使用。使用BUFFER_POOL_KEEP参数规定来保存区的大小。
2: 后台进程(Background Process)
数据库实例由内存结构和后台进程,应用与数据库的所有操作和交互都由数据库实例中完成,SGA可以理解为交互平台,后台进程可以理解为SGA与数据库交互的桥梁。PMON.SMON.DBWRn.LGWRn.CKPT进程为必须的后台进程,ARCHn.LCKn等为可选的后台进程。
Oracle体系结构理论的更多相关文章
- Oracle体系结构总结
1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 可参考Oracle Architecture系列随堂笔记: ...
- oracle 体系结构
oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...
- Oracle实例和Oracle数据库(Oracle体系结构)
--========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...
- 【转载】Oracle实例和Oracle数据库(Oracle体系结构)
免责声明: 本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除. 原文作者:Leshami 原文地址:http://blog.csdn.net/ ...
- oracle 体系结构解析
三.oracle 体系结构 1.oracle内存由SGA+PGA所构成 2.oracle数据库体系结构数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. oracl ...
- Oracle 课程一之Oracle体系结构
课程目标 •理解ORACLE数据库体系架构—内存结构和进程 •理解SQL在数据库中的运作流程 •理解UNDO&REDO原理 •理解commit原理 1.Oracle数据库概述 •数据库:物 ...
- oracle体系结构
oracle体系结构有四个部分组成分别为:oracle 服务器.用户进程.服务器进程.其他关键文件.其中oracle服务器又有实例(instance)和database组成是一个数据库管理系统. 一. ...
- Oracle体系结构之进程
Oracle体系结构之进程 一.概述 Oracle中的每个进程都要执行一个特定的任务(或者一组任务),每个进程都会为自己分配内存(PGA)来完成它的任务.一个Oracle实例主要有以下3类进程: (1 ...
- oracle 体系结构简介
1.1.SGA(system global area) SGA是oracle Instance的基本组成部分,在示例启动是分配.是一组包含一个oracle实例的数据和控制信息的共享内存结构.主要用于存 ...
随机推荐
- vue2.0 之 douban (七)APP 打包
在打包之前需要修改一个地方,那就是config->index.js文件,修改assetsPublicPath: '/'为assetsPublicPath: './',截图如下 上面文件改好后,开 ...
- 重写hashCode方法,导致内存泄漏
package com.nchu.learn.base.reflect; import org.junit.Test; import java.util.Collection; import java ...
- quick bi dashboard 控件样式控制。
控件样式控制 1 想要的效果图 2 查询样式里面进行设置
- Java + selenium 元素定位(6)之iframe切换(即对富文本框的操作)
在元素定位中,对富文本框的元素定位是特别的,当我们使用普通的元素定位方法对富文本框进行操作时,我们会发现不管我们之前介绍的八种方法中的任何方法,我们都不能成功定位到富文本框,并对其进行操作.那是因为富 ...
- JSP基础--EL表达式
EL(表达式语言) 1 EL概述 1.1 EL的作用 JSP2.0要把html和css分离.要把html和javascript分离.要把Java脚本替换成标签.标签的好处是非Java人员都可以使用. ...
- 如何在Python中使用Linux epoll
如何在Python中使用Linux epoll 内容 介绍 阻塞套接字编程示例 异步套接字和Linux epoll的好处 epoll的异步套接字编程示例 性能考量 源代码 介绍 从2.6版开始,Pyt ...
- win10下装win7双系统安装教程
win10下装win7双系统安装教程 来源:www.laomaotao.org 时间:2017-02-13 10:15 新买的电脑预装了win10系统,但win10对于有些游戏兼容性不是很好,总是会出 ...
- Python入门习题10.河内塔(汉诺塔)问题
例10 共n个圆盘,a,b,c三根柱子 #汉诺塔问题.py def Hanoi(n): #定义n阶汉诺塔问题移动次数函数 if n == 1: return 1 else: return 2*Hano ...
- go web编程——实现一个简单分页器
在go web编程中,当需要展示的列表数据太多时,不可避免需要分页展示,可以使用Go实现一个简单分页器,提供各个数据列表展示使用.具体需求:1. 可展示“首页”和“尾页”.2. 可展示“上一页”和“下 ...
- C#面试 笔试题 四
1.请你简单的说明数据库建立索引的优缺点 使用索引可以加快数据的查询速度,不过由于数据插入过程中会建索引,所以会降低数据的插入.更新速度,索引还会占磁盘空间. 2.什么是WEB服务控件?使用WEB服务 ...