oracle体系结构
oracle体系结构有四个部分组成分别为:oracle 服务器、用户进程、服务器进程、其他关键文件。其中oracle服务器又有实例(instance)和database组成是一个数据库管理系统。
一、oracle instance
oracle实例instance是一个访问数据库的机制由内存结构(SGA)和后台进程组成(包括五个后台进程PMON,SMON,DBWR,LGWR,CKPT这五个后台进程是必须的,即只要这五个后台进程中的任何一个无法正常启动的话,整个数据库实例就没法启动。其他后台进程的启动都是可选择的。)实例一旦启动就分配系统全局区同时启动后台所需的后台进程。一个实例只能同时操作一个其对应的数据库,但是一个数据库可以同时被几个数据库实例操作(oracle集群中)。
启动oracle instance的指令是startup,它的启动意味这SGA的所有内存结构都已经生成,所有的后台进程都已经在内存中正常运行。
用户进程与instance的连接时通过服务器进程来对接的,用户进程不能直接访问instance,必须通过新建的服务器进程进行一对一的对接这就是专用连接模式(在配置oracle客户端时配置本地命名系统和监听时选择的dedicated就是专用连接模式与之相对的是共享服务器连接模式shared server)。
当oracle创建了一个服务器进程的同时为该服务器进程分配一个内存区称为程序全局去PGA,PGA是一个私有的内存去不能共享且只属于一个进程随进程的创建而分配随进程的介绍而终止。在dedicated模式下PGA中包含以下结构:排序区、游标状态区、会话信息区、堆栈区。
1、SGA区
SGA区包含了如下的几个内存结构:共享池(shared pool)、数据库高速缓存区(database buffer cache)、重做日志缓冲区(redo log buffer)和其他的一些结构 如锁和统计数据。
(1)共享池
共享池由库高速缓存区library cache和数据字典高速缓存区data dictionary cache两部分组成的
库高速缓存区library cache:
引入库高速缓存区的目的就是共享sql和plsql代码。要想共享sql 或plsql代码第一要保证库共享缓存区要足够大才能使得sql语句不会很快被淘汰出队列。第二、sql语句要是能被共享的通用代码,因为oracle是比较sql语句的正文来决定两个语句是否相同的,只有当正文相同时oracle才重用已经存在的编译后的sql代码和执行计划。在有实参的情况下尽量使用绑定变量的方式来重新sql语句 如:select * from emp where emp.sal>=&v_sal,因为变量的赋值不是在编译阶段而是在运行阶段。
数据字典高速缓存区 data dictionary cache:
服务器进程把数据文件、表、索引、列、用户和其他数据库对象的定义和权限的信息放入数据字典高速缓存区,以备其他用户进程访问可以直接从缓存区中取数据,提高数据的读取效率
数据库提供静态参数SHARED_POOL_SIZE来改变共享池的大小:alter system set SHARED_POOL_SIZE=32M
(2)数据库高速缓存区database buffer cache
主要用来保存sql查询中生成的结果集,处理sql语句时首先在database buffer cache中查找目标数据集,如果没有的话再从磁盘上读取数据进入内存。oracle提供里DB_BLOCK_SIZE,DB_BLOCK_BUFFERS两个参数通过两个参数的乘积来调整database buffer cache的大小。但是以上两个参数都是静态的参数,另个oracle9i以上版本提供DB_CACHE_SIZE动态参数来改变database buffer cache的大小
alter system set DB_CACHE_SIZE=48M
(3)重做日志缓冲区(redo log buffer)
在执行dml操作时检查是否将原始数据写入redo log buffer,如果没有那么写入redo log buffer然后添加到数据高速缓存区,对oracle所做的任何修改都会在redo log buffer中记录。
注:除此之外SGA中还有可能包含large pool和java pool等数据结构
oracle的内存缓存区的大小是可以动态调节的,内存缓冲区的最小划分和调度单位是区组,oracle是利用区组来管理SGA内存的,区组就是一片连续的虚拟内存区是oracle分配和回收内存区的基本单位。SGA至少包含三个区组即SGA固定区(其中包含了重做日志缓冲区)、数据库高速缓存区、共享池缓冲区
show parameters显示参数文件中可以设置的全部参数
show sga获得sga的相关信息
select name,type,value from v$parameter where name='sga_max_size'显示sga_max_size的值(sga区最大值)
2、oracle的主要后台进程
(1)重做日志写进程LGWR:
负责将重做日志缓冲区中的数据顺序的写到重做日志文件中
(2)数据库写进程DBWR
负责将数据库高速缓存区中的脏缓冲区中的数据写到数据文件中
(3)系统监督进程SMON
在遇到特殊的情况时自动执行oracle实例的恢复工作。包含执行前滚、前滚完成之后打开数据库、回滚没有提及的事务
(4)进程监督进程PMON
当某个进程崩溃时PMON将负责他的清理工作包含回滚当前用户的事务、释放用户所加的表一级的和行一级的锁、释放用户所用的其他资源
(5)校验点和校验点进程
作为数据库恢复的标记点,用来辅助实例的恢复。
(6)归档日志进程ARCH
该进程不是必须的,但是在可选择的进程里面该进程是最应该被选择的。在归档模式下ARCN将切换后的重做日志文件复制到归档日志文件。归档日志文件实际上是oracle在脱机状态下的对重做日志文件的备份。归档操作一般是自动进行的。在遇到数据文件丢失或损坏后,一般数据库要进行完全恢复,oracle数据库应该运行在归档模式下。利用这些归档日志文件就可以完全恢复数据库中的数据。
二。database
databse主要由一下几类文件组成:数据文件、控制文件、重做日志文件
1、控制文件:包含维护和校验数据库一致性所需的信息,是数据库的最重要的文件,所有的数据库操作都必须由控制文件来完成,保证控制文件的完整性是数据库正常运行的基础。
2、数据文件:包含数据库中 的真正的数据。
3、重做日志文件:包含了当前系统崩溃后进行恢复所需要的记录的变化信息。
注:数据库运行时还需要除此之外的其他的文件包含初始化参数文件、密码文件、归档重做日志文件等,但是这些文件不属于database。
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中的每个进程都要执行一个特定的任务(或者一组任务),每个进程都会为自己分配内存(PGA)来完成它的任务.一个Oracle实例主要有以下3类进程: (1 ...
- oracle 体系结构简介
1.1.SGA(system global area) SGA是oracle Instance的基本组成部分,在示例启动是分配.是一组包含一个oracle实例的数据和控制信息的共享内存结构.主要用于存 ...
- Oracle 体系结构chapter2
前言:Oracle 体系结构其实就是指oracle 服务器的体系结构,数据库服务器主要由三个部分组成 管理数据库的各种软件工具(sqlplus,OEM等),实例(一组oracle 后台进程以及服务器中 ...
随机推荐
- JS中表格的全选和删除要注意的问题
在项目开发中,由于刚刚开始做项目,我对js还不是很精通,所以在用js对表格的全选和删除中遇到了不少问题,后来通过查找资料解决了,之后总结了一下关于js表格的全选和删除出现的一些问题,希望能帮助到大家. ...
- 表设计与SQL优化
1. 说说分区表的主要好处是什么,为什么会有这些好处. 分区功能能够将表.索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区.每个分区有自己的名称,还可以选择自己的存储特性. 从数据库管理员的 ...
- SqlLikeAttribute 特性增加 左、右Like实现
SqlLikeAttribute 特性原来只实现了全Like,今天增加左.右Like实现 更新时间:2016-04-30 /// <summary> /// 获取查询条件语句 /// &l ...
- C#中精确计时的一点收获
以下所有代码运行环境:Windows 2003, Intel(R) Core(TM) 2 Duo CPU E8400 @ 3.00GHz 2.99GHz,2.96GB内存 根据综合网上的一些文章,精 ...
- S - 骨牌铺方格(第二季水)
Description 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种, ...
- C++程序设计实践指导1.4正整数转换为字符串改写要求实现
改写要求1:改为适合处理超长整数 #include <cstdlib> #include <iostream> #include <string> using na ...
- 前端-mate讲解
<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部,不包含任何内容. & ...
- Java编程思想——类型信息(RTTI)
一.概念 编译时已知的到所有的类型:就是在写代码阶段就确定是这个类型了,当运行程序的时候,类型是不可改变的 举例:List<String> str = new ArrayList(); ...
- 类型 - PHP手册笔记
类型简介 PHP 支持 8 种原始数据类型. 四种标量类型: boolean(布尔型,不区分大小写) integer(整型) float(浮点型,也称作double) string(字符串) 两种复合 ...
- Raknet实现的简单服务器与客户端的交互
1. 首先下载Raknet的源代码,我用的是4.0的,不是最新的,解压后编译DLL工程,编译完成后进入解压的根目录下,进入Lib文件夹下找到RakNet_DLL_Debug_Win32.dll, R ...