首页 > 数据库 >Oracle 深入学习 Part 8: Managing Tablespaces and Data Files(管理表空间和数据文件)

Oracle 深入学习 Part 8: Managing Tablespaces and Data Files(管理表空间和数据文件)

时间:2024-11-24 10:05:27浏览次数:7  
标签:Files Tablespaces Managing 数据库 脱机 存储 临时 空间 数据

数据库的逻辑结构和物理结构

1. 逻辑结构

逻辑结构是从用户的角度来看待数据库的组织方式,与数据的存储方式无关。它主要用于帮助用户和开发人员理解和操作数据。

逻辑结构的主要组成
  • 表 (Table) 数据以行和列的形式存储,每一行是一个记录,每一列是一个字段。

  • 视图 (View) 从一个或多个表中派生的虚拟表,用户可以通过视图查询数据,但视图本身不存储数据。

  • 索引 (Index) 用于加快数据检索速度的数据结构。逻辑上是独立的,但物理上需要存储空间。

  • 模式 (Schema) 一个数据库中的逻辑对象(表、视图、索引等)的集合。

  • 分区 (Partition) 为了提高查询性能,将一张表分成多个部分,每个部分可以独立存储和管理。

2. 物理结构

物理结构描述了数据在底层存储设备上的组织方式,主要与数据库管理系统如何存储和管理数据相关。

物理结构的主要组成
  • 数据文件 (Data Files) 数据存储在数据文件中,数据文件是数据库的基本物理存储单元。

  • 日志文件 (Redo Log Files) 记录数据库操作的日志信息,用于故障恢复。

  • 控制文件 (Control Files) 存储数据库的物理结构信息,例如数据文件和日志文件的位置。

  • 表空间 (Tablespace) 数据库物理结构中的逻辑分组,一个表空间可以由多个数据文件组成。

  • 数据块 (Data Blocks) 存储的最小单元,通常为固定大小(例如 8KB)。

  • 区 (Extent) 由多个连续的数据块组成,是分配存储空间的基本单位。

  • 段 (Segment) 表、索引或其他对象使用的存储空间的集合,由多个区组成。


表空间的种类

1. 永久表空间(Permanent)

这些表空间主要用于存储永久性数据,数据在存储后会一直保留,直到被显式删除或修改。

包括以下类型:
  1. SYSTEM 表空间

    • 存储数据库的核心数据字典和视图等永久性管理信息。

    • 必须存在,且不可删除。

  2. SYSAUX 表空间

    • 存储辅助管理数据(如性能统计信息、元数据)。

    • 用于分担 SYSTEM 表空间的压力。

  3. 用户表空间

    • 用于存储用户创建的表、索引等永久性对象。

    • 用户可以根据需要创建多个永久表空间,分别用于不同应用或用户。

  4. 大文件表空间(Bigfile Tablespace)

    • 适合存储大量永久数据的场景。

    • 通常用于减少文件管理的复杂性。

  5. 只读表空间

    • 可将某些永久表空间设置为只读模式,防止数据被修改。

    • 常用于存储归档数据或历史记录。


2. 回滚表空间(Undo)

  • 作用Undo 表空间是一种专门用于存储 Undo Segment(回滚段) 的表空间。

  • 内容:只能存放 Undo Segments(回滚段),不能存储表、索引或其他用户对象。

  • 管理:在数据库的自动管理模式下,Oracle 会动态分配和回收 Undo 空间。


3. 临时表空间(Temporary)

在 Oracle 数据库中,临时表空间(Temporary Tablespace) 是一种用于存储临时数据的表空间,主要用于在数据库会话中进行中间计算或查询操作时存储临时结果。它是 暂时性(Temporary) 的存储区域,在会话结束时或计算完成后会被清空。

包括以下类型:
  1. 临时表空间
    • 临时表空间是用来存储数据库中临时计算结果的区域。所有需要临时存储的操作(如排序、哈希连接、聚合等)都将使用临时表空间。

  2. 全局临时表空间 Default

    是 Oracle 数据库中用于存储 全局临时表 数据的表空间。

    • 只有一个:一个数据库实例只能有一个默认的全局临时表空间。

    • 不能离线(offline):默认全局临时表空间不能被设置为脱机(offline)。如果脱机,系统无法正常存储全局临时表的数据。

    • 不能删除(drop):默认全局临时表空间不能被删除。如果删除该表空间,会影响全局临时表的功能,导致数据库无法正常处理临时数据。

    • 不能变为永久表空间(permanent):默认全局临时表空间的功能是专门为存储临时数据而设计,不能将其转换为永久表空间,用于存储持久化数据。

  3. 用户临时表空间
    • 每个用户可以分配一个临时表空间,用于存储该用户会话中的临时数据。用户临时表空间的配置是为了提供用户特定的临时数据存储,而不是多个用户共享的临时空间。

分类主要表空间特点
永久SYSTEM、SYSAUX、用户表空间、大文件表空间、只读表空间数据持久保存,存储核心信息和用户数据。
暂时UNDO 表空间事务回滚和读一致性,数据在事务完成后清除。
临时临时表空间、临时表空间组、临时 Undo 表空间数据仅在会话期间有效,用于中间计算和查询优化。

表空间空间管理

在 Oracle 数据库中,表空间空间管理指的是如何分配和管理表空间中的存储空间。在空间管理方面,主要有两种方式:本地管理(Locally-managed)字典管理(Dictionary-managed)本地管理(Locally-managed)是主流的空间管理方式。

本地管理(Locally-managed)表空间

本地管理表空间中,表空间的空间分配和管理由每个数据文件的 文件头 中的位图(Bitmap)来管理。位图用于记录表空间中每个块的使用情况。每个数据块的状态(例如,是否空闲、是否已被分配)通过该位图进行跟踪。

表空间的状态

1. 在线状态(ONLINE)

  • 定义:表空间处于在线状态时,它是可用的,用户和数据库进程可以正常访问表空间中的数据。

  • 用途:这是表空间的默认状态,表示表空间正在正常使用中。

  • 设置方法:

    ALTER TABLESPACE tablespace_name ONLINE;

2. 脱机状态(OFFLINE)

  • 定义:表空间处于脱机状态时,用户和数据库进程无法访问该表空间中的数据。

  • 用途:用于维护或诊断问题,例如备份、恢复或修复表空间时将其脱机。

  • 类型:

    • 正常脱机(NORMAL):表空间中的所有数据在脱机前会被写入磁盘,确保数据一致性。

    • 立即脱机(IMMEDIATE):立即脱机表空间,未完成的事务不会被写入磁盘。

    • 临时脱机(TEMPORARY):仅对当前会话脱机。

  • 设置方法:

    ALTER TABLESPACE tablespace_name OFFLINE NORMAL;

3. 只读状态(READ ONLY)

  • 定义:表空间设置为只读状态时,数据只能被查询,不能被修改。

  • 用途:

    • 用于保护历史数据,防止意外修改。

    • 减少备份频率,因为只读表空间的数据不会改变。

  • 注意:将表空间设置为只读前,表空间必须先在线(ONLINE)。

  • 设置方法:

    ALTER TABLESPACE tablespace_name READ ONLY;

4. 读写状态(READ WRITE)

  • 定义:表空间处于读写状态时,允许对数据进行查询、插入、更新和删除操作。

  • 用途:这是表空间的默认状态,大多数情况下表空间都处于这种状态。

  • 设置方法:

    ALTER TABLESPACE tablespace_name READ WRITE;
    

标签:Files,Tablespaces,Managing,数据库,脱机,存储,临时,空间,数据
From: https://blog.csdn.net/2302_80755459/article/details/144003495

相关文章

  • jar包内替换依赖jar后无法启动,错误日志:It has been compressed and nested jar files
    jar包内替换依赖jar后无法启动,错误日志:Ithasbeencompressedandnestedjarfilesmustbestoredwithoutcompression.ruoyi、springboot、java、jar、libs、压缩背景某服务jar包足足90MB有余,远程传输太慢,目前在改动的是其中的某子jar(项目内部依赖,另一个jar)。之前......
  • 怎么解决os.system中Program Files中空格报错的问题
    在通过os.system(PATH)时由于c盘中的ProgramFiles之间带有空格,从而导致在识别时会识别到Program时停止从而产生报错例如:os.system('C:\ProgramFiles(x86)\Microsoft\Edge\Application\msedge.exe')通过网上查找原因,大部分都是说加上双引号就行了我以为是:"C:\ProgramF......
  • 【Python爬虫系列】_022.异步文件操作aiofiles
    课程推荐我的个人主页:......
  • 高效修复《半条命2》启动错误:《半条命2》找不到“filesystem_stdio.dll”的解决策略
    当您遇到《半条命2》启动时提示找不到“filesystem_stdio.dll”文件的问题时,这通常意味着游戏在尝试加载必要的动态链接库(DLL)文件时失败了。以下是几种高效的解决策略,帮助您快速恢复游戏运行:1.重新安装游戏步骤说明:卸载游戏:首先,从您的计算机上完全卸载《半条命2》。这可以......
  • 用户空间实现文件系统的接口FUSE(Filesystem in Userspace)API介绍
    FUSE(FilesysteminUserspace)API是一种在用户空间实现文件系统的接口。一、FUSEAPI的作用它允许开发者在不修改内核代码的情况下,创建自定义的文件系统。通过FUSEAPI,你可以实现各种特殊用途的文件系统,比如网络文件系统、加密文件系统、虚拟文件系统等。二、工作原理用户空间程......
  • 分布式存储节点替换故障硬盘(filestore+LVMcache)
    1.说明此文档操作方法适用于>=V13.2.5ceph版本,部署模式为filestore,将每一块机械盘(LVM卷)对应一个OSD进程,并且journal日志放在ssd加速盘上。2.故障硬盘为SSD缓存盘(加速盘)【思路】缓存盘故障,需先删除机械盘对应的osd,再取消对应机械盘的cache关系,关机换盘后,重新创建cac......
  • How to use Node.js to get all files full paths that nested in folders All In On
    HowtouseNode.jstogetallfilesfullpathsthatnestedinfoldersAllInOne如何使用Node.js获取文件夹中嵌套的所有文件的完整路径demosESM//❌//importfsfrom'node:fs/promises';//✅import*asfsfrom'node:fs/promises';//import*asfsf......
  • Java NIO 的 Files Path 和 Paths
    小文同学,一目千行看完java.nio.filepackage后,颇有感慨,写下鲁迅千古名句:“希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。”......
  • profiles下的properties与properties有什么区别
    在Maven项目的pom.xml文件中,<properties>元素可以出现在两个地方:项目级别和profile级别。它们的作用和用法有所不同。项目级别的 <properties>项目级别的 <properties> 定义了一些全局的属性,这些属性在整个项目中都可以使用,无论是否激活某个profile。这些属性通常用于存储一......
  • C# split big file into small files as, and merge the small files into big one
    namespaceConsoleApp59{internalclassProgram{staticstringpath=System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);staticvoidMain(string[]args){stringfilePa......