Oracle的存储结构

news2024/11/25 0:57:07

Oracle数据库的存储结构分为物理存储结构和逻辑存储结构两种。

物理存储结构:主要用于描述在 oracle  数据库外部数据的存储,即在操作系统层面中如何组织和管理数据,与具体的操作系统有关。

逻辑存储结构:主要描述oracle 数据库内部数据的组织和管理方式,即在数据库管理系统的层面中如何组织和管理数据,与操作系统没有关系。

物理存储结构具体表现为一系列的操作系统文件,是可见的;而逻辑存储结构时候物理存储机构的抽象体现,是不可见的,可以通过查询数据库数据字典了解逻辑结构信息。

Oracle数据库的物理存储结构与逻辑存储结构既相互独立又互相联系。

                                    

从上面图中可以看出数据库物理存储结构和逻辑存储结构的基本关系:
1.一个数据库在物理上包含多个数据文件,在逻辑上包含多个表空间

2.一个表空间包含一个或多个数据文件,一个数据文件只能从属于某个表空间。

3.数据库的逻辑块由一个或多个操作系统组成。

4.一个逻辑区只能从属于一个数据文件,而一个数据文件可包括一个或多个逻辑区。

        Oracle数据库的物理存储结构是由一系列操作系统组成的,存放于物理磁盘上,是数据库的实际存储单元。这些文件主要包括数据文件、控制文件、重做日志文件、归档文件、初始化参数文件、跟踪文件、告警文件等。每种文件都存储特定内容的信息,其数量也因文件类型不同而不同。

数据文件:是数据库所有数据的实际存储空间,所有数据文件的大小和构成了数据库的大小。

控制文件:记录数据库结构信息的重要的二进制文件,由oracle 系统进行读 / 写操作。

重做日志文件:是以重做记录的形式记录、保存用户对数据库所进行的变更操作,是数据库中最重要的物理文件。

归档日志文件:是历史联机重做日志文件的集合,是联机重做日志文件被覆盖之前备份的副本。

初始化参数文件:是数据库启动过程所必需的文件,记录了数据库显式参数的设置。数据库启动的第一步是根据初始化参数文件中的设置,创建并启动实例,即分配内存空间、启动后台进程。

跟踪文件:是数据库中重要的诊断文件,是获取数据库信息的重要工具,对管理数据库的实例起着至关重要的作用。跟踪文件中包含数据库系统运行过程中所发生的重大事件的有关信息,可以为数据库运行故障的解决提供重要信息。

告警文件:是数据库中重要的诊断文件,记录数据库在启动、关闭和运行期间后台进程的活动情况。

oracle数据库的逻辑存储结构是从逻辑的角度来分析数据库的构成的,也就是数据库创建后利用逻辑概念来描述oracle数据库内部数据的组织和管理形式。在操作系统中,没有数据库逻辑存储结构信息,而只有物理存储结构信息。数据库的逻辑存储结构概念存储在数据库的数据字典中,可以通过数据字典查询存储结构信息。

一个或多个连续的oracle数据块构成区,一个或多个区构成段,一个或多个段构成表空间,所有表空间构成数据库。

1.Oracle数据块

oracle 数据块是数据库中最小的逻辑存储单元,是数据库执行输入、输出操作的最小单位,由一个或多个操作系统块构成。在oracle 11g 数据库中, 数据块分为标准块和非标准块两种,其中标准块由数据库初始化参数 DB_BLOCK_SIZE  设置,其大小不可更改。oracle 数据库的默认数据缓冲区就是标准数据块构成的。

 2.区

区是由一系列连续的数据块构成的逻辑存储单元,是存储空间分配的最小单元。当创建一个数据库对象时,oracle 为对象分配若干个区,以构成一个段来为对象提供初始的存储空间。当段中已分配的区都写满后,oracle会为段分配一个新区,以容纳更多的数据。构成一个段的所有区只能是在一个文件中。oracle数据库中,引入区的目的是为了提高系统存储空间分配的效率,以区为单位的存储空间分配大大减少了磁盘分配的次数。

3.段

段是由一个或多个连续或不连续的区组成的逻辑存储单元,用于存储特定的、具有独立存储结构的数据库对象。根据存储对象类型不同,分为:表段、索引段、临时段和回退段4类。

表段:又称数据段,用来存储表或簇的数据,可以细分为普通表段、分区表段、簇段、索引化表段

索引段:用来存放索引数据,包括ROWID和索引值

临时段:是进行查询、排序等操作时,如果内存空间不足,用于保存 sql 语句在解释和执行过程中产生的临时数据。会话结束时,为该操作分配的临时段将被释放。

回退段:用于保存数据库的回退信息,包含当前未提交事务所修改的数据的原始版本。利用回退段中保存的回退信息,可以实现事务回滚、数据库恢复、数据的读一致性和闪回查询

4.表空间

表空间是oracle数据库最大的逻辑存储单元,数据库的大小从逻辑上看就是由表空间决定的,所有表空间大小的和就是数据库的大小。在 oracle 数据库中,存储结构管理主要就是通过对表空间的管理啊来实现的。

表空间与数据库文件直接关联,一个表空间包含一个或多个数据文件,一个数据文件只能从属于一个表空间,数据库对象就是存储在表空间对应的一个或多个数据文件中。

表空间根据存储数据类型的不同,分为系统表空间和非系统表空间两类。

系统表空间:主要存放数据库的系统信息,如数据字典、数据库对象定义信息,数据库组件信息等。

非系统表空间:又分为撤销表空间、临时表空间和用户表空间等。其中撤销表空间用于自动管理数据库的回退信息,临时表空间用于管理数据库的临时信息,用户表空间用于存储业务数据。

 使表空间脱机:

ALTER TABLESPACE tablespacename

恢复联机状态:

ALTER TABLESPACE tablespacename ONLINE;

将表空间标记只读或只写:

ALTER TABLESPACE tablespacename [READ ONLY|READ WRITE]

调整表空间大小:

ALTER DATABASE DATAFILE ‘filename’ RESIZE n[M|G|T]

删除表空间:

DROP TABLESPACE tablespacename[INCLUDING CONTENTS [AND DATAFILES]];

了解表空间和数据文件

一个表空间可能是多个数据文件。

一个表空间可包含多个段。

一个段是一个或多个区间。

一个区间是位于一个数据文件的多个连接块。

一个Oracle块是一个或多个操作系统块。

Oracle块是数据库的基本I/O单元

SMALLFILE表空间可以有多个数据文件,但BIGFILE表空间只能有一个数据文件。

默认方式下,表空间采用本地区管理和自动段空间管理的方法。但统一区间大小并非默认设置。

OMF数据文件自动命名。开始为100MB,可以自动扩展,没有上限。

除非指定了INCLUDING CONTENTS子句,否则包含段的表空间无法删除。

可将表空间设置为联机或脱机,设置为读写或只读。

表空间可以存储三类对象:永久对象,临时对象或撤销段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/480718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TryHackMe-EnterPrize(boot2root)

EnterPrize 端口扫描 循例nmap Web枚举 进到enterprize.thm gobuster扫 到处扫了一段时间,ffuf扫vhost扫到个maintest 进到maintest,是typo3 /typo3conf下有些文件 在LocalConfiguration.old有一个key,它应该就是提示当中所说的 在谷歌找到…

【开发工具】 什么是Office 今天让你认识它

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

HTML5 <select> 标签

实例 HTML5 <select>标签用于实现下拉列表。请参考下面的示例&#xff1a; 创建带有 4 个选项的选择列表&#xff1a; <select> <option value"volvo">Volvo</option> <option value"saab">Saab</option> <opti…

3 文件和目录

3.1 stat、fstat、lstat 函数 #include <sys/types.h> #include <sys/stat.h>//三个函数的返回&#xff1a;若成功则为 0&#xff0c;若出错则为-1 int stat(const char *pathname, struct stat *buf) ; int fstat(int filedes,struct stat * buf) ; int lstat(co…

嵌入式Sqlite数据库【基本语法、Sqlite-JDBC、嵌入到Java程序】

目录 前言 基本介绍 Sqlite 对比 MySQL 字段类型 语法 创建表 插入数据 更新数据 查询数据 删除数据 查看建表语句 Sqlite-JDBC 嵌入到Java程序 前言 最近在用JavaFX做一个桌面软件需要用到数据库&#xff0c;但MySQL这种数据库明显只能本地访问&#xff0c;把软…

gdb server简单探索

前言 gdb server运行于嵌入式设备&#xff0c;比如arm或arm64体系结构&#xff0c;体积小&#xff0c;占用资源少&#xff0c;相当于一个前端。gdb server可以attach到一个strip的进程。 gdb运行于性能更高的主机&#xff0c;如x86设备上&#xff0c;需要有带符号表的相应进程…

【IPv6】基本概念及字段

IPV4知识点&#xff1a; 字段值 IPv4字段共 字段值解释Version版本版本字段&#xff0c;可以区分V4和V6版本&#xff0c;V4是0100&#xff0c;V6是0110&#xff0c;需要注意的是V4和V6头部除了版本字段位置相同外&#xff0c;其他都是不一样的&#xff0c;因此两个协议不能直…

如何编写高质量代码

如何编写高质量代码 1. 前言2. 明确业务场景和用户需求3. 编程实践技巧3.1 提高命名规范3.2 保持代码简洁3.3 好的注释 4. 软件测试5. 总结 1. 前言 现代软件开发中&#xff0c;代码是构建高质量软件的核心。高质量代码能够提高软件系统的可靠性、可维护性和可扩展性&#xff…

3.3 动态存储随机存储器

学习目标&#xff1a; 理解动态随机存取存储器的基本原理和工作机制。掌握动态随机存取存储器的读写操作及时序。理解动态随机存取存储器的存储单元结构和电路设计。熟悉动态随机存取存储器的刷新技术及其影响因素。理解动态随机存取存储器与静态随机存取存储器的异同。掌握动态…

2008-2019年主要城市PITI指数

2008-2019年主要城市PITI指数 1、来源&#xff1a;附在文件内 2、时间区间&#xff1a;2008-2019年 3、具体时间分布&#xff1a;、2008、2009-2010、2011、2012、2013-2014、2014-2015、2015-2016、2016-2017、2017-2018、2018-2019、 4、范围&#xff1a;包括110个城市&a…

Runtime Data Area(运行时数据区域)

运行时数据区是JVM用来管理和存储Java程序执行过程中所需要的各种数据的区域&#xff0c;也成为JVM内存结构。JVM内存结构主要包括以下几个部分&#xff1a; 程序计数器&#xff08;Program Counter Register&#xff09; 程序计数器是一种特殊的内存区域&#xff0c;它可以在…

线索二叉树(前中后序线索化/遍历/画线索)

线索二叉树 文章目录 线索二叉树1 线索二叉树的基本概念2 线索二叉树的构造2.1 线索二叉树的存储结构2.2 给线索二叉树画线索2.2.1 中序2.2.2 先序2.2.3 后序 2.3 二叉树线索化代码实现2.3.1 通过中序遍历线索化2.3.2 通过先序遍历线索化2.3.3 通过后序遍历线索化 3 线索二叉树…

五一欢乐赛!题解

前言 有点一言难尽, 这次本来想的给大火减减压放了很多区域赛和省赛的签到题(还有一些是写过的题), 没想到打的并不是很理想, 还用了分数值想减少一些差距, 结果看起来好像让差距更大了, 尴尬 A题 Frozen Scoreboard https://codeforces.com/gym/104076/problem/D 济南站的中…

【MST+离线】ABC235 E - MST + 1

一开始想的是分类讨论&#xff0c;看那条边加了之后成不成环&#xff0c;如果不成环且权值在前n-1&#xff0c;则一定在MST里&#xff0c;不在前n-1则不在MST里&#xff1b;如果成环了&#xff0c;如果权值不在前n-1&#xff0c;则不在MST里&#xff0c;如果权值在前n-1&#x…

InstructGPT怎么准备和标记数据集

目录 1. 谁标记数据集 2. 数据集的来源 3.数据预处理 4. 标记数据集的方法 5. 数据多样性 6. 这样标记的数据的不足之处 名词解释 1. 谁标记数据集 OpenAI 公司在Upwork平台上和Scale AI公司聘请了大约 40 名承包商为他们标记数据&#xff0c;通过筛选测试(screening tes…

ros基础笔记

1创建工作空间 catkin_init_workspace 将文件夹初始化成ros文件 编译工作空间catkin_make vi ~/.bashrc 加入环境变量bashrc一下在任何终端都生效 catkin_create_pkg learning_communication通讯机制 std_msgs数据结构 rospy roscpp catkin_create_pkg mbot_description ur…

【C++】string类常用接口

目录 一、string类二、string类的常用接口1.string类对象的常见构造2.string类对象的容量操作3.string类对象的访问及遍历操作4.string类对象的修改操作5.string类非成员函数6.vs和g下string结构的说明 一、string类 STL的六大组件&#xff1a; 字符串是表示字符序列的类标准…

E. Train Hard, Win Easy(数学推导 + 前缀和)

Problem - E - Codeforces 这是一个有关竞赛编程的问题。Zibi 是一名竞赛编程教练&#xff0c;有 n 名选手想要备战。培训比赛具有一些不同寻常的规则——每个团队有两名成员和两个问题&#xff0c;每个选手都会编写其中一个问题的代码。当然&#xff0c;一个团队中的人将编写不…

ViveNAS - 一个基于LSM tree的文件存储实现 (一)

1. ViveNAS &#xff08;GitHub - cocalele/ViveNAS&#xff09; ViveNAS 是一个开源分布式的网络文件系统&#xff08;NAS&#xff09;, 具有下面的特点: - 通过不同存储介质的结合&#xff0c;在高性能、低成本间寻找动态的平衡 - 解决数据的长期、低成本存储问题&#xff…