day06 : 01 Oracle 体系结构概念,内存结构,内存结构(服务器进程和用户进程)
一 概念:
1、 实例/instance: 后台进程+共享内存 用于管理和控制数据库
数据库/database: 物理文件的集合 为实例提供数据,如数据文件,控制文件,参数文件,日志文件等
数据库服务器/database server: 软件+实例+数据库
oracle数据库环境有以下两部分:
oracle软件,存放在服务器本地硬盘上
oracle数据库,存放在共享存储上
rac (生产环境模式)
2、实例
oracle数据库启动后首先在内存中划分一片空间,并启动一些进程,而内存和进程统称oracle数据库实例,数据库关闭后,实例就被关闭
一个数据库可以对应多个实例,如两个,四个等,一般没有单数的。用户可以通过连接到的实例访问数据库,可以实现负载均衡,提高并发等的效果,这种结构叫做oracle的RAC技术。
#查看oracle实例
[oracle@ocp003 ~]$ ps -ef | grep ora_
#查看相关内存
[oracle@ocp003 ~]$ ipcs
#启动数据库
SQL> startup;
然后再次查看进程和内存相关的信息,即可发现进程和内存中有了oracle相关的信息
oracle启动后在内存中独享一块内存区域。
3、进程间通信有如下的目的:
1、数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间;
2、共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到;
3、通知事件,一个进程需要向另一个或一组进程发送消息,通知它们发生了某件事情;
4、资源共享,多个进程之间共享同样的资源。为了做到这一点,需要内核提供锁和同步机制;
5、进程控制,有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。
其中:
第一列就是共享内存的key;
第二列是共享内存的编号shmid;
第三列就是创建的用户owner;
第四列就是权限perms;
第五列为创建的大小bytes;
第六列为连接到共享内存的进程数nattach;
第七列是共享内存的状态status。
其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,
当该段内存的mode字段设置为SHM_DEST时就会显示“dest”。
连接/connection:
连接是从客户端到Oracle 实例的一条物理路径。连接可以在网络上建立,或者通过IPC 机制建立。通常会在客户进程与一个专用服务器或一个调度器之间建立连接。
会话/session:
会话是实例中存在的一个逻辑实体。这就是你的会话状态(session state),也就是表示特定会话的一组内存
中的数据结构.提到"数据库连接"时,大多数人首先想到的就是“会话”。在服务器中的会话上执行SQL、提交事务和运行存储过程。
二 体系结构
oracle的体系结构主要分三类
内存结构
进程结构
存储结构
概览:
一 :内存结构
SGA: 系统/共享全局区
Shared Pool/共享池
Database Buffer Cache/数据库缓冲区高速缓存
Redo Log Buffer/重做日志缓冲区
Large Pool/大池
Java Pool/JAVA池
Streams Pool/流池
...
PGA: 进程全局区
UGA: 用户全局区
1、共享池
库高速缓存
存储最近使用的SQL和PL/sql语句,使用LRU(least recently used)算法
数据字典高速缓存
缓存数据字典相关的数据
SQL> show parameter shared_pool_size;
SQL> show parameter shared_pool_size;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 0
2、数据库高速缓冲区
存储最近从数据文件读入的数据块信息或用户更改后需要写回数据库的数据信息,没有提交给数据库的更改后的数据为脏数据。
SQL> show parameter db_block_size;
SQL> show parameter db_block_size;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
SQL> show parameter db_block_buffers;
SQL> show parameter db_block_buffers;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers integer 0
SQL> show parameter db_cache_size;
SQL> show parameter db_cache_size;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_size big integer 0
修改sga大小
SQL> alter system set db_cache_size = 5000M;
SQL> show parameter db_cache_size;
SQL> alter system set db_cache_size = 200m;系统已更改。SQL> show parameter db_cache_size;NAME TYPE VALUE
------------------------------------ --------------------------------- --------------------
db_cache_size big integer 208M
3、重做日志缓冲区
数据库发生修改而变化的数据在进入数据库高速缓冲区之前先进入重做日志缓冲区,变化之前的数据库放入重做日志缓冲区。
SQL> show parameter log_buffer;
NAME TYPE VALUE
------------------------------------ --------------------------------- --------------------
log_buffer big integer 7456KSQL> alter system set log_buffer =1m;
alter system set log_buffer =1m*
第 1 行出现错误:
ORA-02095: 无法修改指定的初始化参数#***该参数为静态参数,直接修改会报错误
4、大池
可选内存区,在大规模输入输出及备份过程中需要大池作为缓存空间
该参数为动态参数,可修改
SQL> alter system set large_pool_size = 10M;
系统已更改。SQL> show parameter large_pool_size;
NAME TYPE VALUE
------------------------------------ --------------------------------- --------------------
large_pool_size big integer 16M
5、java池
可选内存空间,在安装java或使用java程序时,必须设置。
SQL> alter system set java_pool_size = 30M;
系统已更改。SQL> show parameter java_pool_size;
NAME TYPE VALUE
------------------------------------ ---------------------------------
java_pool_size big integer 32M
6、流池
PGA 进程全局区
由操作系统本地分配,独立于SGA.
在专有服务器中包括如下组件:
排序区: 对某些SQL语句执行结果进行排序
会话信息: 包含本次会话的用户权限和性能统计信息
游标状态: 标明当前会话执行的SQL语句的处理阶段
堆栈区: 包含其他会话变量
注意:在共享服务器配置中,多个用户共享一个服务器进程,会话信息的内存区可能在SGA中分配,如果创建了大池,就在大池中
否则就在共享池中。
UGA 用户全局区
共享服务器模式,使用UGA来表示用户的会话状态,这部分内存会话总可以访问,UGA存储在每个共享服务器都可以访问的SGA中
PGA内存管理
SQL> show parameter sort_area_size;
NAME TYPE VALUE
------------------------------------ --------------------------------- -
sort_area_size integer 65536SQL> show sga;
Total System Global Area 1660944384 bytes
Fixed Size 8793448 bytes
Variable Size 1107296920 bytes
Database Buffers 536870912 bytes
Redo Buffers 7983104 bytes## Fixed Size: 在固定SGA中,存储一组指向SGA中其他组件的变量,Oracle使用该内存区寻找其他内存区。
## Variable Size: 该部分内存包括共享池、Java池和大池,SQL> show parameter sga_max_size; #查询sga大小
NAME TYPE VALUE
------------------------------------ --------------------------------- --------------------
sga_max_size big integer 1584M
二:服务器进程和用户进程
1、后台进程
DBWn: 将buffer cache中的脏数据写入到dbf中,只写不读。
执行时间点:
没有任何可用缓冲区
脏缓冲区过多
三秒超时
遇到检查点
查看当前的DBWn数量
SQL> show parameter db_writer_processes;#修改数量
SQL> alter system set db_writer_processes=20 scope=spfile;alter system set db_writer_processes=20 scope=both;
#设置检查点
SQL> alter system checkpoint;
CKPT: 周期性触发,更新检查点信息,更新到控制文件和每个数据文件头部。
SMON: 主内,监控实例内部,实例恢复,如整理碎片,清理不使用的临时段。
PMON: 主外,监控用户连接
在用户进程失败时执行进程恢复
清除数据库缓冲区高速缓存
释放该用户进程使用的资源
监视会话是否发生空闲会话超时
将数据库服务动态注册到监听程序
ARCn: 将写满后的redo log写入到归档日志中。
可以收集事物处理重做数据,并将该数据传输到备用目标位置
MMON: 自我监视和自我管理支持进程
MMNL: MMON辅助进程,
ADDM: 自动数据库诊断监视器
MMAN: 自动内存管理
LREG: 监听注册进程
2、前台进程
服务器进程
应用程序服务器产生到数据库服务器的连接,多个连接形成一个连接池。
#模拟应用程序服务器到数据库服务器的连接
sqlplus / as sysdba
此时,加上之前的那个连接总共两个连接。
用户的信息到达应用程序服务器后,由应用程序服务器随机选择连接到达数据库服务器,执行完成后,把执行结果返回给用户。
用户进程
用户客户端产生的进程,我们不关心。
day06 : 01 Oracle 体系结构概念,内存结构,内存结构(服务器进程和用户进程)相关推荐
- static在内存层面的作用_虚拟地址空间--用户进程看到的自己所占用的内存
我们知道内核管理物理内存,其实除了管理本身内存外,还必须管理用户空间中进程的内存,我们称这个内存为进程地址空间,也就是系统中每个用户空间进程所看到的内存. 传统的C语言编译出来的进程地址空间包含哪些对 ...
- CN_计算机网络体系结构概念@IP数据报(分组)结构@各层报文(PDU)之间的关系@PDU协议数据单元
文章目录 计算机网络的组成 组成部分角度 工作方式角度 功能组成 计算机网络数据单元基本联系 基本概念 实体 对等层 对等实体 协议@接口@服务 协议 接口 服务访问点SAP 服务 服务原语 报文(协 ...
- ORACLE内存结构:PGA And UGA,ORACLE用户进程、服务器进程
执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的 ...
- oracle e18,oracle 体系结构
Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白. 如图: 一.基本组成: Oracle server: 一般情况下是一个instance和一个database ...
- oracle体系结构剖析
一.ORACLE事例 1.ORACLE 实例 System Global Area(SGA) 和 Background Process 被成为数据库的实例. 2.ORACLE 数据库 一系列物 ...
- lob移表空间 oracle_Oracle数据库(1)Oracle体系结构概述(一)
Oracle数据库的体系结构主要包括:物理存储结构.逻辑存储结构.内存结构和实例进程结构.了解了Oracle的体系结构,就可以对Oracle数据库有一个整体认识,这样有利于后续Oracle的学习.下面 ...
- Oracle实例和Oracle数据库(Oracle体系结构)
--========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...
- ORACLE 体系结构详细图
原文地址:https://www.cnblogs.com/HengChangXin/articles/4337417.html 数据库(Database) 数据库是一个数据的集合,不仅是指物理上的数据 ...
- Oracle 体系结构详解
Oracle 体系结构详解 什么是Orcale数据库? Orcale数据库(Oracle DateBase)是一款关系型数据库(这里就不多做介绍了),通常情况下,我们会把承载我们核心数据的系统通称为数 ...
最新文章
- 一些有用的webservice
- WebSocket协议分析
- 云企业网的应用于功能详解
- lnmp一键安装脚本
- ASP.NET中常用的26个优化性能方法(转)
- tableau做折线图_Tableau | 20种常用图表(上文)
- CSDN:解决粉丝网友集中问题留言处,把你所有的问题在留言处留言,我会一一回答
- hook java_Java 实现 Hook 对鼠标键盘监听 - 沐早'S NOTEBOOK - CSDN博客
- jre环境变量配置_详解java环境变量意思-用于解决环境搭建问题
- 检查一列数据的重复项 vba_提取重复值,但字典不是重点。
- bzoj#4161-Shlw loves matrixI【常系数线性齐次递推】
- Hibernate持久化对象的状态:瞬时状态、持久化状态、托管状态
- java面试题37 关于对象成员占用内存的说法哪个正确?( )
- python 自动收集经济数据_完结】数据分析思维案例实战92 用Python自动办公,做职场高手【更新中】91.一课经济...
- 分布式服务防雪崩熔断器(Hystrix),实现服务降级
- ENVI5.3.1使用Landsat 8影像进行主成分分析实例操作
- 我们为什么要使用NodeJS
- Linux安装配置CI框架
- 使用Python写一个m3u8多线程下载器
- python爬取B站弹幕