oracle 表空间(Tablespace)

news2025/5/15 14:41:15

在 Oracle 11g 中,表空间(Tablespace) 是数据库存储架构的核心逻辑单元,其原理基于 逻辑存储与物理存储的分离,通过分层管理数据文件、段(Segment)、区(Extent)和数据块(Data Block)。

1. 逻辑存储与物理存储的映射

 

  • 表空间是逻辑容器:用户创建的表、索引等对象存储在表空间中,但这些对象并不直接绑定到物理文件,而是通过表空间与数据文件(Data Files)关联。

  • 数据文件是物理实体:每个表空间包含一个或多个物理数据文件(.dbf),数据实际存储在数据文件中。

 CREATE TABLESPACE users 
DATAFILE '/u01/oradata/users01.dbf' SIZE 100M;

 

2. 存储层次结构

 数据库(Database) → 表空间(Tablespace) → 段(Segment) → 区(Extent) → 数据块(Data Block)

 

  • 段(Segment)
    表空间中存储的独立对象,如表段(TABLE)、索引段(INDEX)、撤销段(UNDO)、临时段(TEMP)。

  • 区(Extent)
    由连续的数据块组成的存储单元。当段需要更多空间时,Oracle 会分配新的区。

  • 数据块(Data Block)
    最小的 I/O 操作单位(默认大小 8KB),数据块大小由表空间定义。

3. 表空间的空间管理

 

  • 区(Extent)的分配与回收

    • 当段需要空间时,Oracle 从表空间中分配一个或多个区。

    • 删除对象时,区会被回收并标记为可用,但可能不会立即释放给操作系统(取决于存储参数)。

  • 自动段空间管理(ASSM)
    使用位图(Bitmap)管理区内的空闲空间,替代传统的手动自由列表(Free List),提高并发性能。

4. 表空间类型与用途

表空间类型原理与用途
永久表空间存储用户数据(如表、索引),如 USERS
临时表空间存储排序、哈希连接等临时数据,如 TEMP
撤销表空间(UNDO)记录事务的撤销信息,支持回滚和一致性读,如 UNDOTBS1
大文件表空间单个数据文件可支持超大容量(最大 32TB),简化存储管理。

5. 数据文件与表空间的关系

  • 一个表空间可以包含多个数据文件,数据文件分散在多个磁盘上以提高性能(如 RAID 或 ASM)。

  • 数据文件支持自动扩展(AUTOEXTEND ON),避免因空间不足导致操作失败

 

6. 表空间的管理方式

  • 字典管理表空间(过时)
    使用数据字典表(如 SYS.UET$ 和 SYS.FET$)记录区的分配信息,存在性能瓶颈。

  • 本地管理表空间(默认)
    使用表空间头部存储的位图管理区的分配,效率更高,减少数据字典争用。

7. 数据块的结构

每个数据块包含以下部分:

  • 块头(Header):块元数据(如事务信息、SCN)。

  • 表目录(Table Directory):记录块中存储的表信息。

  • 行目录(Row Directory):指向块内各行数据的指针。

  • 空闲空间(Free Space):未使用的空间,用于新数据或更新操作。

 

8. 关键原理总结

  • 逻辑与物理分离:用户操作逻辑对象(如表),Oracle 自动管理物理文件。

  • 存储层次化:通过段、区、数据块实现精细的空间管理。

  • 性能优化

    • 将高 I/O 的表空间(如索引、数据)分散到不同磁盘。

    • 使用临时表空间减少对永久表空间的争用。

  • 事务一致性:UNDO 表空间支持多版本读一致性和事务回滚。

9. 示例:表空间操作

-- 创建表空间
CREATE TABLESPACE app_data 
DATAFILE '/u01/oradata/app01.dbf' SIZE 500M 
AUTOEXTEND ON NEXT 50M MAXSIZE 2G;

-- 将表分配到表空间
CREATE TABLE orders (
  order_id NUMBER,
  customer_id NUMBER
) TABLESPACE app_data;

-- 查询表空间使用情况
SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb 
FROM dba_data_files;

10. 常见问题与原理

  • 空间不足:数据文件未自动扩展或达到 MAXSIZE,导致 ORA-01653 错误。

  • 碎片化:频繁分配和释放区可能导致碎片,影响性能(本地管理表空间较少出现)。

  • 备份与恢复:表空间级备份(TABLESPACE)比全库备份更灵活,支持热备份。

 11. 查询表所属的表空间

 

SELECT owner, table_name, tablespace_name
FROM dba_tables
WHERE table_name = 'AI_TOOLS'
AND owner = 'NEW_USER';

 

 

12.查询表空间对应的数据文件路径

SELECT file_name
FROM dba_data_files
WHERE tablespace_name = 'USERS';

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

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

相关文章

基于YOLOv8的机场跑道异物检测识别系统:提升航空安全的新一代解决方案(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 1. 机场跑道异物检测领域概述 机场跑道异物(Foreign Object Debris, FOD)是指存在于机场跑道、滑行道等关…

Android学习总结之OKHttp拦截器和缓存

深入理解 OkHttp 拦截器 1. 拦截器接口详解 Interceptor 接口是自定义拦截器的基础,它仅包含一个抽象方法 intercept。以下是对该方法参数和返回值的详细解释: import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; import…

Wincc管对象的使用

Wincc管对象的使用 管对象的调用多边形管T形管双T形管管弯头管道大小调整 管对象的调用 打开【图形编辑器】 多边形管 多边形管如下: 一根管子的顶点数是两个,如果修改顶点数,管子就有多少个端点。 修改顶点数为5 此时点击端点然后拖动&#…

Linux-----驱动

一、内核驱动与启动流程 1. Linux内核驱动 Nor Flash: 可线性访问,有专门的数据及地址总线(与内存访问方式相同)。 Nand Flash: 不可线性访问,访问需要控制逻辑(软件)。 2. Linux启动流程 ARM架构: IRAM…

问问lua怎么写DeepSeek,,,,,

很坦白说,这十年,我几乎没办法从互联网找到这个这样的代码,互联网引擎找不到,我也没有很大的“追求”要传承,或者要宣传什么;直到DeepSeek的出现 兄弟,Deepseek现在已经比你更了解你楼下的超市…

基于神经环路的神经调控可增强遗忘型轻度认知障碍患者的延迟回忆能力

简要总结 这篇文章提出了一种名为CcSi-MHAHGEL的框架,用于基于多站点、多图谱fMRI的功能连接网络(FCN)分析,以辅助自闭症谱系障碍(ASD)的识别。该框架通过多视图超边感知的超图嵌入学习方法,整合…

C++学习之ORACLE③

1.集合运算符 查询部门号是10和20的员工信息: ?思考有几种方式解决该问题 ? SQL> select * from emp where deptno in(10, 20) SQL> select * from emp where deptno10 or deptno20 集合运算: Select * from emp …

UniAD:自动驾驶的统一架构 - 创新与挑战并存

引言 自动驾驶技术正经历一场架构革命。传统上,自动驾驶系统采用模块化设计,将感知、预测和规划分离为独立组件。而上海人工智能实验室的OpenDriveLab团队提出的UniAD(Unified Autonomous Driving)则尝试将这些任务整合到一个统一…

transformers 中的 input_ids 和 labels 是什么

transformers 中的 input_ids 和 labels 是什么 input_ids 是输入文本的数字化表示,而 labels 是模型训练的目标值 在自然语言处理(NLP)和使用 transformers 库进行模型训练时,tokenizer = AutoTokenizer.from_pretrained(model_path) 这行代码是用于从预训练模型路径加载…

各种排序思路及实现

目录 1.排序概念常见的排序算法 2.常见排序算法实现(1)插入排序直接插入排序希尔排序(缩小增量排序) (2)选择排序直接选择排序堆排序 (3)交换排序冒泡排序快速排序(hoare…

golang 采用use-go/onvif获取RTSP流

采用https://github.com/use-go/onvif得到完整的RTSP流的地址 全局变量UseGoMain 函数GetDeviceInformation 函数GetRTSPUri 函数 全局变量 这些变量用来设定 ONVIF 设备的连接信息,包含设备地址、用户名和密码 var deviceXaddr "*92.1*8.11*.12*:80" …

【北京市小客车调控网站-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

西湖大学团队开源SaProt等多款蛋白质语言模型,覆盖结构功能预测/跨模态信息搜索/氨基酸序列设计等

2025 年 3 月 22—23 日,上海交通大学「AI 蛋白质设计峰会」正式举行。 本次峰会汇聚了来自清华大学、北京大学、复旦大学、浙江大学、厦门大学等知名高校的 300 多位专家学者,以及 200 余位行业领军企业代表和技术研发人员,深入探讨了 AI 在…

一个批量文件Dos2Unix程序(Microsoft Store,开源)

这个程序可以把整个目录的文本文件改成UNIX格式,源码是用C#写的。 目录 一、从Microsoft Store安装 二、从github获取源码 三、功能介绍 3.1 运行 3.2 浏览 3.3 转换 3.4 转换(无列表) 3.5 取消 3.6 帮助 四、源码解读 五、讨论和…

无法读取库伦值文件节点解决方案

读取库伦值的目的是为了换算成电流,量化场景功耗用途 1.报错日志 /power_log/debuglogger$ adb shell dmesg | grep -Ei "avc..system_server"[ 79.942272] logd.auditd: type1400 audit(1744279324.832:7149): avc: denied { read } for comm"…

Linux系统学习Day2——在Linux系统中开发OpenCV

一、OpenCV简介 OpenCV(Open Source Computer Vision Library)是一个开源的跨平台计算机视觉和机器学习库,广泛应用于图像处理、视频分析、物体检测等领域。它提供了丰富的算法和高效的工具集,支持C、Python等多种语言&#xff0c…

【图像分类】【深度学习】图像分类评价指标

【图像分类】【深度学习】图像分类评价指标 文章目录 【图像分类】【深度学习】图像分类评价指标前言二分类评价指标Accuracy(准确率/精度)Precision(精确率/查准率)Recall(召回率/查全率)F1-ScoreAUC-ROC曲线(Area Under the Curv-Receiver Operating Characteristic Curve)二…

蓝桥杯单片机刷题——按键控制距离显示精度

设计要求 驱动超声波传感器,启动距离测量功能,并将其结果显示到数码管上,距离数据单位为m。 按键“S4”定义为“切换”按键,通过此按键切换距离的显示精度(一位或两位小数)。切换顺序如图所示。 数码管显示格式如下图…

el-time-picker标签的使用

需求&#xff1a; 实现培训日期&#xff0c;用户可以选择某一天的日期&#xff0c;这个比较简单 <el-form-item label"培训日期" prop"startTime"><el-date-picker clearablev-model"form.startTime"type"date"placeholder…

云平台一键部署【OmniGen】多功能图像生成模型(2025更新版)

OmniGen 是智源推出的一款全新的扩散模型架构&#xff0c;专注于统一图像生成。它简化了图像生成的复杂流程&#xff0c;通过一个框架处理多种任务&#xff0c;例如文本生成图像、图像编辑和基于视觉条件的生成等。此外&#xff0c;OmniGen 通过统一学习结构实现了知识迁移&…