oracle 物理和逻辑结构、SGA和PGA的作用和构成以及自动管理、默认的表空间的结构的特点

1.1 体系结构

  数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织和管理机制

  oracle提供开放、全面、综合的信息管理,由oracle数据库和oracle实例组成。oracle数据库是一组数据的集合,被视为一个逻辑单元;oracle实例是管理数据库的后台进程和内存结构(包含PGA和SGA)的集合;
在这里插入图片描述
PGA支持的服务器进程和用户进程是一一对应的关系;

1.2 实例

  oracle实例是内存结构和后台进程的集合;启动oracle实例的过程,即内存分配、启动后台进程;
oracle实例的内存包含SGA和PGA;Oracle实例的后台进程包括SMON、PMON、DBWR、LGWR、ARC、CKPT等

1.2.1 内存结构

  oracle一般占整个服务器内存的80%
  其中,SGA(系统全局区)占oracle内存的80%,实例启动时分配SGA
在这里插入图片描述

  PGA(程序全局区)占oracle内存的20%,当服务器进程启动时分配PGA

1.2.2 SGA

  数据库信息存储在SGA,由多个数据库进程共享;SGA包括:共享池、数据缓冲区、日志缓冲区、Large池、Java池、Stream池

select * from v$sga;

在这里插入图片描述

(1)共享池(起重要影响)

共享池是对SQL、PL/SQL程序进行语法分析:
  scott用户执行 select * from emp : 语法分析,编译,生成执行计划,运行执行计划均在共享池内完成;下次执行同一个sql select * from emp 时,不再编译和生成执行计划,而是直接运行执行计划。
  system用户执行同一个sql select * from emp 时,也不再编译和生成执行计划,而是直接运行执行计划。 执行sql select * from Emp时,由于语句存在差异,需要按照步骤进行语法分析,编译,生成执行计划,运行执行计划。

共享池由库缓存和数据字典缓存组成
共享池的大小直接影响数据库的性能

(2)数据缓冲区(起重要影响)

  oracle中,用户不直接取硬盘中数据,而是通过数据缓冲区;进行update、delete操作,先把行记录从硬盘中取出,写入数据缓冲区,再在数据缓冲区进行修改,最后把数据缓冲区中的修改写入硬盘;进行insert操作,在数据缓冲区进行插入,再写入硬盘;
  数据缓冲区用于存储从磁盘数据文件中读取的数据,所有用户共享;
  服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘中读取,提高了读取速度;
  数据缓存区的大小对数据读取速度有直接影响;

(3)日志缓冲区

  日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区;当日志缓冲区的日志数据达到一定数量时,后台进程会把日志数据写入日志文件中;相对而言,日志缓冲区对数据库性能影响较小

(4)Large池

  为了进行大的后台进程操作而分配的内存空间,主要指备份恢复,大型IO操作、并行查询(parallel)等;
并行查询

(5)Java池

  为了java应用而分配的内存空间

(6)Stream池

  为了stream应用而分配的内存空间 stream 流 高级复制技术

1.2.3 PGA

oracle实例中有3种不同类型的进程:

  用户进程:一个需要与oracle服务器进行交互的程序。当用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程(客户端)
  服务器进程:(服务器端)用于处理连接到该实例的用户进程的请求。当用户连接到oracle数据库实例创建会话时,即产生服务器进程(用户进程和服务器进程一一对应)
  后台进程:(服务器端)

  PGA包含单个服务器进程所需要的数据和控制信息,比如每个session传入的sql绑定变量以及对该session进行控制的控制信息。如果该session进行了排序或者hash连接操作,也会使用PGA中的内存。PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与oracle数据库连接的用户进程所需的信息。

专用连接模式:
在这里插入图片描述

  PGA有2种管理模式,共享连接模式(服务器进程和用户进程可以是多对多 一对多 多对一的关系)和 专用连接模式(一对一的关系)。大多数情况下,采用专用连接模式,用户在客户端启动一个应用进程,就是在客户端启用一个用户进程;与oracle服务器端连接成功后,会在服务器端生成一个服务器进程,该服务器进程作为用户进程的代理,代替客户端执行各种命令并把结果返回给客户端。用户进程一旦中止,服务器进程立刻中止。

(会话是用户与oracle服务器的单个连接,当用户与服务器建立连接时创建会话,当用户与服务器断开连接时关闭会话,从v$session视图中查看会话信息)

select * from v$session;

在这里插入图片描述

select * from v$sql;

在这里插入图片描述

1.2.4 后台进程
select * from v$process;

在这里插入图片描述

(1)PMON 进程监控进程

  用户进程中止,服务器进程的PGA内存应该立刻被回收,PMON负责监控这一过程;

PMON的作用:
  清除出现故障的进程;
  释放所有当前挂起的锁定;
  释放故障进程使用的资源;

(2)SMON 系统监控进程

  在实例失败之后,重新打开数据库时自动恢复实例;
  整理数据文件的自由空间,将相邻区域结合起来;
  释放不再使用的临时段;

(3)DBWR 数据写入进程

  管理数据缓冲区,将最近使用过的块保存在内存中;
  将修改后的缓冲区数据写入数据文件中。

select * from v$process where program like '%DBW%';

在这里插入图片描述
  当前DBWR进程只有一个,若频繁写数据库,增加DBWR进程数据,可加快数据缓冲区的脏数据写入数据文件。

在这里插入图片描述
修改 db_writer_processes 参数

alter system set db_writer_processes=3;

在这里插入图片描述
添加scope
在这里插入图片描述

 alter system set db_writer_processes=3 scope=spfile;

在这里插入图片描述
注:
SCOPE = SPFILE
  此更改写入初始化参数文件,更改将在下次启动时生效。动态参数与静态参数都一样可以。也是静态参数唯一可以使用的方式。

SCOPE = MEMORY
  只在内存上修改,立即生效,但重启后将不再生效,因为并没有写入到初始化参数文件。只适用于动态参数,静态参数则不允许。

SCOPE = BOTH
  既写入到初始化参数文件,也在内存上修改,立即生效。同样也只适用于动态参数,静态参数则不允许。

在这里插入图片描述

在这里插入图片描述

(4)LGWR 日志写入进程

  负责将日志缓冲区中的日志数据写入到日志文件。
  系统有多个日志文件,该进程以循环的方式将数据写入文件

(5)CKPT 检查点进程

  防止实例崩溃的进程;
检查点包括2种:完全检查点、增量检查点

  完全检查点只有在以下2中情况下被触发:
1.用户发出 alter system checkpoint
2.除了shutdown abort以外其他方式正常关闭数据库

增量检查点触发情况:
1.每隔3秒
2.在线日志切换

1.2.5 11g的自动内存管理

  自动内存管理 AMM(auto memory management) :只需要为oracle的整体使用分配一个总的内存大小即可

初始化参数 statistics_level为typical或all,才可以启动AMM
在这里插入图片描述

新的初始化参数memory_target来定义整个内存的大小,即SGA和PGA总的大小
在这里插入图片描述

新的初始化参数memory_max_target来定义memory_target最大能达到的值
在这里插入图片描述
注:如果使用AMM,则sga_target和pga_aggregate_target的值应该设置为0
在这里插入图片描述
在这里插入图片描述

11g的后台进程MMAN,用于进行自动内存管理

修改内存最大值,(这里有个坑,若没有修改pga使用内存大小,直接降低最大内存,会导致实例无法启动,慎重)

alter system set  memory_target=5000m;

在这里插入图片描述
在这里插入图片描述

alter system set  memory_max_target=5500m scope=spfile;

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.3 数据库

  oracle数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区。oracle数据库包括逻辑结构和物理结构

1.3.1 物理结构(数据库中一组操作系统文件)

  主要物理文件(丢失这些文件,数据库不可继续运行,需要进行介质恢复)分为三类:

(1)数据文件:数据文件用于存储数据库数据,如表、索引数据
(2)控制文件:记录数据库物理结构的二进制文件
(3)在线日志文件:记录数据库所有修改信息,用于故障恢复

在这里插入图片描述
注: 现有的每个在线日志文件组内仅有一个文件,需要扩展; 对于DBF文件,有的访问频繁,有的访问少,可调整DBF文件到不同的磁盘;

  非主要物理文件
在windows系统中不要求配置ORACLE_HOME,注意在linux系统中ORACLE_HOME指此目录
在这里插入图片描述

(1)参数文件(pfile spfile):
从9i开始,使用spfile启动,没有pfile文件
在这里插入图片描述

(2)密码文件:
sys用户的密码
在这里插入图片描述
(3)告警和跟踪文件:
在这里插入图片描述
(4)归档日志文件

(5)备份文件

1.3.2 逻辑结构(数据库创建之后形成的逻辑概念之间的关系)

在这里插入图片描述

(1)表空间

  数据库最大的逻辑单位,一个oracle数据库至少包含一个表空间,名为SYSTEM的系统表空间
每个表空间由一个或多个数据文件组成,一个数据文件只能和一个表空间对应;表空间的大小等于构成这个表空间的所有数据文件大小之和

创建表空间语法:

CREATE TABLESPACE  testtbs datafile 'D:\software\oracle\oradata\orcl\testtbs.dbf' size 10m autoextend on;

在这里插入图片描述
在这里插入图片描述

select * from v$tablespace;

在这里插入图片描述

SYSTEM:系统表空间,存放系统最基本的信息,如果SYSTEM表空间坏了,ORACLE无法启动。

SYSAUX:10g引入的,作为SYSTEM的辅助表空间,用来减少SYSTEM表空间负荷,以前其他表空间的一些组件,放入SYSAUX表空间中。 如之前SYSTEM表空间中LOGMINER

TEMP:临时表空间,当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即oracle实例中临时表空间中进行

UNDOTBS1:撤销表空间,是UNDO类型的表空间,保存用户进行DML操作时,修改前的数据;

USERS:数据库默认的永久表空间
新建用户
在这里插入图片描述

SELECT * FROM DBA_USERS d WHERE  d.username='CZ';

在这里插入图片描述
在这里插入图片描述
用cz用户创建表
在这里插入图片描述

select * from dba_tables d where d.OWNER='CZ' and d.TABLE_NAME='MT' ;

在这里插入图片描述

修改表默认表空间

alter database default tablespace testtbs;

在这里插入图片描述
在这里插入图片描述

EXAMPLE:数据库测试用例所涉及的表空间

(2)段

  段是构成表空间的逻辑存储结构,段由一组区组成;按照段存储的特性,将段划分为若干种类型,主要有数据段、索引段、回退段、临时段

(3)区

  区为段分配空间,是由连续的数据块组成;当段中所有表空间已完全使用时,系统自动为该段分配一个新区;区不能跨数据文件存在,只能存在于一个数据文件中

(4)块

  数据块是oracle服务器所能分配、读取或写入的最小存储单元;oracle服务器以数据块为单位管理数据文件存储空间;
查看块大小(单位 字节)
在这里插入图片描述

即便需要读取的字节数只有个位数,从磁盘读取到数据缓冲区交给用户,仍然需要把个位字节数的内容所在的数据块8k字节,完整地读取

(5)模式

  模式是对用户所创建的数据库对象的总称;模式包括表、视图、索引、同义词、序列、过程、程序包等。 可视为,模式=用户

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值