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定大小。
(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博客 ” ,链接:https://blog.itpub.net/26764468/viewspace-723398/
,如需转载,请注明出处,否则将追究法律责任。