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 DATABASE 或 DBCA |
表空间 | 仓库分区 | 最大的逻辑存储单元,由数据文件组成 | CREATE TABLESPACE 或 OEM |
段 | 货架 | 存储数据库对象(表、索引等) | (随表/索引自动创建) |
区 | 一组货位 | 由连续数据块组成,分配存储的最小单位 | (自动分配) |
数据块 | 单个货位 | 最小的I/O逻辑存储单位 | (由参数决定) |
学习建议:
- 理解概念:务必搞清这些概念之间的包含关系:数据库 > 表空间 > 段 > 区 > 数据块。
- 动手练习:在自己安装的Oracle环境或学校实验室中,优先使用DBCA创建数据库,然后多用SQL命令练习表空间的创建、修改和删除。这是最实际有效的学习方式。
- 谨慎操作:
DROP
命令一旦执行无法撤回,操作前务必确认无误。
到此这篇关于Oracle数据库、表空间与存储结构的文章就介绍到这了,更多相关Oracle表空间与存储结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!