Oracle数据库、表空间与存储结构图文详解

 更新时间:2025年09月17日 11:33:58   作者:迷茫的坐标  
在Oracle数据库中,查询表空间信息是一个常见需求,它可以帮助数据库管理员或开发者了解数据库的存储情况,这篇文章主要给大家介绍了关于Oracle数据库、表空间与存储结构的相关资料,需要的朋友可以参考下

一、核心概念:像理解仓库一样理解Oracle

想象一下一个大仓库(数据库),这个仓库被划分成了几个大的区域(表空间),比如“家电区”、“食品区”。每个大区域里放着很多货架(段),比如“电视货架”、“冰箱货架”。每个货架又是由一连串的货位(区) 组成的,而最小的存储单位就是每一个货位(数据块)

1. 数据块 (Data Block)

  • 是什么:Oracle逻辑存储结构中最小的逻辑单位,就像仓库中最小的一个货位。
  • 关键点
    • 大小由参数 DB_BLOCK_SIZE 决定。
    • 一个数据块对应一个或多个物理块(操作系统块)。
    • 结构包括块头存储区两部分。

2. 区 (Extent)

  • 是什么:由一组连续的数据块结合而成。是Oracle存储分配的最小单位。就像一组连续的货位组成了一个完整的货位区间。

3. 段 (Segment)

  • 是什么:由一个或多个区组成,是数据库对象的存储载体。就像一整个货架。
  • 种类(PPT中明确提到的):
    • 数据段:存储表中所有数据(如一张学生表的所有数据)。
    • 索引段:存储表上最佳查询的所有索引数据。
    • 临时段:存储表排序操作期间建立的临时表的数据。
    • 回滚段:存储数据修改之前的位置和值(用于回滚事务)。
  • 注意视图(View)不是段,它只是一个虚拟表,不存储数据。

4. 表空间 (Tablespace)

  • 是什么:数据库的最大逻辑划分区域。就是一个最大的逻辑区域。
  • 关键点
    • 一个表空间由一个或多个数据文件组成。
    • 一个数据文件只属于一个表空间。
    • 表空间的大小等于其所有数据文件大小之和。
  • 默认表空间(创建数据库时自动生成):
    • SYSTEM:系统表空间
    • SYSAUX:辅助系统表空间
    • UNDO:撤销表空间
    • USERS:用户表空间

5. 数据库 (Database)

  • 是什么:以上所有内容的物理和逻辑集合。就是整个仓库。
  • 物理结构:由三种核心文件构成:
    • 数据文件 (.dbf):真正存储数据的地方。
    • 控制文件 (.ctl):数据库中最小但最重要的文件,记录数据库的物理结构。
    • 日志文件 (.log):记录所有数据变化,用于恢复。
      • 重做日志文件:记录实时变化。
      • 归档日志文件:重做日志的历史备份。

二、动手实践:如何创建数据库和表空间

方法一:界面方式(推荐新手使用)

创建数据库:使用DBCA(数据库配置助手)工具。

这是一个图形化向导,按照步骤选择数据库名称、字符集、存储位置等即可轻松完成创建。

启动DBCA,进入cmd命令行输入dbca;在搜索栏搜索dbca文件以管理员的方式运行(推荐使用后者)出现“欢迎使用”界面,如图所示,单击“下一步”按钮进入创建数据库的向导。

在“操作”窗口中,用户可以选择要执行的操作,这里选中“创建数据库”选项,如图所示,单击“下一步”按钮。

在“数据库模板”窗口中,选择相应选项后单击“显示详细资料”按钮可查看该数据库模板的各种信息。这里选择“一般用途或事务处理”选项,如图所示,单击“下一步”按钮。

在“数据库标识”窗口中输入“全局数据库名”和“SID”,如图所示,单击“下一步”按钮。

在“管理选项”窗口中可以选择配置Enterprise Manager企业管理器或者配置Database Control管理本地数据库,这里保持默认设置,如图所示,单击“下一步”按钮。

在“数据库身份证明”窗口中,将所有账户设置为同一管理口令,如图所示,单击“下一步”按钮。

在“数据库文件所在位置”窗口中,选择“所有数据库文件使用公共位置”,单击“浏览”按钮选择数据库文件的存放路径,如图所示,单击“下一步”按钮。

下一步

选择你自己找的到的地方

注意勾选示例方案

在“初始化参数”和“数据库存储”窗口中也保持默认配置,两次单击“下一步”按钮。

在“创建选项”窗口中选择“创建数据库”选项,如图3.9所示,单击“完成”按钮,之后会弹出确认创建的对话框,单击“确定”按钮开始创建数据库。

耐心等待

创建数据库完毕后,系统会弹出窗口显示相关的提示信息,如图所示,需要在这一步解锁SCOTT、SYSTEM、SYS账户并设置其口令,单击窗口中的“口令管理”按钮,弹出“口令管理”对话框。找到以上三个用户账户,将“是否锁定账户”一栏里的勾去掉,修改口令。

计算机管理->服务与应用程序->服务,注意将所有与Oracle有关的服务打开

创建表空间:使用navicat工具。

关于nvicat连接Oracle服务器的链接:https://www.jb51.net/database/349734h29.htm

连接服务器,其他->表空间

新建表空间,输入名称、大小;注意下面的路径、自动扩展和下一个大小。

保存输入表名称

在用户这里查看,没有刚刚创建的话就新建一个

新建用户,注意用户名和表空间要与刚刚创建的表空间一致,保存。

之后就能查询到创建的表空间。

方法二:命令方式(需掌握的核心技能)

手动创建数据库(谨慎操作!)

```sql
-- 1. 创建初始化参数文件(initmydb.ora),设置必要参数如:
DB_NAME=mydb
CONTROL_FILES=("E:\app\...\control01.ctl", "E:\app\...\control02.ctl")
...

-- 2. 连接并启动实例到NOMOUNT状态
CONN sys/password AS SYSDBA
STARTUP NOMOUNT pfile='E:\app\...\initmydb.ora';

-- 3. 执行CREATE DATABASE命令(核心)
CREATE DATABASE mydb
LOGFILE GROUP 1 ('redo01.log') SIZE 50M,
         GROUP 2 ('redo02.log') SIZE 50M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
CHARACTER SET ZHS16GBK -- 使用中文常用字符集
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'system01.dbf' SIZE 500M
SYSAUX DATAFILE 'sysaux01.dbf' SIZE 500M
UNDO TABLESPACE undotbs DATAFILE 'undotbs01.dbf' SIZE 200M
DEFAULT TABLESPACE users DATAFILE 'users01.dbf' SIZE 100M;

-- 4. 创建附加表空间(可选)
CREATE TABLESPACE mytbs DATAFILE 'mytbs01.dbf' SIZE 100M;
```

**注意**:手动创建极易出错,如果出错,需要**删除所有已创建的数据文件**后重新运行。

使用SQL命令创建表空间

这是最常用的命令操作,必须掌握:

```sql
-- 创建一个名为`mytbs`的本地管理、自动段空间管理的表空间
CREATE TABLESPACE mytbs
  DATAFILE 'E:\app\oradata\mydb\mytbs01.dbf' -- 数据文件路径
  SIZE 100M                                  -- 初始大小
  AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED   -- 自动扩展
  EXTENT MANAGEMENT LOCAL                    -- 本地化管理
  SEGMENT SPACE MANAGEMENT AUTO;             -- 段空间自动管理

-- 创建一个大数据文件表空间(BIGFILE)
CREATE BIGFILE TABLESPACE liyu_big
  DATAFILE 'liyu_big.dbf' SIZE 2G;

-- 修改表空间大小
ALTER TABLESPACE liyu_big RESIZE 1G;

-- 重命名表空间(注意:SYSTEM和SYSAUX不能重命名)
ALTER TABLESPACE liyu_2 RENAME TO new_liyu_2;

-- 删除表空间( INCLUDING CONTENTS 会同时删除段数据)
DROP TABLESPACE liyu_big INCLUDING CONTENTS AND DATAFILES;
```

三、总结与回顾

概念类比解释创建方式
数据库整个仓库数据物理和逻辑的集合CREATE DATABASEDBCA
表空间仓库分区最大的逻辑存储单元,由数据文件组成CREATE TABLESPACEOEM
货架存储数据库对象(表、索引等)(随表/索引自动创建)
一组货位由连续数据块组成,分配存储的最小单位(自动分配)
数据块单个货位最小的I/O逻辑存储单位(由参数决定)

学习建议

  1. 理解概念:务必搞清这些概念之间的包含关系:数据库 > 表空间 > 段 > 区 > 数据块
  2. 动手练习:在自己安装的Oracle环境或学校实验室中,优先使用DBCA创建数据库,然后多用SQL命令练习表空间的创建、修改和删除。这是最实际有效的学习方式。
  3. 谨慎操作DROP命令一旦执行无法撤回,操作前务必确认无误。

到此这篇关于Oracle数据库、表空间与存储结构的文章就介绍到这了,更多相关Oracle表空间与存储结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle数据库中外键的相关操作整理

    Oracle数据库中外键的相关操作整理

    这篇文章主要介绍了Oracle数据库中外键的相关操作整理,包括对外键参照的主表记录进行删除的操作方法等,需要的朋友可以参考下
    2016-01-01
  • Oracle数据库不同损坏级别的恢复教程

    Oracle数据库不同损坏级别的恢复教程

    这篇文章主要给大家介绍了关于Oracle数据库不同损坏级别的恢复教程,文中通过示例代码介绍的非常详细,对大家学习或者使用Oracle数据库具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • centos 6.5下安装oracle 11gR2与Oracle自动启动的配置

    centos 6.5下安装oracle 11gR2与Oracle自动启动的配置

    CentOS 下安装 Oracle 是一件比较麻烦的事情,下面这篇文章主要介绍了在 centos 6.5下安装oracle 11gR2的前的配置步骤,以及安装完成后,如何设置为随系统自动启动。配置完成后,启动图形化安装,没有什么可说的,本文就没有一一截图。需要的朋友可以参考借鉴。
    2017-01-01
  • Oracle的数据字典技术简析

    Oracle的数据字典技术简析

    Oracle的数据字典技术简析...
    2007-03-03
  • navicat使用Oracle创建库以及用户超详细教程

    navicat使用Oracle创建库以及用户超详细教程

    本文介绍如何使用Navicat连接Oracle数据库,步骤包括准备工作、新建连接、输入用户名和密码、测试连接、建立库和用户、授权以及测试的相关资料,需要的朋友可以参考下
    2024-09-09
  • 浅谈oracle rac和分布式数据库的区别

    浅谈oracle rac和分布式数据库的区别

    这篇文章主要介绍了oracle rac和分布式数据库的区别的相关内容,小编觉得挺不错的,这里给大家分享下,需要的朋友可以参考。
    2017-10-10
  • Oracle监听器被优化大师挂掉后的完美解决方法

    Oracle监听器被优化大师挂掉后的完美解决方法

    这篇文章主要介绍了Oracle监听器被优化大师挂掉后的完美解决方法,需要的朋友可以参考下
    2017-08-08
  • Oracle数据库分析函数用法

    Oracle数据库分析函数用法

    大家好,本篇文章主要讲的是Oracle数据库分析函数用法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • oracle停止数据库后linux完全卸载oracle的详细步骤

    oracle停止数据库后linux完全卸载oracle的详细步骤

    本文介绍了linux完全卸载oracle的详细步骤,卸载前需使用SQL*PLUS停止数据库和相关服务,详细步骤看下面说明,大家可以参考使用
    2014-01-01
  • oracle在导入数据时报600错误的解决方法

    oracle在导入数据时报600错误的解决方法

    最近在工作中进行oracle数据库导入的时候遇到了600错误,通过查找相关的资料,最终终于解决了,下面这篇文章主要给大家介绍了关于oracle在导入数据时报600错误的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09

最新评论