oracle11体系结构二-存储结构

2023-12-26 15:04

本文主要是介绍oracle11体系结构二-存储结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据区:

数据区(数据扩展区)由一组连续的oracle数据块所构成的存储结构,一个或多个数据块组成一个数据区,一个或多个数据区组成一个段。当段中所有空间被使用完后,oracle系统将自动为该段分配一个新的数据区。可见数据区是oracle存储分配的最小单位,oracle就以数据区为单位进行存储控件的扩展。

用数据区的目的是用来保存特定的数据类型的数据。数据区是表中数据增长的基本单位,在oracle数据库中,分配存储空间就是以数据区为单位的。一个oracle对象包含至少一个数据区,设置一个表或索引的存储参数包含设置它的数据区大小。

用于存储表,索引或簇等占用空间的数据对象。段是为特定的数据对象(表,索引,回滚等)分配的一系列数据区。

段的类型:

数据段:保存的是表中的数据记录。当表的数据记录逐渐增加时,数据段增大的过程是向其添加新的数据区来实现的。

索引段:创建索引,自动创建索引段。包含用于提高系统性能的索引。

回滚段:保存回滚条目,oracle将修改前的旧值保存在回滚条目中。利用这些信息,可以撤销未提交的操作,以便为数据库提供读入一致性和回滚未提交的事物,即用来回滚事物的数据空间。当一个事物开始处理时,系统为之分配回滚段,回滚段可以动态创建和撤销。oracle有个默认的回滚段,其管理方式既可以是自动的,也可以是手工的。

临时段:当执行创建索引,查询等操作时候,oracle可能会使用一些临时存储空间,用于暂时性的保存解析过的查询语句以及在排序过程中产生的临时数据。oracle系统将在专门用于存储临时数据的表空间中为操作分配临时段。

表空间:

使用表空间将相关的逻辑结构(数据区,段等)组合在一起。数据库最大的逻辑划分区域,用来存放数据表,索引,回滚段等数据对象,任何数据对象在创建时都必须被指定存储在某个表空间中。表空间(逻辑结构)与数据文件(物理结构)相对应,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间。每个数据库至少有一个表空间(即SYSTEM表空间),表空间的大小等于所有从属它的数据文件大小的总和。

表空间中创建数据对象的两种情况:
1.只包含一个数据文件,所有的对象都存储在这个数据文件中

2.包含多个数据文件,可将存储对象存储在该表空间的任意一个数据文件中,也可以将同一个数据对象中的数据分布在表空间的多个数据文件中。

创建数据库时,会默认创建多个默认表空间,这些表空间除了用于管理用户数据的表空间之外,还包括用于管理oracle系统内部数据的表空间。

1.SYSTEM表空间:系统表空间,用于存放系统内部表和数据字典的数据。

2.SYSAUX 表空间:充当系统表空间的辅助表空间,降低系统表空间负荷,存储除数据字典以外的其他数据对象。一般不存储用户的数据,由oracle系统内部自动维护。

3.UNDO表空间:撤销表空间,用于存储撤销信息的表空间。当用户对数据表进行修改操作时,oracle系统自动使用撤销表空间来临时存放修改之前的数据,当所做的修改操作完成并执行提交命令后,oracle根据系统设置的保留时间长度来决定何时释放掉撤销表空间的部分空间。一般创建oracle实例后,系统自动创建名字为UNDOTBS1的撤销表空间,对应的数据文件UNDOTBS01.DBF

4.USERS表空间  :用户表空间,可以在这个表空间创建各种数据对象,包括表,索引,用户等数据对象。系统的样例用户SCOTT 对象就存放在USERS表空间中。

用户可根据系统的实际情况及其存放的是对象类型创建多个自定义的表空间。

物理存储结构:

由多种物理文件组成:数据文件,控制文件,重做日志文件,归档日志文件,参数文件,口令文件和警告日志文件等。

数据文件:读数据时候,将数据文件的数据存储在内存的高速数据缓冲区,如果用户读取的数据不在数据缓冲区中,则从相应的数据文件中读取并存储在缓冲区中。当修改和插入数据时,不会立即写入到数据文件中,而是保存在数据缓冲区中,由oracle的后台进程DBWR决定如何将其写入相应的数据文件。这种方式减少了磁盘I/O操作,提高系统的相应性能。

控制文件:控制文件是一个二进制文件,记录了数据库的物理结构,包含数据库名,数据文件与日志文件的名字和位置,数据库建立日期等信息。控制文件所存放的路径由服务器参数文件spfileorcl.ora的control_files参数值来指定。控制文件很重要,实例启动时必须要访问控制文件,只有控制文件正常,实例才能打开数据库。如果控制文件有错误或者找不到可用的控制文件,则实例无法正常启动。

日志文件:包括重做日志文件和归档日志文件(ARCH)

重做日志文件:系统运行产生的日志信息,首先被临时存放在系统全局区的重做日志缓冲区,当发出commit命令时,LGWR进程将缓冲区信息读取出来,写入到日志文件组序号较小的文件里,一个日志组写满后接着另一个日志组,所有的日志文件都使用过一遍后他将再次转向第一个日志组重新覆写。

归档日志文件:

如果开启归档模式, 则在转向第一个日志文件覆写之前,将即将覆盖的日志文件写入到归档日志文件中区,这个过程称为归档过程。

归档过程中,日志写入进程需要等待归档进程结束后才能开始覆写日志文件,会导致延迟了系统相应时间,所以,默认情况下不采用归档模式运行。

服务器参数文件:SPFILE是二进制文件,记录了oracle数据库的基本参数信息(如数据库名,控制文件所在路径,日志缓冲大小等)

辅助文件:密码文件,警告文件和跟踪文件

这篇关于oracle11体系结构二-存储结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539866

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示