第八课
8.2 Oracle体系架构
体系架构:内存架构+进程架构
8.2.1内存体系结构
Oracle DB 服务器体系结构包含以下三种主要结构:内存结构、进程结构和存储结构。
实例=SGA+后台进程
SGA:系统全局区System Global Area。
PGA:程序全局区Program Global Area,服务器进程对PGA的访问是独占式的,每个服务器进程和后台进程都有自己的PGA,服务器进程的数据及控制信息。PGA=堆栈空间+UGA。
SGA包含以下数据结构:
shared pool:共享池,缓存用户间共享的数据结构。
database buffer cache:DB高速缓存,缓存从数据库检索的数据。将频繁访问的块保留在缓冲区高速缓存中,并将不经常访问的块写入磁盘。
redo log buffer:重做日志缓冲区
large pool:大池,备份恢复操作、I/O服务器进程。
java pool:java池,java代码和数据。
stream pool:流池,供Oracle Stream使用
fixed SGA:固定区域,内部管理区域,数据库和实例信息,进程间通讯信息。
共享池:
共享池存储已解析的SQL,PL / SQL代码,系统参数和数据字典信息。
“数据字典”是数据库表和视图的集合,其中包含有关数据库、数据库结构及其用户的参考信息。
Oracle DB 使用共享SQL 区域(以及PGA 中保留的专用SQL 区域)来表示它所运行的每个SQL 语句。
共享SQL 区域包含给定SQL 语句的语法分析树和执行计划。
命中、未命中
LRU算法(Least Recently Used最近最少使用),如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。
日志写进程LWGR后台进程会将重做日志缓冲区写入磁盘上的重做日志文件(或文件组)中。
参数: log_buffer
JAVA池:
用于存储JVM中所有特定会话的JAVA代码和数据。
流池:
Oracle Steam以独占方式使用流池内存来执行以下操作:
存储缓冲的队列消息
为Oracle Stream进程提供内存
固定SGA:
固定SGA的大小由Oracle数据库设置,不能手动更改。
私有SQL区域分为以下区域:
1.运行时区域
该区域包含查询执行状态信息。
2.持久性区域
该区域包含绑定变量值。
8.2.2进程体系结构
后台进程:
v
b
g
p
r
o
c
e
s
s
、
v
bgprocess、v
bgprocess、vprocess(查看进程)
对于大多数系统来说,一个数据库写进程(DBW0) 已经足够。
RBA:redo byte address(redo地址)
db_writer_processes
DBW在可能的情况下执行多块写入以提高效率。
使用lsof命令:
1)查看进程打开的文件
lsof -p 进程号
2)查看文件被哪个进程打开
lsof redo01.log
日志写进程:
1️⃣commit->redo01.log
insert oracle
strings redo01.log
2️⃣日志切换写
3️⃣1/3,1M写
4️⃣在DBW写之前写,预写协议
5️⃣每3秒写一次
用户提交事务。
发生在线重做日志切换。
每三秒写一次。
重做日志缓冲区已满三分之一或包含1 MB缓冲数据。
DBW必须将修改后的缓冲区写入磁盘。
重做日志缓冲区是循环缓冲区。
在 DBWn 可以写入经过修改的缓冲区之前,必须先将与缓冲区更改相关联的所有重做记录写入磁盘(先行写协议write-ahead)。
SQL> desc vKaTeX parse error: Expected 'EOF', got '#' at position 22: …L> select group#̲,status from vlog;
SQL> alter system switch logfile;(切换redo日志)
Oracle数据库使用快速提交机制来提高已提交事务的性能。
组提交。
Checkpoint Process (CKPT)
The checkpoint process (CKPT) updates the control file and data file headers with checkpoint information and signals DBW to write blocks to disk. Checkpoint information includes the checkpoint position, SCN, and location in online redo log to begin recovery.
CKPT does not write data blocks to data files or redo blocks to online redo log files.
select checkpoint_change# from vKaTeX parse error: Expected 'EOF', got '#' at position 35: …eckpoint_change#̲ from vdatafile;
select checkpoint_change# from v$datafile_header;
(SMON)负责各种系统级清理职责。
监视和清理其他进程。(12c使用LREG在监听程序中动态注册数据库服务)
操作系统块:4k,db_block_size=8K
xfs_info /dev/sda3
file -s /dev/sda3
段可以跨文件
区是连续的block组成
区不能跨数据文件