KingHu88-关注互联网以及分享IT运维工作经验

当前位置:首页 - 数据库 - ORACLE - 正文

君子好学,自强不息!

oracle实例详解

2018-11-13 | ORACLE | kinghu | 166°c
A+ A-

实例概念

Oracle实例是内存结构和后台进程的集合

启动Oracle实例的过程,即分配内存、启动后台进程的过程

Oracle实例的内存包括两部分:SGA(system global area)和PGA(process global area)

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

内存结构

Ø 实例启动时,分配SGA

Ø SGA占整个Oracle内存80%

    - 数据库信息存储于SGA,由多个数据库进程共享

    - SGA包括6个部分

        · 共享池:

            ◊ 共享池参数为:SHARED_POOL_SIZE,默认80M

            ◊ 对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域

            ◊ 由库缓存(Library cache)和数据字典缓存(Data dictionary cache)组成

            ◊ 其大小直接影响数据库性能

        · 数据缓冲区:

            ◊ 包含三块:

                ® 脏缓存块、:保存已被改动过的缓冲块。一条SQL语句对某个缓存块进行修改后,该缓存块就被标记为脏缓存块,由DBWn进程写入到硬盘数据文件中,永久保存。

                ® 命中缓存块、:保存近期正在被访问的缓存块。它被保留在数据快速缓存中,不会被写入数据文件

                ® 空暇缓存块、:该缓存块中没数据,等待被写入数据

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

            ◊ 服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度(类似MySQL的查询缓存)

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

        · 日志缓冲区:

            ◊ 日志快速缓存区大小由LOG_BUFFER决定,查看SHOW PARAMETER LOG_BUFFER;

            ◊ 日志记录数据库的所有修改信息(DML操作),日志信息首先产生于日志缓冲区

            ◊ 当日志缓冲区的日志满足3种条件(1、缓冲区空间已满。2、每3秒一次写入。3、缓冲区使用三分之一),由后台进程将日志数据写入日志文件中

            ◊ 日志缓冲区对数据库的性能影响较小

        · Large池:

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

        · JAVA池:

            ◊ 为java应用而分配的内存空间

        · Stream池:

            ◊ 为了stream应用而分配的内存空间


Ø 服务器进程启动时,分配PGA

Ø PGA占整个Oracle内存20%

    · PGA包含每个服务器进程所需的数据和控制信息,比如每个session(会话)传入的SQL绑定变量、以及对该session进行控制的控制信息。

    · 用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle数据库连接的用户进程所需的信息

    · 共享连接模式和专用连接模式,PGA的管理方式不同

    · 大多数情况下,采用专用连接模式。

Ø SGA+PGA = 整个服务器内存80%



进程结构

Ø 用户进程

    · 一个需要余Oracle服务器进行交互的程序(客户端)。

Ø 服务器进程

    · 用于处理连接到该实例的用户进程的请求。

    · 用户连接到Oracle实例创建会话时,即产生服务器进程。

    · 和用户进程一一对应,一个用户进程对应一个服务器进程

Ø 后台进程

    · Oracle为了保存最近系统性能和协调多个用户请求而设置的

    · Oracle实例启动时创建一系列后台进程

    · 后台进程包含:

        § PMON(进程监控进程)

            1) 清理出现故障的进程

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

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

        § SMON(系统监控进程)

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

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

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

        § DBWR(数据写入进程)

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

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

        § LGWR(日志写入进程)

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

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


修改Oracle内存大小

show PARAMETERS memory_    --查看跟内存相关参数设置
alter system set memory_max_target = 1024 scope=spfile; --数据库重启生效

启用AMM(自动内存管理)三个条件

statistics_level TYPICAL
pga_aggregate_target  0
sga_target 0


本文来源:KingHu88

本文地址:http://www.kinghu.cc/index.php/post/196.html

关注我们:微信搜索“Edangerous”添加我为好友

版权声明:如无特别注明,转载请注明本文地址!

推荐阅读
发布人:
下一篇

博主有点懒,啥也没写!
最近发表