oracle 体系结构

时间:2022-09-19 14:37:53

oracle 体系结构

oracle 体系结构

数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。

1. oracle工作原理:

1)、在数据库服务器上启动Oracle实例;
2)、应用程序在客户端的用户进程中运行,启用Oracle网络服务驱动器与服务器建立连接;
3)、服务器运行Oracle网络服务驱动器,建立专用的服务器进程执行用户进程;
4)、客户端提交事务;
5)、服务器进程获取sql语句并检查共享池中是否有相似的sql语句,如果有,服务器进程再检查用户的访问权限;否则分配新的sql共享区分析并执行sql语句;
6)、服务器从实际的数据文件或SGA中取得所需数据;
7)、服务器进程在SGA中更新数据,进程DBWN在特定条件下将更新过的数据块写回磁盘,进程LGWR在重做日志文件中记录事务;
8)、如果事务成功,服务器进程发送消息到应用程序中。

2. oracle内存由SGA+PGA所构成

Pga(Program Global Area )程序全局区

是当程序起来时,给server process用(不包含在instance里面)

SGA(System Global Area)系统全局区

由一组内存结构组成,它是由所有用户进程共享的一块内存区域。启动例程时,Oracle自动分配SGA,关闭例程时,oracle自动释放SGA所占用的内存空间。

SGA对所有用户共享,PGA不共享。

3. oracle服务器

i、oracle服务器由oracle数据库和oracle实例组成。
ii、oracle数据库是一个数据的集合,存放在数据文件里,该集合被视为一个逻辑单元。
iii、oracle实例由管理数据库的后台进程和内存结构所构成。

oracle 体系结构

4 oracle实例

i、Oracle实例是内存结构和后台进程的集合
ii、启动Oracle实例的过程,即:分配内存、启动后台进程
iii、Oracle实例的内存包括SGA和PGA;
     当启动实例的时候分配SGA;
     当服务器进程建立时分配PGA;
     一般情况下,SGA:PGA=8:1分配内存。

iiii、Oracle实例的后台进程包括SMON、PMON、DBWR、LGWR、ARC、CKPT等。

5、SGA(System Global Area): 系统全局区

i0、数据库信息存储于SGA,由多个数据库进程共享。
i1、SGA包括:共享池、数据缓冲区、日志缓冲区、Large池、Java池、Stream池。
i2、共享池 (Share Pool )
1)、共享池(Share Pool)用于存放最近执行的SQL语句和数据字典信息

共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。
如在执行SELECT * FROM emp语句时,会对sql语句进行语法分析->编译->生成执行计划->运行执行计划等,这些操作都在共享池中完成;如果再次执行SELECT * FROM emp语句时,会在共享池中查找是否有相同的sql,如果存在则省去编译、生成执行计划操作步骤而是直接运行执行计划,因此养成良好的编码习惯对于提高oracle执行效率非常有帮助。
2)、共享池由库高速缓存(Library Cache)和数据字典高速缓存(Dictionary cache)两部分组成 。

a 库高速缓存(Library Cache)

库高速缓存用于存放最近执行的sql语句信息,包括sql语句文本,解析代码值及执行计划。

假设执行一条sql语句

-select ename,job from emp where empno=7788;

如果最近(还没有被lru淘汰)执行过这条语句,他就会直接从cache里面读结果;如果没有执行过,就需要读数据文件,这个过程就比较复杂,效率差距很大。

这里还有两个概念:

物理i/o:从数据缓冲区找不到所需要的数据,就要从硬盘里面读取。

逻辑i/o:从数据缓冲区能找到所需要的数据,

理论上讲一个数据库性能是否良好,这个逻辑i/o应该占95%以上

b 数据字典高速缓存区(Dictionary cache)

用于存放数据字典的信息,包括表、列定义以及权限信息)

库高速缓存和数据字典高速缓存大小是动态变化的,不是固定的。

SQL> alter  system   set  share_pool_size=60m;
3)、共享池的大小直接影响数据库的性能。

i3、数据缓冲区(Database Buffer Cache )

1)、用于存储从磁盘数据文件中读入的数据,所有用户共享。
2)、服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。
3)、数据缓冲区的大小对数据库的读取速度有直接的影响。
4)、硬盘上的数据文件中的数据,如何返回给用户的?
i、从硬盘取出来,直接返回给用户,使得获取数据的效率非常低。
ii、从硬盘取出来,放到数据缓冲区,从数据缓冲区中把数据返回给用户。下次读取同样的数据的话,直接从数据缓冲区中获取,不需要再从硬盘获取。

oracle 体系结构

Db_cache_size Default 默认池,所有段都被默认高速缓存到默认池。(采用LRU)

Db_keep_cache_size ,确保某些数据块始终被保留到内存中

Db_recycle_cache_size ,数据高速缓存区“回收池”

i4、日志缓冲区 
1)、日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。 
2)、当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。
3)、秒 三、日志缓冲区已经用了三分之一,满足其中任意一项就可以)把日志缓冲区中的这些记录写到在线日志中去。

i5、Large池 
为了进行大的后台进程操作而分配的内存空间,主要指备份恢复、大型IO操作、并行查询等。

Large Pool是SGA中一个可选的内存区域,它只用于shared server环境

i6、Stream池 
为了stream应用而分配的内存空间,高级复制技术一部分。

i7、JAVA池
为了java应用而分配的内存空间,为Java命令的语法分析提供服务。

6. PGA(Process Global Area): 程序全局区

用于存放服务器进程的数据和控制信息,独立于SGA的一块内存区域。

当用户连接到Oracle Server时,Oracle server会为每个服务器进程分配相应的PGA.

SGA是所有服务器进程都可共享那个的一块内存区域,而每个服务器进程都具有私有的PGA内存空间。

客户端在通过sql语句连接database时,必须通过实例Instance来连接和管理数据库。

Connection:客户端进程和服务端进程建立通讯。

Session:当用户经过Oracle server认证后开始建立会话,直到用户退出登录,会话结束

7. oracle进程:用户进程、服务器进程(影子进程,相对用户进程而言)、后台进程

i、用户进程是一个需要与oracle服务器进行交互的程序。当用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程。

ii、服务器进程用于处理连接到该实例的用户进程的请求。当用户连接至oracle数据库实例创建会话时,即产生服务器进程。

iii、后台进程是Oracle数据库为了保持最佳系统性能和协调多个用户请求而设置的。Oracle实例启动时即创建一系列后台进程。用户进程位于客户端,服务器进程、后台进程位于服务器端

iiii 用户进程和服务器进程的关系:

1)用户在客户端启动了一个应用程序,例如sql*plus,就是在客户端启动一个用户进程;与oracle服务器端连接成功后,会在服务器端生成一个服务器进程,该服务器进程作为用户进程的代理进程,代替客户端执行各种命令并把结果返回给客户端。9i、10g、11g都使用专用连接。
    2)用户进程一旦中止,服务器进程立刻中止。

8. 后台进程

i0、PMON 进程监控进程,监控用户进程是否正常。

1)、清理出现故障的进程。

2)、释放所有当前挂起的锁定。

3)、释放故障进程使用的资源。

i1、SMON 系统监控进程,实时监控整个oracle状况。

1)、在实例失败之后,重新打开数据库时自动恢复实例。

2)、整理数据文件的*空间,将相邻区域结合起来。

3)、释放不再使用的临时段。

i2、DBWR 数据写入进程

1)、管理数据缓冲区,将最近使用过的块保留在内存中。

2)、将修改后的缓冲区数据写入数据文件中。

i3、LGWR 日志写入进程

1)、负责将日志缓冲区中的日志数据写入日志文件。

2)、系统有多个日志文件,该进程以循环的方式将数据写入文件。

i4、CKPT检查点进程

1)、为了防止实例崩溃,为了尽快进行实例恢复的进程。

2)、检查点包括两种:完全检查点、增量检查点。

3)、完全检查点只有下面两种情况下被触发:

1,用户发出alter system checkpoint;

2,除了shutdown abort以外的其他方式正常关闭数据库。

4)、增量检查点触发情况:

1,每隔三秒。

2,在线日志切换。

DBWR、LGWR、CKPT之间如何协调工作的?

i5、查看进程信息

1)、从v$process中查询启动的后台进程信息

2)、查看启动了几个DBWR进程

select * from v$process where program like '%DBW%';

查看DBWR进程个数: show parameter db_wr,DBWR进程个数跟脏数据的产生有一定的影响。

修改DBWR进程个数:

alter system set db_writer_processes=3 scope=memory; --会报"无法修改指定的初始化参数"错误

alter system set db_writer_processes=3 scope=spfile;--修改成功,下次启动时才生效

3)、查看启动了几个ARC进程

select * from v$process where program like '%ARC%';

9. 会话

i0、会话是用户与 Oracle 服务器的单个连接

i1、当用户与服务器建立连接时创建会话

i2、当用户与服务器断开连接时关闭会话

i3、从v$session中查询会话信息,SELECT * FROM v$session;

10  oracle数据库结构

i、Oracle数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区。

ii、Oracle 数据库包括逻辑结构和物理结构;

物理结构包含数据库中的一组操作系统文件;

逻辑结构指数据库创建之后形成的逻辑概念之间的关系。

11 物理结构

物理组件就是Oracle数据库所使用的操作系统物理文件。我们可以在D:\dev\oracle\product\10.2.0\oradata\orcl目录下进行查看,在生产环境中不同的文件放在不同的目录,根据用户访问的频繁情况来做决定。
1)、主要物理文件可分为三类: 
i、数据文件:数据文件用于存储数据库数据,如表、索引数据等。
ii、控制文件:控制文件是记录数据库物理结构的二进制文件。
iii、在线日志文件:记录对数据库的所有修改信息,用于故障恢复。
注意:丢失这些文件,数据库不可以继续运行,需要进行介质恢复。

2)、非主要物理文件包括:
参数文件、密码文件、告警和跟踪文件、归档日志文件、备份文件。
参数文件分为pfile文件和spfile文件,位于ORACLE_HOME\DATABASE目录下,9i开始默认不使用sfile文件,如spfileorcl.ora文件。
密码文件:sys用户密码,位于ORACLE_HOME\DATABASE目录下,如pwdorcl.ora文件。
查看是否有归档日志:archive log list。

3)ORACLE_HOME: D:\dev\oracle\product\10.2.0\db_1
注意:丢失这些文件,数据库仍然可以继续运行,不需要进行介质恢复。

12 逻辑结构

数据库的逻辑结构是从逻辑的角度分析数据库的组成。

Oracle 的逻辑组件包括:数据库->表空间->段->区->数据块。

13 表空间

i1、表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。
i2、每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。
i3、表空间的大小等于构成该表空间的所有数据文件大小之和。
i4、创建表空间的语法是:
CREATE TABLESPACE tablespacename
DATAFILE 'filename' [SIZE integer [K|M]] 
[AUTOEXTEND [OFF|ON]];
i5、默认表空间
1)、默认包含如下表空间(从v$tablespace中查看):SYSTEM、SYSAUX、TEMP、UNDOTBS1、USERS、EXAMPLE。
2)、SYSTEM是系统表空间,存放系统的最基本的信息,如果SYSTEM表空间坏掉,Oracle将无法启动。
3)、SYSAUX从10g中引入,作为SYSTEM的辅助表空间,用以减少SYSTEM表空间的负荷 。以前其他表空间中的一些组件,现在放到SYSAUX表空间中了。比如,以前SYSTEM表空间中LogMiner、以前SYSTEM表空间中Logical Standby、Spatial、以前DRSYS表空间中Oracle Text等。
i6、TEMP是临时表空间,当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即在Oracle实例中的临时表空间中进行。
UNDOTBS1是撤销表空间,是UNDO类型的表空间,保存用户进行DML操作中,修改前的数据。
USERS是数据库默认的永久表空间。
EXAMPLE是数据库测试用例所涉及的表的所属表空间。
i7、select * from dba_data_files;--查看表空间的具体信息
select * from v$tablespace;--查看表空间

14 段、区、数据块

i、段,ASSM 自动段存储管理
1)、段是构成表空间的逻辑存储结构,段由一组区组成。 
2)、按照段所存储数据的特征,将段分为若干种类型,主要有数据段、索引段、回退段和临时段。
ii、区
1)、区为段分配空间,它由连续的数据块组成。 
2)、当段中的所有空间已完全使用时,系统自动为该段分配一个新区。
3)、区不能跨数据文件存在,只能存在于一个数据文件中。
iii、数据块
1)、数据块是Oracle服务器所能分配、读取或写入的最小存储单元。
2)、Oracle服务器以数据块为单位管理数据文件的存储空间。 
3)、show  parameter db_block_size; --查看数据块大小

15 模式

模式,等同于用户

1)、模式是对用户所创建的数据库对象的总称。

2)、模式对象包括表、视图、索引、同义词、序列、过程和程序包等

oracle 体系结构的更多相关文章

  1. Oracle体系结构总结

    1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 可参考Oracle Architecture系列随堂笔记: ...

  2. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  3. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Leshami      原文地址:http://blog.csdn.net/ ...

  4. oracle 体系结构解析

    三.oracle 体系结构 1.oracle内存由SGA+PGA所构成 2.oracle数据库体系结构数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. oracl ...

  5. Oracle 课程一之Oracle体系结构

    课程目标 •理解ORACLE数据库体系架构—内存结构和进程 •理解SQL在数据库中的运作流程 •理解UNDO&REDO原理 •理解commit原理   1.Oracle数据库概述 •数据库:物 ...

  6. oracle体系结构

    oracle体系结构有四个部分组成分别为:oracle 服务器.用户进程.服务器进程.其他关键文件.其中oracle服务器又有实例(instance)和database组成是一个数据库管理系统. 一. ...

  7. Oracle体系结构之进程

    Oracle体系结构之进程 一.概述 Oracle中的每个进程都要执行一个特定的任务(或者一组任务),每个进程都会为自己分配内存(PGA)来完成它的任务.一个Oracle实例主要有以下3类进程: (1 ...

  8. oracle 体系结构简介

    1.1.SGA(system global area) SGA是oracle Instance的基本组成部分,在示例启动是分配.是一组包含一个oracle实例的数据和控制信息的共享内存结构.主要用于存 ...

  9. Oracle 体系结构chapter2

    前言:Oracle 体系结构其实就是指oracle 服务器的体系结构,数据库服务器主要由三个部分组成 管理数据库的各种软件工具(sqlplus,OEM等),实例(一组oracle 后台进程以及服务器中 ...

随机推荐

  1. 解决PHP生成校验码时“图像因其本身有错无法显示”的错误

    今天使用http://crazymud.iteye.com/blog/452293给出的代码进行PHP生成校验码功能的实现,发现firefox一直提示“图像.......因其本身有错无法显示”的问题, ...

  2. Application, JDBC, 数据库连接池, Session, 数据库的关系

    RT,这几个东东已经困扰我很长一段时间了... 这次争取把她们理清楚了! 参考资料: 1. 数据库连接池:http://www.cnblogs.com/shipengzhi/archive/2011/ ...

  3. php--opp--1.什么是面向对象?

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...

  4. log4j示例

    示例代码:此示例从控制台输入日志,设置了输出等级. # # Log4J Settings for log4j 1.2.x (via jakarta-commons-logging) # # The f ...

  5. 变形虫mysql的负载均衡 读写分离

    变形虫概述 图片来自   http://docs.hexnova.com/amoeba/amoeba-products.html  文档上说也可以做mongdb的分布式. 应用: 具有负载均衡.高可用 ...

  6. Android清单文件具体解释(三)----应用程序的根节点<application>

    <application>节点是AndroidManifest.xml文件里必须持有的一个节点,它包括在<manifest>节点下.通过<application>节 ...

  7. 用c3m自动生成的化学机理文件导入mfix里需要注意的一些问题

    1. 首先是类似这种写法: Species_g(1) = "CH4" Species_Alias_g(1) = "CH4" 可能会报错,写在一行可能就好了,如: ...

  8. XSS跨站脚本小结(转)

    原文链接:http://www.cnblogs.com/xiaozi/p/5588099.html#undefined XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的 ...

  9. Ext&period;net combobox 的disabled

    C#:禁用combobox this.ComboBox7.Disabled =true; C#:隐藏 <ext:RadioGroup ID="RadioG_sfzg" run ...

  10. Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils

    Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils Spring 系列目录(https://www.cnblogs.com/binary ...