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


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

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

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';



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


   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;



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


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

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


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

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


select pid,program,background from v$process ;

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


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的结构

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

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 应用环境





































上一篇:Oracle RAC 11g实战指南(刘宪军) PDF扫描版[20MB]高清下载


下一篇:Oracle 11g密码过期问题及解决方案