ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 第一章 oracle架构组件

第一章 oracle架构组件

原创 Linux操作系统 作者:lingsam 时间:2012-05-12 00:04:37 0 删除 编辑
oracle整体架构如下图:
 
 

架构组成说明:
1.oracle server由oracle instance(实例)和oracle database(数据库)组成。
2.oracle实例:
  •    实例是连接数据库的接口;一个实例仅能打开一个数据库,但一个数据库可以被多个实例打开(如rac);实例由内存(sga)和后台进程(background process)组成。
  •    连接一个实例需要(1)建立一个用户连接(在用户进程和服务器进程之间)(2)创建会话    
 
 
 
3.oracle数据库:
    包括数据文件、控制文件、联机重做日志文件三种文件类型。
4.内存结构:
    包括SGA和PGA。
  •     SGA   实例启动时被分配,是oracle实例的组成部分,由sga_max_size控制。
              SGA:由database buffer caches、shared pool、redo log buffer 、其他结构,附加内存结构large pool 、java pool。              
                (1)database buffer caches:存储从数据文件中检索到的数据块;当获得和更新数据时能获得性能提升;通过LRU规则管理;由db_cache_size定大小;db_block_size确定主要的数据块大小。由独立的子缓存组成:db_cache_size、db_keep_cache_size、db_recycle_cache_size。
                   SQL> alter system set db_cache_size=96m;         可以被动态修改
                  其中, 通过设置db_cache_advice可以统计信息,以预测不同cache大小的行为。可查看统计信息视图v$db_cache_advice。
               (2)shared  pool :包含library cache 和data dictionary cache。用于存储大部分最近执行过的SQL声明和最近使用的数据定义。由shared_pool_size确定其大小。
                     SQL> alter system set shared_pool_size=6m;
                  library cache :存储大部分最近使用的SQL和PL /SQL声明;遵守LRU算法;包含共享SQL区和PL/SQL区。
                 data dictionary cache:最近使用的数据库中的定义;包括数据库文件、表、索引、列、用户、权限和其他objects;在语法解析阶段,服务器进程会查询数据字典以解析object名并验证其是否合法;把数据字典信息缓存到内存中以提高查询和DML操作的相应时间。
               (3)redo log buffer:记录数据库中数据块的变化;主要目的是用于恢复;改变的记录称为redo entries;redo  entries中包含重建或日志变化的信息。由log_buffer定大小。
              (4)large pool:是SGA中的可选内存区域;可以减轻shared_pool的负担;主要用于共享服务器中的会话内存、I/O服务器进程、备份和恢复操作或RMAN、平行执行信息缓存(parallel_automatic_tunning 设置为true);不适用LRU;大小由large_pool_size定;可以动态调整。
              (5)java pool:安装和使用java时使用;解析java命令使用;由java_pool_size定大小。
  •     PGA   服务器进程启动时被分配
              (1)该内存保留为每个用户进程连接到数据库时使用。
              (2)服务器进程创建时被分配;中断时被收回;
              (3)只能为一个进程使用。
 
5.进程结构:
包括用户进程、服务器进程、后台进程。
  • 用户进程:
向服务器请求连接时启动。为客户端所有。
必须首先在用户进程和服务器进程之间建立一个连接;不会直接作用于oracle服务器;
  • 服务器进程:
当一个用户创建了一个会话后,向一个实例发出连接时启动。
直接作用于oracle服务器;当用户进程请求发起时生成,并向用户进程返回结果;可以是专用或共享服务器。
客户端连接oracle服务器时采用TCP/IP 协议(通过网卡),而oracle服务器内部连接数据库则采用 IPC协议或借助本地回环接口lo。
 
 
  • 后台进程:
实例启动时启动。
必须的后台进程:DBWn,LGWR,SMON,PMON,CKPT
可选后台进程:ARCn,LMDn等。
其中ARCn在生产环境中几乎是必须的。
 (1)DBWn  将database buffer cache 中的数据写入到数据文件中。当以下情况发生时,DBWn执行。
     a.检查点发生
     b.脏buffer达到临界值
    c.没有空余的buffer
    d.发生超时
    e.RACping请求发生时
    f.表空间改为离线时
    g.表空间改为只读时
    h.删除或阻断表时
    i.开始备份表空间时
(2)LGWR 将redo log buffer中的数据写入到redo log中。当以下情况发生时,LGWR执行。
a.提交时
b.1/3buffer已满
c.每3秒
d.在DBWn写之前。
(3)SMON
a.实例恢复(前滚redo log文件中的变化、为用户接口打开数据库、回滚未提交的事物)
b.合并空闲空间
c.回收临时段
(4)PMON:  进程失败后,通过以下方法清除失败进程
a.回滚事物
b.释放锁
c.释放其他的资源
d.重启死进程
(5)CKPT
a.用检查点信息更新数据文件头
b.用检查点信息更新控制文件
(6)ARCn
a.可选的后台进程
b.设置为归档模式后,会自动归档redo日志文件
c.保留数据中所有的数据变化
 
6.逻辑结构
>tablespace>segment>extent>blocks
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26764468/viewspace-723398/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-03-06

  • 博文量
    11
  • 访问量
    61103