ORACLE体系结构逻辑结构-表空间、段、区和数据块

实例

实例是指在内存中分配的一块共享内存区域(SGA)和一组后台进程(或线程),它们用于访问和控制数据库。3实例是Oracle数据库的运行时环境,它是数据库的动态部分,它可以启动和关闭,也可以有多个实例同时运行。

实例的名称是由实例名(Instance Name)决定的,它也叫做系统标识符(SID),它是实例的唯一标识,一般与数据库名相同。4实例名是由参数instance_name决定的,它会写入参数文件中,也会影响到数据库的连接和访问。

数据库和实例的关系

数据库和实例是Oracle数据库的两个重要组成部分,它们之间有着密切的关系。5一般来说,一个数据库只能被一个实例访问,这种模式叫做单实例数据库(Single Instance Database)。但是,在某些情况下,一个数据库可以被多个实例访问,这种模式叫做多实例数据库(Multi Instance Database),也叫做Oracle Real Application Clusters(RAC)。RAC是Oracle数据库的一种高可用性和高性能的解决方案,它可以实现数据库的负载均衡和故障转移。

Oracle的逻辑结构

Oracle的逻辑结构是一种层次结构。主要由:表空间、段、区和数据块等概念组成。逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系。

数据块(Data Blocks)

数据块是Oracle最小的存储单位,Oracle数据存放在“块”中。一个块占用一定的磁盘空间。特别注意的是,这里的“块”是Oracle的“数据块”,不是操作系统的“块”。

Oracle每次请求数据的时候,都是以块为单位。也就是说,Oracle每次请求的数据是块的整数倍。如果Oracle请求的数据量不到一块,Oracle也会读取整个块。所以说,“块”是Oracle读写数据的最小单位或者最基本的单位。

块的标准大小由初始化参数DB_BLOCK_SIZE指定。具有标准大小的块称为标准块(Standard Block)。块的大小和标准块的大小不同的块叫非标准块(Nonstandard Block)。

操作系统每次执行I/O的时候,是以操作系统的块为单位;Oracle每次执行I/O的时候,都是以Oracle的块为单位。

数据块的大小是通过kb字节个数来指定的,默认为8KB。相关参数为db_block_size

SQL> show parameter db_block_size

NAME                                 TYPE        VALUE
----------------------- --------------------- ---------
db_block_size                        integer     8192

数据区(Extent)

数据区表示一系列连续的数据块集合。当一个表、回滚段或临时段创建或需要附加空间时,系统总是为之分配一个新的数据区。一个数据区不能跨越多个文件,因为它包含连续的数据块。使用区的目的是用来保存特定数据类型的数据,也是表中数据增长的基本单位。一个Oracle对象包含至少一个数据区。设置一个表或索引的存储参数包含设置它的数据区大小。

在进行存储数据信息的时候,Oracle将分配数据块进行存储,但是不能保证所有分配的数据块都是连续的结构。

举个例子来说,当我们创建一个表时,首先ORACLE会分配一区的空间给这个表,随着数据不断地增长,原来的这个区容不下插入的数据时,ORACLE是以区为单位进行扩展的,也就是说再分配多少个区给这个表,而不是多少个块.

视图dba_extents(或者all_extents、user_extents)是我们研究分区结构和存储构成的重要手段。

段(Segment)

段是由多个数据区构成的,它是为特定的数据库对象(如表段、索引段、回滚段、临时段)分配的一系列数据区。段内包含的数据区可以不连续,并且可以跨越多个文件。使用段的目的是用来保存特定对象。

数据段是与数据库对象相对应,一般一个数据库对象对应一个数据段。

多个extent是对应一个数据段,每个数据段实际上就是数据库一个对象的代表。

一般来说, 当创建一个对象时(表,索引),就会分配一个段给这个对象.

一个Oracle数据库有4种类型的段:
  数据段:数据段也称为表段,它包含数据并且与表和簇相关。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。
  索引段:包含了用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。
  回滚段:包含了回滚信息,并在数据库恢复期间使用,以便为数据库提供读入一致性和回滚未提交的事务,即用来回滚事务的数据空间。当一个事务开始处理时,系统为之分配回滚段,回滚段可以动态创建和撤销。系统有个默认的回滚段,其管理方式既可以是自动的,也可以是手工的。
  临时段:它是Oracle在运行过程中自行创建的段。当一个SQL语句需要临时工作区时,由Oracle建立临时段。一旦语句执行完毕,临时段的区间便退回给系统。

从dba_segments、user_segments视图中,可以比较清楚看清数据段的结构。

表空间(tablespace)

是数据库的逻辑划分。任何数据库对象在存储时都必须存储在某个表空间中。表空间对应于若干个磁盘文件,即表空间是由一个或多个磁盘文件构成的。表空间相当于操作系统中的文件夹,也是数据库逻辑结构与物理文件之间的一个映射。每个数据库至少有一个表空间,表空间的大小等于所有从属于它的数据文件大小的总和。

TableSpace是存储结构中的最高层结构。建立一个表空间的时候,是需要指定存储的文件。一个表空间可以指定多个数据文件,多个文件可以在不同的物理存储上。也就是说,表空间是可以跨物理存储的。

一个数据库实例可以有N个表空间,一个表空间下可以有N张表。

系统表空间(system tablespace)

是每个Oracle数据库都必须具备的。其功能是在系统表空间中存放诸如表空间名称、表空间所含数据文件等数据库管理所需的信息。

系统表空间的名称是不可更改的。系统表空间必须在任何时候都可以用,也是数据库运行的必要条件。因此,系统表空间是不能脱机的。
系统表空间包括数据字典、存储过程、触发器和系统回滚段。为避免系统表空间产生存储碎片以及争用系统资源的问题,应创建一个独立的表空间用来单独存储用户数据。

SYSAUX表空间

是随着数据库的创建而创建的,它充当SYSTEM的辅助表空间,主要存储除数据字典以外的其他对象。SYSAUX也是许多Oracle 数据库的默认表空间,它减少了由数据库和DBA管理的表空间数量,降低了SYSTEM表空间的负荷。

临时表空间

相对于其他表空间而言,临时表空间(temp tablespace)主要用于存储Oracle数据库运行期间所产生的临时数据。数据库可以建立多个临时表空间。当数据库关闭后,临时表空间中所有数据将全部被清除。除临时表空间外,其他表空间都属于永久性表空间。

撤销表空间

用于保存Oracle数据库撤销信息,即保存用户回滚段的表空间称之为回滚表空间(或简称为RBS撤销表空间(undo tablespace))。在Oracle8i中是rollback tablespace,从Oracle9i开始改为undo tablespace。在Oracle 10g中初始创建的只有6个表空间sysaux、system、temp、undotbs1、example和users。其中temp是临时表空间,undotbs1是undo撤销表空间。

USERS表空间

用户表空间,用于存放永久性用户对象的数据和私有信息。每个数据块都应该有一个用户表空间,以便在创建用户是将其分配给用户。

创建表空间

create [temporary] tablespace "TBS"           -- '表空间类型及名称', 默认 '永久',temporary 临时表空间
datafile 'D:\Oracle\TBS.dbf' size 10m                -- '数据文件的位置及大小'
[autoextend off] | [autoextend on next n maxsize m]  -- '是否自动扩展',默认 'off'
[loggin | nologgin]                                  -- '是否产生日志',默认 'loggin'
[segment space management auto]                      -- '段空间自动管理',默认 'auto', 建议默认
[extent management local [uniform size n]]           -- '表空间管理方式',dictionary | local(默认,推荐)

–查看表空间 SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;

–删除表空间 DROP TABLESPACE db_test INCLUDING CONTENTS AND DATAFILES;

用户

用户是数据库的访问者和使用者,它是一种数据库对象,用于标识数据库的登录者和拥有者。用户可以拥有自己的数据库对象,也可以访问其他用户的数据库对象,这取决于用户的权限和角色。用户是数据库的安全和控制的基础,它可以实现数据库的身份认证和访问控制。

用户的名称是由用户名(User Name)决定的,它是用户的唯一标识,可以由用户自定义。用户的创建和管理是由SQL语句实现的,例如:

–创建用户 CREATE USER utest IDENTIFIED BY utestpwd DEFAULT TABLESPACE db_test TEMPORARY TABLESPACE temp;

–查看用户 SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS;

–删除用户 DROP USER utest CASCADE;

表是数据库的基本对象,它是一种二维的数据结构,用于存储数据。表由行和列组成,每一行代表一条记录,每一列代表一个属性。表是数据库的数据源和目标,它是数据库操作的对象和结果。

表的名称是由表名(Table Name)决定的,它是表的唯一标识,可以由用户自定义。表的创建和管理是由SQL语句实现的,例如:

–创建表 CREATE TABLE emp ( empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) REFERENCES dept(deptno) );

–查看表 SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES;

–删除表 DROP TABLE emp;

表空间、用户和表的关系

总结

一个数据库有很多表空间,一个表空间有多个段组成,一个段由多个区组成,一个区由连续的数据块组成。表空间不是表,段是用来存储数据库对象的(如表、所以、过程等),一个区用来存储特定类型的数据的(如字符、日期、数字、其他类型)。

表空间、用户和表是数据库的三个重要对象,它们之间有着密切的关系。一般来说,一个用户可以拥有多个表空间,一个表空间可以包含多个表,一个表只能属于一个表空间和一个用户。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树莓派3B+ /+ CSI摄像头 + FFmpeg + SRS 实现直播推流

简介: 手头有一个树莓派3B 和一块CSI摄像头,想要实现一个推拉流直播的效果。 所需材料:开发板(我用的是树莓派3B)、CIS摄像头、云服务器(用来搭建SRS服务器) 具体实现思路: 使用…

MyBatis-07

MyBatis高级拓展 将Mapper接口和Mapper.xml文件打包到同一地址下 &#xff08;在resources下创建相同的文件夹结构&#xff09; com/dc/mapper创建 多层结构 com.dc.mapper创建 一层结构 分页插件 //导入依赖 <dependency><groupId>com.github.pagehelper</gr…

Redis 过期删除策略

常见的三种过期删除策略&#xff1a; 定期删除&#xff1b;惰性删除&#xff1b;定时删除&#xff1b; 定期删除策略 每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查&#xff0c;并删除其中的过期key。 定期删除的实现在 expire.c 文件下的 activeExpireCycle …

Unity 编辑器篇|(一)MenuItem菜单栏

目录 1.MenuItem 属性2.创建多级菜单3.创建带快捷键的菜单4.创建带快捷键的菜单5.检查菜单是否使用6.菜单排序7.扩展右键菜单7.1 Hierarchy 右键菜单7.2 Project 右键菜单7.3 Inspector 组件右键菜单 8. AddComponentMenu 特性9. ContextMenu 特性 添加组件右键菜单 1.MenuItem…

网页内容任君采撷-右键无法复制

CSDN一年一度的博客之星评选活动已经结束&#xff0c;刚好点击来看看学习一下大佬们的博客。 发现绝大部分的博主对于知识的公开度都是非常高的&#xff0c;当然除了收费的专栏外。 其中少部分博主对自己的博文设定了一定的操作&#xff0c;无法直接使用博文中的内容。 现在大…

vulhub中的Apache SSI 远程命令执行漏洞

Apache SSI 远程命令执行漏洞 1.cd到ssi-rce cd /opt/vulhub/httpd/ssi-rce/ 2.执行docker-compose up -d docker-compose up -d 3.查看靶场是否开启成功 dooker ps 拉取成功了 4.访问url 这里已经执行成功了&#xff0c;注意这里需要加入/upload.php 5.写入一句话木马 &…

【技术科普】什么是达芬奇架构?有什么优势?

芯片架构是指芯片设计的基本结构和组织方式&#xff0c;用于实现各种计算、存储和通信功能。芯片架构通常包括处理器核心、内存、输入输出接口等组成部分&#xff0c;这些部分的设计对芯片性能和功耗有着直接的影响&#xff0c;世界上主流的芯片架构主要包括x86、ARM、PowerPC和…

大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

Nacos实战之配置中心与注册中心详解

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言注册中心Nacos 与 Eureka 区别 安装与运行WIN版Docker 版 父工程注册中心-服务提供方微服务 pom启动类yml参考 注册中心-服务调用方微服务pomyml 参考配置类…

Avalonia学习(二十一)-自定义界面演示

今天开始继续Avalonia练习。 本节&#xff1a;自定义界面 在网上看见一个博客&#xff0c;根据需要演示一下。 前台代码 <Window xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm"using:…

vulhub中的Apache HTTPD 换行解析漏洞(CVE-2017-15715)详解

Apache HTTPD 换行解析漏洞&#xff08;CVE-2017-15715&#xff09; 1.cd到CVE-2017-15715 cd vulhub/httpd/CVE-2017-15715 2.运行docker-compose build docker-compose build 3.运行docker-compose up -d 4.查看docker-compose ps 5.访问 出现这个表示安装成功 6.漏洞复现…

​安全可靠测评结果公告(2023年第1号)

安全可靠测评主要面向计算机终端和服务器搭载的中央处理器&#xff08;CPU&#xff09;、操作系统以及数据库等基础软硬件产品&#xff0c;通过对产品及其研发单位的核心技术、安全保障、持续发展等方面开展评估&#xff0c;评定产品的安全性和可持续性&#xff0c;实现对产品研…

洛谷 P5194 [USACO05DEC] Scales S 刷题笔记

P5194 [USACO05DEC] Scales S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路参考 大佬 薛定谔的鱼 的个人中心 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 维护一个前缀和数组 从后往前一个个遍历所有可能的组合 然后进行一定的剪枝 void bfs(int now,ll ma){ …

大师学SwiftUI第6章 - 声明式用户界面 Part 1

状态 在上一章&#xff0c;我们介绍了SwiftUI的主要特性&#xff0c;声明式语法。借助SwiftUI&#xff0c;我们可以按希望在屏幕上显示的方式声明视图&#xff0c;余下交由系统来创建所需的代码。但声明式语法不只用于组织视图&#xff0c;还可在应用状态发生变化时更新视图。…

sentinel入门,转载的,不记得在哪复制的了

sentinel 基本概念 开发的原因&#xff0c;需要对吞吐量&#xff08;TPS&#xff09;、QPS、并发数、响应时间&#xff08;RT&#xff09;几个概念做下了解&#xff0c;查自百度百科&#xff0c;记录如下&#xff1a; 响应时间(RT)   响应时间是指系统对请求作出响应的时间。…

第18课 移植FFmpeg和openCV到Android环境

要在Android下从事音视频开发&#xff0c;同样也绕不开ffmpegopencv&#xff0c;不管是初学者还是有一定经验的程序&#xff0c;面临的首要问题就是环境的搭建和库文件的编译配置等问题&#xff0c;特别是初学者&#xff0c;往往会在实际开发前浪费大量的时间来编译ffmpeg及ope…

neo4j图数据库的简单操作记录

知识图谱文件导出 首先停止运行sudo neo4j stop然后导出数据库 导出格式为&#xff1a; 具体命令如下sudo neo4j-admin database dump --to-path/home/ neo4j最后重启sudo neo4j start知识图谱外观修改 在网页点击节点&#xff0c;选中一个表情后点击&#xff0c;可修改其颜…

python接口自动化(八)--发送post请求的接口(详解)

1.简介 上篇介绍完发送get请求的接口&#xff0c;大家必然联想到发送post请求的接口也不会太难&#xff0c;被聪明的你又猜到了。答案是对的&#xff0c;虽然发送post请求的参考例子很简单&#xff0c;但是实际遇到的情况却是很复杂的&#xff0c;因为所有系统或者软件、网站都…

带前后端H5即时通讯聊天系统源码

带有前后端的H5即时通讯聊天系统源码。该源码是一个开源的即时通信demo&#xff0c;需要前后端配合使用。它的主要目的是为了促进学习和交流&#xff0c;并为大家提供开发即时通讯功能的思路。尽管该源码提供了许多功能&#xff0c;但仍需要进行自行开发。该项目最初的开发初衷…

社交心不死:支付宝内测兴趣社交

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 支付宝又双叒做社交了&#xff0c;这次的“兴趣社区”能成吗&#xff1f; 支付宝做社交心不死&#xff0c;近期支付宝又开始内测名为“兴趣社区”的功能。主打找同频玩伴&#xff0c;徒步、骑行、钓鱼&#xff0c…