ORACLE体系 - 1(oracle体系结构构成及理解)
mhr18 2024-09-21 18:56 22 浏览 0 评论
【一】实例与数据库
1.1 Oracle 基础架构及应用环境
1.1.1 Oracle Server的基本结构
1)oracle server:database + instance
2)database:data file、control file、redolog file
3)instance: an instance access a database
4)oracle memory: sga + pga
5)instance:sga + backgroud process
1.1.2 系统全局区SGA:
1)在一个instance只有一个sga;
2)sga为所有session共享,随着instance启动而分配;
3)instance down,sga被释放。
1.2 SGA的基本组件
1)shared pool
共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。
共享池由库缓存(library cache)和数据字典缓存(data dictionary cache)以及结果缓存(result cache)等组成。共享池的大小直接影响数据库的性能。
关于shared pool中的几个概念:
① library cache:
sql和plsql的解析场所,存放sql/plsql语句代码,以及它们的执行计划,以备其他用户共享。
② data dictionary cache
存放重要的数据字典信息,以备其他用户共享使用。
③ server result cache:
存放服务器端的SQL结果集及PL/SQL函数返回值。
④ User Global Area (UGA):
共享服务器连接模式下如果没有配置large pool,则UGA属于SGA的shared pool, 专用连接模式时UGA属于PGA。
2)database buffer cache(PPT-II-328)
用于存储从磁盘数据文件中读入的数据,为所有用户共享。
服务器进程(server process)负责将数据文件的数据从磁盘读入到数据缓冲区中,当后续的请求需要这些数据时如果在内存中找到,则不需要再从磁盘读取。
数据缓冲区中被修改的数据块(脏块)由后台进程DBWR将其写入磁盘,数据缓冲区的大小对数据库的读取速度有直接的影响。
要弄明白Database Buffer Cache中的几个cache概念:
① Buffer pool=(default pool)+(nodefault pool)
其中:
default pool(参数db_cache_size)是标准块存放的内存空间大小,SGA自动管理时此参数不用设置,使用LRU算法清理空间:
nodefault pool:对应的参数有:
db_nk_cache_size: 指定非标准块大小内存空间,比如2k、4k、16k、32k。
db_keep_cache_size: 存放经常访问的小表或索引等。
db_recycle_cache_size: 与keep相反,存放偶尔做全表扫描的大表的数据。
①如何指定使用某个表调入nodefault pool
SQL> alter table scott.emp1 storage(buffer_pool keep);
SQL> select segment_name,buffer_pool from dba_segments where segment_name='EMP1';
②default pool对应的参数是db_cache_size与标准块default block是配套的,如果default block是8k, db_cache_size这个参数将代替db_8k_cache_size。
③如果要建立非标准块的表空间,先前要设定db buffer中的与之对应的db_nk_cache_size参数。
第一步,先指定db buffer里的16k cache空间大小
SQL> alter system set db_16k_cache_size=8m;
第二步,建立非标准块表空间
SQL> create tablespace tbs_16k datafile '/u01/oradata/prod/tbs16k01.dbf' size 10m blocksize 16k;
SQL> select TABLESPACE_NAME,block_size from dba_tablespaces;
3)redo log buffer
以日志条目(redo entries)方式记录了数据库的所有修改信息(包括DML和DDL),目的是为数据库恢复,日志条目首先产生于日志缓冲区,日志缓冲区较小,一般缺省值在3M-15M之间,它是以字节为单位的。
日志缓冲区的大小启动后就是固定不变的,如要调整只能通过修改参数文件后重新启动生效,不能动态修改!不能由SGA自动管理!
4)large pool(可选)
为了进行大的后台批处理操作而分配的内存空间,主要用于共享服务器的session memory(UGA),RMAN备份恢复以及并行查询等操作,有助于降低shared pool碎片。
5)java pool(可选)
为了java虚拟机及应用而分配的内存空间,包含所有session指定的JAVA代码和数据。
6)stream pool(可选)
为了stream process而分配的内存空间。stream技术是为了在不同数据库之间共享数据,因此,它只对使用了stream数据库特性的系统是重要的。
1.3 Oracle的进程:
1)user process:
客户端的process,访问数据库分为三种形式:
① sql*plus
② 应用程序
③ web方式(EM)
①sql*plus可以执行sql和plsql请求,是典型的客户端进程。
linux作为客户端:可以使用ps看到sqlplus关键字:
$ ps -ef |grep sqlplus
windows作为客户端,可以通过查看任务管理器看到sqlplus用户进程:
C:\Documents and Settings\prod>sqlplus sys/system@ as sysdba
②应用程序
例如:通过java程序直接嵌套sql语句,或调用Oracle存储过程。
③web方式
例如:使用OEM登录、管理数据库。
$emctl start dbconsole
2)server process:
服务器端的进程,user process不能直接访问Oracle,必须通过相应的server process访问实例,进而访问数据库。
[oracle@prod ~]$ ps -ef |grep LOCAL
在linux下看到的server process, (LOCAL=YES)是本地连接,(LOCAL=NO)是远程连接。
可以在oracle查看V$process视图,它包括了当前所有的后台进程和服务器进程。
SQL> select pid,program,background from v$process;
background字段为1是background process,其余都是server process
3)background process
基本的后台进程有
1)smon:系统监控进程
①当实例崩溃之后,Oracle会自动恢复实例。
②释放不再使用的临时段。
2)pmon:进程监控
①当user process失败时,清理出现故障的进程,释放所有当前挂起的锁定,释放服务器端使用的资源;
②监控空闲会话是否到达阈值;
③动态注册监听。
3)dbwn: 数据写入进程
1、将变更的数据缓冲区的脏buffer写入数据文件中。
2、释放数据缓冲区空间。
3、触发条件:
①ckpt发生
② 脏块太多时(阈值)
③db_buffer自由空间不够时
④表空间read only/offline/backup模式等
以上4个状况之一发生时,dbwn都会被触发。
4)lgwr:写日志条目
1、将日志缓冲区中的日志条目写入日志文件;
2、不像DBWR可以有多个进程并行工作,LGWR只有一个工作进程;
3、触发条件:
① commit
②online redo switch
② 3秒
④三分之一满(或1M满)
⑤先于dbwr写(先记后写,必须在dbwr写脏块之前写入日志,保证未提交数据都能回滚)
以上5个状况之一发生时, lgwr都会记日志fast commit和group commit
第一个事务commit时发生写日志的动作,在这个过程中如果又有其他事务也commit,则等到第一个事务写日志完成后,其他事务以group commit的方式一次性一起commit写日志。
5)ckpt:生成检查点
作用:通知或督促dbwr写脏块。
1、完全检查点:保证数据库的一致性。
2、增量检查点:不断更新控制文件中的检查点位置,当发生实例崩溃时,可以尽量缩短实例恢复的时间。
3、局部检查点:特定的操作下,如针对某个表空间read only/offline、Shrink 数据文件、ALTER TABLESPACE BEGIN BACKUP等 。
6)arcn:归档当前日志
归档模式下,发生日志切换时,把当前日志组中的内容写入归档日志,作为历史日志提供数据库的recovery。
1.4 PGA的基本组件
1)程序全局区(Program Global Area)的作用
①缓存来自服务器进程和后台进程的数据和控制信息;
② 提供排序、hash连接;
③ 不提供session之间的共享;
④ PGA在进程创建时被分配,进程终止时被释放,所有进程的PGA之和构成了PGA的大小;
PGA的管理是比较复杂的,9i后,Oracle推荐使用PGA自动管理,屏蔽了PGA的复杂性。
2)PGA的结构:
①SQL工作区(SQL Work Area): 有几个子区 1、Sort Area, 2、Harh Area 3、Bitmap Merge Area
作用:排序操作(order by/group by/distinct/union等),多表hash连接,位图连接,创建位图
②会话空间(Session Memory)
作用:存放logon信息等会话相关的控制信息
③私有SQL区域(Private SQL Area)
作用:存储server process执行SQL所需要的私有数据和控制结构,如绑定变量,它包括固定区域和运行时区域
③ 游标区域(Cursor Area):PLSQL游标使用的就是这块区域。
1.5连接方式
1)专用连接模式(dedicated)
对于客户端的每个user process,服务器端都会出现一个server process,会话与专用服务器之间存在一对一的映射(一根绳上的两个蚂蚱)。
专用连接的PGA的管理方式是私有的,Oracle缺省采用专用连接模式。
2)共享连接模式(shared)
多个user process共享一个server process。
① 共享服务器实际上就是一种连接池机制(connectionpooling),连接池可以重用已有的超时连接,服务于其它活动会话,但容易产生锁等待,此种连接方式现在已经很少见了。
②所有调度进程(dispatcher)共享一个公共的请求队列(resquest queue),但是每个调度进程都有与自己响应的队列(response queue)。
③在共享服务器中会话的(UGA)存储信息是在SGA中的,而不像专用连接那样在PGA中存储信息,这时的PGA(非UGA部分))的存储结构为堆栈空间。
3)驻留连接池模式(database resident connection pooling,简称DRCP):
适用于必须维持数据库的永久连接,结合了专用服务器模式和共享服务器模式的特点,它使用连接代理(而不是专用服务器)连接客户机到数据库,优点是可以用很少的内存处理大量并发连接(11g新特性,特别适用于Apache的PHP应用环境)。
the end !!!
@jackman 共筑美好!
相关推荐
- 甲骨文签署多项大型云协议,其一未来可贡献超300亿美元年收入
-
IT之家7月1日消息,根据甲骨文Oracle当地时间6月30日向美国证券交易委员会(SEC)递交的FORM8-K文件,该企业在始于2025年6月1日的202...
- 甲骨文获TEMU巨额合同,后者大部分基础设施将迁移至Oracle云
-
IT之家6月23日消息,Oracle甲骨文创始人、董事长兼首席技术官LarryEllison(拉里埃里森)在本月早些时候的2025财年第四财季和全财年财报电话会议上表示,Oracle...
- Spring Boot 自定义数据源设置,这些坑你踩过吗?
-
你在使用SpringBoot进行后端开发的过程中,是不是也遇到过这样的问题:项目上线后,数据库连接总是不稳定,偶尔还会出现数据读取缓慢的情况,严重影响了用户体验。经过排查,发现很大一部分原因竟然...
- 一个开箱即用的代码生成器(一个开箱即用的代码生成器是什么)
-
今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...
- 低代码建模平台-数据挖掘平台(低代码平台的实现方式)
-
现在来看一下数据连接。·这里是管理数据连接的空间,点击这里可以新增一个数据连接。·输入连接名称,然后输入url,是通过gdbc的方式去连接的数据库,目前是支持mysql、oracle以及国产数据库达梦...
- navicat 17.2.7连接oracle数据库提示加载oracle库失败
-
系统:macOS15.5navicat版本:navicatpremiumlite17.2.7连接oracle测试报错:加载oracle库失败【解决办法】:放达里面找到程序,显示简介里面勾选“使...
- 开源“Windows”ReactOS更新:支持全屏应用
-
IT之家6月17日消息,ReactOS团队昨日(6月16日)在X平台发布系列推文,公布了该系统的最新进展,包括升级Explorer组件,支持全屏应用,从Wine项目引入了...
- SSL 推出采用全模拟内置混音技术的模拟调音台Oracle
-
英国调音台传奇品牌SolidStateLogic宣布推出Oracle——一款采用全模拟内置混音技术的调音台,在紧凑的AWS尺寸机箱内集成了大型调音台的功能。该调音台提供24输入和...
- 47道网络工程师常见面试题,看看有没有你不会的!
-
你们好,我的网工朋友。网络工程师面试的时候,都会被问到什么?这个问题其实很泛,一般来说,你肯定要先看明白岗位需求写的是什么。基本上都是围绕公司需要的业务去问的。但不可否认的是,那些最基础的概念,多少也...
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
-
e公司讯,从汉得信息获悉,近日,微软官方宣布InternetExplorer桌面应用程序将于2022年6月15日正式停用。目前大部分客户都是使用IE浏览器打开EBS的Form界面,IE停用后,只能使...
- 36.9K star ! 推荐一个酷炫低代码开发平台!功能太强!
-
前言最近在逛github,看看能不能搜罗到一些对自己有帮助的开源软件。不经意间看到一个高star的java开源项目:jeecg-boot。进入在线演示版一看,感叹实在是太牛了!此开源项目不管是给来学习...
- Linux新手入门系列:Linux下jdk安装配置
-
本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...
- 手把手教你在嵌入式设备中使用SQLite3
-
摘要:数据库是用来存储和管理数据的专用软件,使得管理数据更加安全,方便和高效。数据库对数据的管理的基本单位是表(table),在嵌入式linux中有时候它也需要用到数据库,听起来好难,其实就是几个函数...
- JAVA语言基础(java语言基础知识)
-
一、计算机的基本概念什么是计算机?计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行、自动高速处理海量数据的现代化智能电子设备。由硬件和软件组成、没有安装过任何软件的计算机称...
- 再见 Navicat!一款开源的 Web 数据库管理工具!
-
大家好,我是Java陈序员。在日常的开发工作中,常常需要与各种数据库打交道。而为了提高工作效率,常常会使用一些可视化工具进行操作数据库。今天,给大家介绍一款开源的数据库管理工具,无需下载安装软件,基...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 甲骨文签署多项大型云协议,其一未来可贡献超300亿美元年收入
- 甲骨文获TEMU巨额合同,后者大部分基础设施将迁移至Oracle云
- Spring Boot 自定义数据源设置,这些坑你踩过吗?
- 一个开箱即用的代码生成器(一个开箱即用的代码生成器是什么)
- 低代码建模平台-数据挖掘平台(低代码平台的实现方式)
- navicat 17.2.7连接oracle数据库提示加载oracle库失败
- 开源“Windows”ReactOS更新:支持全屏应用
- SSL 推出采用全模拟内置混音技术的模拟调音台Oracle
- 47道网络工程师常见面试题,看看有没有你不会的!
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)