ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

oracle 体系_第一章实例与数据库(11G)

2020-04-05 10:02:19  阅读:259  来源: 互联网

标签:11G process 数据库 cache 进程 实例 oracle 日志 pool



1 oracle 的基础架构及应用环境

图片.png

oracle的基本组成结构

  1. oracle server =由数据库+实例组成

  2. database = 数据文件+控制文件+redo 日志组成

  3. oralce 内存调度= SGA+PGA组成

  4. oracle 实例= SGA +后台进程组成


系统全局SGA    

1.在一个instance只有一个SGA ,一个系统可以有多个实例。故一个系统可以有不同的SGA

2.SGA 内存为所有oracle 客户端生成的session 共享,随着实例的启动而分配,实例关闭,SGA 内网将被释放

数据库


2 SGA的基本组件

  1. shared pool (共享池)

   共享池是对sql,pl/sql 程序进行语法分析,编译执行的内存区域。

   共享池由库缓存(library cache)和数据字典缓存(data dictionary cache )以及结果缓存(result cache)组成

   共享池的大小直接影响数据库的性能。

    共享池中的几个概念

    库缓存:库缓存是sql和plsql的解析场所,存放sql、plsql语句代码,以及他们的执行计划。以备其他用户共享

    数据字典缓存。主要存放的是数据字典信息。以备其他用户使用

    结果缓存:存放的是以前执行过的sql的结果集和PL/sql 函数返回值

    user global area(UGA)

    存放服务器端的sql结果集及pl/SQL 函数返回值

    共享服务器连接模式下 如果没有配置large pool 则UGA 数据SGA的shared pool ,专用连接模式时UGA 属于PGA

 

 2 database buffer cache

 用户存储从磁盘数据文件中读入的数据,为所有用户共享。

 服务器进程server process 负责将数据文件的数据,从磁盘读入到数据缓冲区,当后续的请求需要在这些数据时如果在内存中找

 到,则不需要再从磁盘中读取。

 数据缓冲区中被修改的数据库(脏块) 由后台进程DBWR 将其写入磁盘。

 数据缓冲区的大小对数据库的读取速度有直接的影响。

 database buffer cache中的几个cache概念

 buffer pool = (default pool) + (nodefault pool)


其中:

default pool 是标准块存放的内存空间大小,SGA 自动管理时此参数不用设置,使用LRU 算法清理空间

nodefault pool 对应的参数有

    DB_nk_cache_size 指定非标准块大小的内存空间,比如2k 4k 16k 32k

    DB_keep_caceh_size   存放经常访问的小表或索引等。

    DB_recycle_cace_size 与keep相反,存放偶尔做全表扫描的大表数据。



  可以将固定某个表调入到 nodefault pool中

  alter table scott.emp1 storage(buffer_pool keep)


可以使用命令进行查看

select segment_name,buffer_pool from dba_segments where segment_name='EMP1';



图片.png


   emp1 表保存了两份,一份是在存储上,一份是在内存里


 default pool 对应的参数是DB_cache_size 与标准块default block 是配套的,如果default block是8k,DB_cache_size 这个参数将

代替db_8k_cache_size

 如果要建立非标准块的表空间,先前要设定db buffer中的与之对应的db_nk_cache_size 参数


SQL> alter system set db_16k_cache_size=8m;

SQL> create tablespace tbs_16k datafile '/u01/oradata/prod/tbs16k01.dbf' size 10m blocksize 16k;

SQL> select TABLESPACE_NAME,block_size from dba_tablespaces;



图片.png


3  redo log buffer

 以日志条方式记录数据库的所有修改信息包括DML 和DDL ,目的是为了数据库恢复,日志条目首先产生于

日志缓冲区,日志缓冲区较小,一般缺省在3M-15M 之间,它是以自己为单位的

日志缓冲区的大小启动后是固定不变的,如果调整只能通过修改参数文件后重新启动生效,不能动态修改,

不能由SGA 自动管理


4 large pool (可选)

为了进行大的后台进程操作而分配的内存空间,主要用户共享服务器的session memroy  rman 备份恢复以及并行查询等操作,有助于降低shared pool 碎片

5 java pool

 为了java虚拟机及应用而分配的内存空间,包含所有session指定的java代码和数据

6.stream pool

为了stream process 而分配的 内存空间,stream技术是为了在不同数据库之间共享数据,因此它只对使用了stream 数据库特性的系统是重要的。



3 oracle 的进程


user process;

客户端的的进程,访问数据库分为三种形式,1.sql plus 2.应用程序 3 web方式(em)


server process

服务器器端的进程,user process 不能直接访问oracle,必须通过相应的server process 访问实例,进而访问数据库

linux 下命令 可以查看

ps -ef | grep LOCA

图片.png


在linux可以看到的server process l(local=yes)是本地连接,(local=no) 是远程连接

可以在oracle 查看V$process 视图,它包含了当前所有的后台进程和服务器进程


select pid,program,background from v$process ;

图片.png


background  字段为1是 background process 其他都是服务器进程


基本的后台进程有


smon:系统监控进程,当实列崩溃后,oracle会自动恢复实列,释放不再使用的临时短

pmon:进程监控,当用户进程失败时,清理出现故障的进程,释放所有当前被挂起的锁定,释放服务器使用的资源,监控空闲会话是否达到阈值,动态注册监听

dbwr :数据写入进程,将变更的数据缓冲区的脏buffer 写入数据文件中,释放数据缓冲区空间。可以有多个进程

在以下情况触发dbwn 写入数据文件1.检查点发生,2内存脏块达到阈值,3.db_buffer 自由空间不够时 4.表空脱机在线备份时

lgwr:写日志条目,将日志缓冲区中的日志条目写入日志文件中。lgwer 只有一个工作进程

在以下情况下会触发LGWR 进程.1,commit 2.logbuffer 三分之一满。3.检查点发生时,先于dbwr写入日志文件 4、时间到达3秒

ckpt:生成检查点,通知dbwr写入脏块 检查点有三种

  1. 完全检查点:保证数据库一致性

  2. 增量检查点:不断更新控制文件中的检查点位置,当发生实例崩溃时,可以尽量缩短实例恢复的时间。

  3. 局部检查点:特定的操作下针对某个空间

arcn 归档当前日志:归档模式下,把当前日志组的内容写入归档日志,作为历史日志提供数据库的recovery


4 PGA 的基本组件


program global area (程序全局区)的作用

缓存来自服务器进程和后台进程的数据和控制信息

提供排序,hash连接

pga在进程创建时被分配,进程终止时被释放,所有进程的pga之和构成了pga的大小 。



pga的结构

图片.png

sql 工作区:有几个子区,1.sort area,2.harh area 3,bitmap merge area

作用排序操作,多表连接,位图连接,创建位图

会话空间   session memory

作用:存放logon信息等会话相关的控制信息

私有sql区域

作用:存储server process 执行sql所需要的私有数据和控制结构,如绑定变量,它包括固定区域和运行是区域

游标区域 plsql 游标使用就是这块区域


5 数据库的连接方式


专用连接模式(dedicated )

对于客户端的每个user process 服务器端都会出现一个server porcess ,会话与专用服务器之间存在一对一的映射。

专用连接的pga的古汉丽方式是私有的。oracle 缺省采用专用连接模式



共享连接池模式


多个user process 共享一个server process

  1. 共享服务器实际上是一种连接池机制,连接池可以重用已有的超时连接,服务器与其他活动火花,单容易产生锁等待,此种连接方式现在已经很少了

  2. 所有的调度进程共享一个公共的请求队列,但是每个进程都有自己的响应队列

  3. 在共享服务中会话的UGA 存储信息是在SGA 中,而不是想专用链接那个在pga中存储信息,这是的pga的存储结构为堆栈空间


驻留池模式


适用于必须维持数据库的永久链接,结合了专用服务器模式和共享服务器模式的特点,它使用链接代理,而不是专用服务器连接客户机到数据库,优点是可以用很少的内存

处理大量的并发连接,特别使用与apache 的php 应用环境





































标签:11G,process,数据库,cache,进程,实例,oracle,日志,pool
来源: https://blog.51cto.com/lusiyuan/2484929

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有