当前位置: 首页 > 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用大块)。

相关文章:

  • DevOps体系之Jmeter
  • React 第四十五节 Router 中 useHref() Hook的使用详解及注意事项
  • 【北邮通信系统建模与仿真simulink笔记】(2)2.3搭建仿真模型模块操作运行仿真
  • 高效数据库管理新体验:SQLynx 3.7 功能解析与团队协作场景实践
  • BGP为什么要配置对等IP?
  • 企业异构系统和信息孤岛应用信息集成的方案
  • 产品经理面经(三)
  • 电商系统搭建对企业的多维影响与战略价值
  • 帕鲁杯证书在线生成-仅供娱乐
  • 20T资源大礼包,自用,自取
  • Spring Boot与Disruptor高性能队列整合指南
  • 深入详解 DICOM 二维图像的空间定位原理
  • 打卡Day34
  • 【八股战神篇】Redis高频面试题
  • DAY 33 简单的神经网络
  • 多维应用场景的落地实践的智慧园区开源了
  • JAVA开发工具延长方案
  • python+requests接口自动化测试框架实例详解
  • 2021~2025:特斯拉人形机器人Optimus发展进程详解
  • 编程心法 (整理)
  • 手机兼职在哪个网站做/深圳市seo网络推广哪家好
  • 在线做试卷的网站/上海网站seo招聘
  • 成都极客联盟网站建设公司/百度站长平台工具
  • 青岛建网站/一个新品牌如何推广
  • 怎么做短链接网站/爱站网关键词怎么挖掘
  • 建设心理网站/seo管理系统培训运营