OCP第四章:存储结构+SGA

=======================================================================================================================================

存储结构--视频12

1、data file

2、control file

3、redo log file

4、parameter file

5、passowrd file

查询数据库名语句:

show parameter db_name

select name from v$database;

查询实例名语句:

show parameter instance_name

select instance_name from v$instance;

查询数据文件所在位置:

select name from v$datafile;

查询控制文件所在位置:

select name from v$controlfile;

查询日志文件所在位置:

select member from v$logfile;

查询归档文件所在位置:

select name from v$archived_log;

查询参数文件所在位置:

select value from v$parameter where name = ‘spfile‘;

=======================================================================================================================================

服务器进程--视频13

引导:用户进程发出请求后,服务器进程就会接收

PGA作用:保存用户进程发送请求到服务器端的私有信息,比如:会话信息、排序信息等等

在PGA空间里还包括一个非常重要的空间区域,叫:UGA(用户全局区),会话信息、排序信息等都保存在UGA空间中。

PGA内存:当与用户进程连接的时候,PGA会被分配    当会话结束的时候,PGA会被释放

PGA大小:10M 至 4GB-1byte

PGA管理方式:workarea_size_policy  参数manual【手工管理】 | auto【自动管理】

查看PGA空间语句:   show parameter pga;

查看PGA管理方式语句:   show parameter work;   =======================================================================================================================================

内存结构(SGA)--视频14

引导:数据的增删改查操作,都会在SGA内存中完成,该内存被分为6大区域,被操作的数据在这6个区域里是共享的,相互配合完成操作,

当实例启动的时候,这6大内存区域就会被分配

当实例关闭的时候,这6大内存区域就会被回收

1、共享池

2、数据库高速缓冲区

3、重做日志缓冲区

4、大型池

5、Java池

6、Streams池

SGA是可读可写的内存区域,所有连接到oracle实例的用户,都可以在SGA内存中读取或者更改数据,在工作中有90%的操作都在内存中完成

查询SGA各大区域的大小语句:这些内存区域的大小,是在参数文件中设定的

show sga;

SGA的分配

8i:SGA的总大小由所有内存组建大小之和决定,不能直接定义SGA大小,对内存组建大小的修改必须在数据库重启之后才会生效,所以叫SGA静态管理             9i:SGA的总大小由初始化参数SGA_MAX_SIZE确定,各个内存组建大小之和不能超过这个参数,在这个大小之下,SGA各个内存组建可以在不重启数据库的 情况下直接修改大小,所以叫SGA的动态管理

10g:SGA的总大小既可以像9i一样动态管理,也可以实施SGA的自动管理,只需要设置初始化参数SGA_TARGET,SGA各个内存组建就可以由数据库自动设置 大小,设置的依据来源于系统自动收集的统计信息

查询SGA_MAX_SIZE参数大小语句:

show parameter sga_max_size

修改SGA_MAX_SIZE参数大小语句:

alter system set sga_max_size=1025m scope=spfile;

=======================================================================================================================================  内存结构(SGA)--视频15

共享池(shared pool)作用:

(1)储存最近执行的SQL语句

(2)保存最近使用的数据定义

组成:数据库缓冲区

数据字典缓存

大小:由SHARED_POOL_SIZE决定大小

数据库缓冲区:存储最近使用的SQL和PL/SQL语句信息

共享最常用的语句

管理上遵循LRU规则

包括两个部分:

1、共享SQL区

2、共享PL/SQL区

数据字典缓存:存储在数据库中最近使用的定义

保存了数据文件、表、索引、列、用户、权限和其他的数据库对象

在分析阶段,服务器进程查找数据字典缓存区验证对象的名字以及是否为合法的访问

对于查询和DML语句,如果数据字典的信息在缓存中,能够提高响应时间

大小由Shared pool参数决定

SGA对一条SQL语句的分析

如果以前执行过,则按照以前执行的计划执行,通常是软分析【soft parse】或快速软分析

软分析:通过PGA提交SQL语句 --> parse语句 --> soft parse --> 执行语句 --> 通过PGA输出

如果没执行过,oracle开始分析语句的语法、语义,按照优化器规则获得最佳执行计划,并且在内存中保存这个语句与之对应的执行计划等信息

硬分析:通过PGA提交SQL语句 --> parse语句 --> hard parse --> 分析与得到优化方案【CBO or RBO】

--> 根据优化方案制定执行计划 --> 执行语句 --> 通过PGA输出

LRU管理规则:由于内存是非常紧缺的资源,对于SQL程序就需要多注意优化,提交到内存的SQL语句就需要LRU进行管理,LRU算法确定共享对象的持续保存期,                   长期不用的SQL语句保存信息会在LRU中被释放,如果不想被释放,就调用dbms_shared_pool.keep存储过程将该过程驻留在shared pool中

=======================================================================================================================================  内存结构(SGA)--视频16

数据库高速缓存区:       (1)暂存从数据文件中获得的数据块的数据映像,由于内存中读写速度快,为了减少物理IO,就将要读取的数据保存在内存中操作,即保存在高速缓存区中

(2)同样遵循LRU算法管理内存

(3)当再次需要操作这些数据时,可以从内存中直接获取和更新,语句执行效率能够大幅度的提高

(4)初始化参数DB_BLOCK_SIZE决定了数据块的大小,这也是数据库I/O的最小单位,默认的大小是8K

(5)数据库高速缓冲区由多个独立的子缓存池构成,可以独立的设置大小

default池    DB_CACHE_SIZE:如果没有指定数据块保存在哪个缓冲池的情况下,就会将这些数据块默认保存在default池中

keep池       DB_KEEP_CACHE_SIZE:将对象的数据块保留在内存中,keep池中所保存的数据,不会被LRU释放,会一直保留在内存中

recycle池    db_recycle_cache_size:当该池中所保留的数据里某些如果不再重要的时候,就会将这些数据清除掉,为新的数据腾出空间

【只有default池可以设置成被SGA自动管理】

扩展:不管被保存进来的数据被保留在高速缓冲区里的哪一个池中,如果在对这些数据做修改操作的时候,被修改的数据都会拥有两种状态,即干净状态和脏状态干净的状态在oracle中被称为:可写的列表,该列表中保留的是已经被修改之后的数据,这部分数据叫做脏数据脏的状态在oracle中被称为:ARU的列表,该列表中保留的是没有被修改过的数据,这部分数据叫做干净数据脏数据就会被DBWR后台进程写入物理磁盘中,其他的数据就不会被写入。

数据库缓冲区大小:

db_cache_size参数决定

查询default池的大小语句:

show parameter db_cache_size

查询keep池的大小语句:

show parameter db_keep_cache_size

查询recycle池的大小语句:

show parameter db_recycle_cache_size

=======================================================================================================================================  内存结构(SGA)--视频17

重做日志缓冲区        (1)暂存数据库中所有数据块的改变,当对某些数据块中的数据做更改等操作时,就会被记录到重做日志缓冲区中

(2)内存管理是采用FIFO方式,先进先出,用这种方式会保证数据库的日志按照顺序循环的向重做日志缓冲区中写入

(3)重做日志被用于提供数据库的恢复,如果不恢复的话,基本用不到日志

(4)数据库中会通过LGWR后台进程,定期或满足条件后,会将保留在日志缓冲区中的内容,物理写入磁盘中的日志文件里

(5)重做日志缓冲区的大小由参数LOG_BUFFER决定,但这个内存区不能动态调整大小,一般不用设置太大,1M至2M即可

(6)该日志缓冲区不能被SGA自动管理,缓冲区的大小要手动设置

查看日志缓冲区大小语句:

show parameter log_buf

=======================================================================================================================================  内存结构(SGA)--视频18:大池部分略过... 内存结构(SGA)--视频19:Java池部分略过...

=======================================================================================================================================  内存结构(SGA)--视频20

进程部分       1、用户进程:客户端连接数据库的程序,当客户端发出连接请求,用户进程启动,当断开连接,用户进程关闭

2、服务进程:响应并接受用户操作请求的程序,连接则启动,服务进程被分配,连接断开后,服务进程关闭

3、后台进程:DBWR、LGWR、PMON、SMON、CKPT

查看当前系统中正在被执行的后台进程语句:

select name from v$bgprocess where paddr <> ‘00‘;

=======================================================================================================================================  内存结构(SGA)--视频21:数据库的安装部分略过... 内存结构(SGA)--视频22:数据库的安装部分略过...

时间: 2024-12-18 15:34:20

OCP第四章:存储结构+SGA的相关文章

Delphi基本之pascal语法(第四章.循环结构程序设计)

第四章.循环结构程序设计 一.FOR语句格式:1.FOR <循环变量>:=<初值> TO <终值> DO <语句>: 2.FOR<循环变量>:=<终值> DOWNTO <初值> DO <语句>.[例1]:输入10个数,求最大值.最小值.和.及平均值. PROGRAM ten(input,output);VAR a,s,max,min,avg:real; i:integer;BEGIN write('please

第6章 存储结构与磁盘划分

章节简述: 本章节从Linux系统的存储结构引入,讲述硬盘存储结构.硬件命名规则以及内核Udev设备管理器服务. 让读者理解文件系统的作用,能够区分ext3,ext4,xfs有何不同并学习将硬盘设备分区.格式化以及挂载等常用硬盘管理操作. 完整配置SWAP交换分区.quota服务限制磁盘配额.ln命令创建软/硬链接.RAID磁盘阵列(0.1.5和10).LVM逻辑卷管理器. 本章目录结构 6.1 一切从“/”开始 6.2 物理设备的命名规则 6.3 文件系统与数据资料 6.4 挂载硬件设备 6.

《Linux就该这么学》 第6章 存储结构与磁盘划分

6.1 一切从"/"开始Linux系统中的一切文件都是从"根(/)"目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途.另外,Linux系统中的文件和目录名称是严格区分大小写的.例如,root.rOOt.Root.rooT均代表不同的目录,并且文件名称中不得包含斜杠(/).Linux系统中的文件存储结构如图6-1所示. 表6-1 Linux系统中常见的目录名称以及相应内容目录名称应放置文件的内容/boot开机所需文件-内核

第六章 存储结构和磁盘划分 第6天 7月21日

存储结构和磁盘划分 Linux里的所有硬件设备都被抽象成了文件.如打印机,套接字,块设备,字符设备等. linux里文件是按照FHS 文件层次化目录来存储的. \ 从根目录开始. 文件名严格区分大小写,不得包含/ 文件夹都有常有用途. 常见目录名称以及相应内容. 系统启动必须: /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件. /etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动. /lib:Library的缩写存放基本代码库(

第四章 选择结构(二)

一.本章目标 掌握switch选择结构 能够综合运用if选择结构和switch选择结构解决问题 二.内容 1 swith 选择结构 1.1 为什么使用switch选择结构 问题: 韩嫣参加计算机编程大赛 如果获得第一名,将参加麻省理工大学组织的1个月夏令营 如果获得第二名,将奖励惠普笔记本电脑一部 如果获得第三名,将奖励移动硬盘一个 否则,不给任何奖励 public class Compete { public static void main(String[] args) { int ming

Java基础第四章(选择结构二)

一.switch选择结构 1.switch 语法 switch(表达式){ case 常量1: //代码块1 break; case 常量2: //代码块2 break; default: //代码块n break;} 二.结构选择总结: 1.if: if(条件) {代码块 //条件成立时需要执行的代码} 2.if-else选择结构 if(条件){代码块}else{代码块] 3.多重if选择结构 if(条件){代码}else if(条件2){代码2}else{代码3} 4.嵌套if选择结构 if

第四章 分支结构实验

C程序设计实验报告 实验项目:分支结构实验 姓名:王承伟    实验地点:家    实验时间:2020.3.29 一.实验目的与要求 1. 掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”) 2.学会正确地使用关系表达式和逻辑表达式 3.掌握各种形式的if语句语法和使用方法.if语句中if和else的匹配关系,以及if语句的嵌套 4.熟练掌握switch语句的语法和使用方法,注意在switch语句中break语句的用法及switch语句的嵌套 二.实验内容 1.实验练习:4.3.1.if语

第四章 选择结构(二) Switch结构

switch选择结构 语法:    switch(表达式){ case 常量1: //代码块1; break; case 常量2: //代码块2; break; default : //代码块n; break; } public class Compete2{ public static void main(String[]args) { int mingCi=1; switch(mingCi){ case 1: System.out.println("奖励汽车一辆"); break;

C语言 第四章 分支结构练习

目录 一.输入语文,数学成绩,根据平均分分3档 二.使用switch实现算术运算 三.使用多重if实现算术运算 四.for循环 五.while循环 六.do while循环 七.密码示例 八.多重if实现计算月份天数 九.switch实现计算月份天数 十.计算闰年 十一.判断素数 十二.100内所有素数 十三.switch实现输入数字与符号运算结果 十四.多重if实现输入数字与符号运算结果 一.输入语文,数学成绩,根据平均分分3档 #include "stdio.h" void mai