当前位置: 首页 > news >正文

Oracle 物理存储与逻辑管理

1. 表空间(Tablespace)

 

定义
表空间是Oracle中最高级别的逻辑存储容器,由一个或多个物理数据文件(Datafile)组成。所有数据库对象(如表、索引)的逻辑存储均属于某个表空间。

类型与作用
类型功能
系统表空间- 包含数据字典(如SYSTEM表空间)和系统元数据。
SYSAUX是辅助系统表空间,存放非核心组件数据(如AWR报告)。
用户表空间- 存储用户创建的数据库对象(如表、索引)。
- 例如USERS表空间默认存储用户数据。
临时表空间- 用于排序、哈希连接等临时操作(如TEMP)。
- 数据在会话结束后自动清理。
撤销表空间(UNDO)- 存储事务回滚信息,支持事务一致性、读一致性和回滚操作。
大文件表空间- 仅包含一个超大文件(最大可达128TB),简化存储管理。

 

管理操作

创建表空间

CREATE TABLESPACE users_data
DATAFILE '/u01/oradata/users01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

扩展表空间

 通过增加数据文件或扩展现有文件:

 ALTER TABLESPACE users_data ADD DATAFILE '/u01/oradata/users02.dbf' SIZE 200M;

2. 段(Segment)

定义
段是特定数据库对象(如表、索引)占用的存储空间的逻辑集合。每个段由一个或多个区(Extent)组成。

类型与示例
类型描述
数据段存储表或簇的数据(如TABLE)。
索引段存储索引数据(如INDEX)。
临时段临时操作(排序、临时表)使用的空间,由临时表空间管理。
回滚段存储撤销信息(旧版本数据),由撤销表空间统一管理(替代传统手动回滚段)。
查看段信息

SELECT segment_name, segment_type, tablespace_name 
FROM dba_segments 
WHERE owner = 'SCOTT';

3. 区(Extent)

定义
区是Oracle分配存储空间的最小逻辑单元,由一组连续的数据块组成。段在扩展时会分配新的区。

特点
  • 连续分配:区内的数据块物理连续,提高I/O效率。

  • 自动扩展:当段需要更多空间时,Oracle自动分配新区。

  • 管理方式

    • 字典管理表空间(已淘汰):通过数据字典表管理区分配。

    • 本地管理表空间(默认):通过位图(Bitmap)在数据文件头部管理区分配,更高效。

4. 数据块(Data Block)

定义
数据块是Oracle中最小的I/O单元,也是存储数据的物理基础。块大小由参数DB_BLOCK_SIZE定义(通常为8KB),可在创建数据库时指定。

块结构
组成部分描述
块头(Header)包含块元数据(如块地址、事务槽)。
表目录记录该块所属的表或索引。
行目录存储块内每行的位置信息。
空闲空间未使用的空间,用于插入新数据或更新现有数据。
行数据实际存储的数据行。
块管理优化
  • PCTFREE:指定块中保留的空闲空间比例(默认为10%),用于未来更新。

  • PCTUSED(仅适用于手动段管理):当块使用率低于此值时,块可重新插入数据(已废弃,ASSM自动管理)。

5. 存储层次关系

  • 表空间 → 段 → 区 → 数据块
    例如:

    1. 用户表EMP存储在USERS表空间中。

    2. EMP表对应一个数据段,该段由多个区组成。

    3. 每个区包含若干连续的数据块。

    4. 数据块实际存储表中的行数据。

6. 实际应用示例

创建表并指定表空间

CREATE TABLE scott.employee (
    emp_id NUMBER,
    name VARCHAR2(50)

TABLESPACE users_data;

监控存储分配

-- 查看表空间使用情况
SELECT tablespace_name, sum(bytes)/1024/1024 AS "Size(MB)"
FROM dba_data_files
GROUP BY tablespace_name;

-- 查看段的空间占用
SELECT segment_name, bytes/1024/1024 AS "Size(MB)"
FROM dba_segments
WHERE owner = 'SCOTT';

7. 常见问题与优化

表空间不足

扩展数据文件或添加新文件:

ALTER DATABASE DATAFILE '/u01/oradata/users01.dbf' RESIZE 500M;

段碎片化

  • 使用ALTER TABLE ... MOVE重建表或在线重定义(DBMS_REDEFINITION)。

数据块效率

  • 根据业务负载选择合适的块大小(OLTP用小块,OLAP用大块)。

http://www.xdnf.cn/news/589249.html

相关文章:

  • 偏微分方程数值方法指南及AI推理
  • 深入理解Diffusers: 从基础到Stable Diffusion
  • (07)数字化转型之产品材料管理:从基础数据到BOM的全生命周期管理
  • Basic concepts for seismic source - Finite fault model
  • 【 开源:跨平台网络数据传输的万能工具libcurl】
  • DOM API-JS通过文档对象树操作Doc和CSS
  • 【Linux 学习计划】-- makefile
  • shell脚本总结5
  • 当AI遇上科研:北大“科学导航”重塑学术探索全流程
  • LeetCode Hot100 (哈希)
  • x-cmd install | cargo-selector:优雅管理 Rust 项目二进制与示例,开发体验升级
  • OpenCV计算机视觉实战(7)——色彩空间详解
  • 网络图片的缓存和压缩
  • 海康相机---采集图像
  • 如何解决鸿蒙应用闪退问题
  • Flutter 3.32 新特性
  • 鸿蒙Flutter实战:21-混合开发详解-1-概述
  • flutter getx路由管理、状态管理、路由守卫中间件、永久储存get_storage
  • 汇川EasyPLC MODBUS-RTU通信配置和编程实现
  • S7-1500PLC通过工艺对象实现V90总线伺服定位控制(105报文)
  • 英伟达有意入股 PsiQuantum,释放战略转向量子计算的重要信号
  • JVM常量池(class文件常量池,运行时常量池,字符串常量池)
  • Mysql数据库之索引与事务
  • 【内部教程】ISOLAR-AB配置以太网栈|超详细实战版
  • Kotlin与Flutter:跨平台开发的互补之道与实战指南
  • Armadillo C++ 线性代数库介绍与使用
  • Kotlin 极简小抄 P10(类与对象、主构造函数、带有默认参数值的主构造函数、次要构造函数)
  • 【机器学习】集成学习算法及实现过程
  • Ubuntu20.04的安装(VMware)
  • 详解受约束的强化学习(四、数学符号说明)