Oracle体系结构(1)

本文深入解析Oracle数据库的内部结构,涵盖实例与数据库的关系、数据文件、控制文件、重做日志文件、实例与数据库结构、SGA与PGA、数据库缓冲区缓存等内容,帮助读者理解Oracle数据库的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.认识oracle数据库
oracle database是一款数据类型数据库管理系统,从严格意义上来讲oracle database是由两部分组成:
instance +database = database server
在这里插入图片描述

oracle instance:一组后台进程和内存结构
oracledatabase :存放在操作系统上的物理文件
2.data file
1.oracle数据库中的表空间由一个或多个物理数据文件组成,数据文件只能与一个表空间和一个数据库相关联。
2.oracle 数据库通过指定数量的磁盘空间和文件头所需的开销,为表空间创建一个数据文件,如果文件太大,这个过程可能会花费大量的时间,任何数据库中的第一个表空间是system表空间,因此oracle数据库在创建数据库时自动为syst表空间分配,数据库的第一个数据文件。
3.conrol file
1.数据库控制文件是数据库启动和成功操作所必需的一个小型二进制文件。
2.每个控制文件只能与一个oracle数据库相关联
3.控制文件包含有相关实例访问所需的关联数据库的信息,这些信息在启动时和正常操作时都需要,控制信息只能通过oracle数据库进行修改,没有数据库管理员或用户可以编辑控制文件。
4.redo log file
1.redo条目记录sql语句本身
2.以及执行后对数据库中某个文件某个快的修改。包括DML,DDL操作。
5.instance的结构
instance=SGA+background processes
上面说instance是由一组后台进程和内存结构构成,
SGA:内存结构
background processes:后台进程
6.database structures(数据库结构)
在这里插入图片描述
1.memory structures
oraclememory=SGA+PGA
SGA:system global area
共享的:所有server process 和 background process 共享
PGA:program global area 程序全局区,
私有的:每一个server process和background process 拥有自己的pga
在这里插入图片描述
以下命令均是在超级用户下

查看分配给数据库内存的大小

SQL> show parameter memory
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 804M
memory_target                        big integer 804M
shared_memory_address                integer     0

查看数据库中分配给sga 的大小

  SQL> show parameter sga_
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    sga_max_size                         big integer 804M
    sga_target                           big integer 0
查看当前物理内存大小
SQL> !free -m
             total       used       free     shared    buffers     cached
Mem:          2006        450       1556          0         25        236
-/+ buffers/cache:        188       1818
Swap:         4031        260       3771

7.SGA Global Area 系统全局区

在这里插入图片描述

SGA是一组共享内存结构,称为SGA组件,他包含一个orcale数据库实例的数据和控制信息。sga由所有服务器和后台进程共享,存储在 SGA的数据示例包括缓存的数据块和共享的sql区域。
1.database buffer cache
在这里插入图片描述
2.database buffer cache 的作用
1).用于缓存磁盘数据文件中读入的数据块,为所有用户共享。服务进程负责将数据文件的数据从磁盘读入到数据缓冲区中,当后续请求需要这些数据时,如果在内存中找到,则不需要再从磁盘中读取。
2)对数据的修改在内存缓冲区进行,减少写磁盘的次数,提高i/o能力,数据缓冲区中被修改的数据块(脏块)由后台进程dbwr将其写入磁盘。
缓冲区的大小对数据库的读取速度有直接的影响。
3.database buffer cache 的组成
buffer cache 有两个列表:写列表和最近使用最少的列表(lru)
buffer cahe中的内存缓冲区分成是三个部分
1).free buffer 空闲缓冲区不包含任何数据,数据库用它们从磁盘读取新的数据
2).dirty buffer 脏缓冲区,包含已修改但尚未写到磁盘的数据
3).pinned buffer 钉住/保留缓冲区,是用户会话当前正在激活使用的数据缓冲区。
3.buffer cache ——default pool
default pool 是由default pool 和nodefault pool构成。
1),default pool 的参数:db_cache_size

• 一个标准块存放的内存空间大小
• SGA 自动管理时此参数 不用设置,使用
• LRU 算法清理空间
• 标准块大小(默认 8K)
2),nodefault pool
db_nk_cache_size
指定非标准块大小内存空间,2k.4k 16k 32k
db_keep_cache_size
keep pool 存放经常访问的小表或索引等
db_recycle_cache_size
使用后立即将数据从缓冲中删除,用来偶尔做全表扫描的大表数据。
3)如需使用非标准块那么需要进行以下配置
·在buffercache 中为需要使用的非标准块配置相应的非标准高速缓存
·创建非标准块尺寸的表空间。
·将相应数据保存在非标准块存储空间上 create table xxx tablespace tbs_32;
使用db_nk_cache_size

SQL> show parameter cache

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
client_result_cache_lag              big integer 3000
client_result_cache_size             big integer 0
db_16k_cache_size                    big integer 0
db_2k_cache_size                     big integer 0
db_32k_cache_size                    big integer 0
db_4k_cache_size                     big integer 0
db_8k_cache_size                     big integer 0
db_cache_advice                      string      ON
db_cache_size                        big integer 0
db_flash_cache_file                  string
db_flash_cache_size                  big integer 0

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_keep_cache_size                   big integer 0
db_recycle_cache_size                big integer 0
object_cache_max_size_percent        integer     10
object_cache_optimal_size            integer     102400
result_cache_max_result              integer     5
result_cache_max_size                big integer 2080K
result_cache_mode                    string      MANUAL
result_cache_remote_expiration       integer     0
session_cached_cursors               integer     50

8.命中率
1.缓冲区读取操作比磁盘读取的快的多
2.命中率是测量用户从buffer cache 中访问到所需数据的百分比,不包括请求冲磁盘读所需数据。
3.命中率=(1-(物理读)/(逻辑读))*100
物理读:从磁盘中读取数据
逻辑读:从内存中读取数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值