数据库存储概述
- 存储结构
- 数据库需要将数据按照一定的结构进行存储,例如划分不同用途的文件、不同功能的逻辑单元。
- 物理存储结构
- 物理存储结构是指数据库在物理上的构成,由参数文件、控制文件、数据文件、Redo日志文件、归档文件、密码文件等构成。
- 逻辑存储结构
- 通过划分逻辑存储结构,可以方便物理存储的管理,包括表空间、数据段、数据区、数据块等逻辑存储概念。


物理存储结构
- 控制文件: 数据库初始配置信息的持久化文件。
- Redo日志文件: 记录的是新数据的备份。
- 数据文件: 用于存储数据库数据。
- 参数文件: 定义了数据库实例的参数配置信息。
- 其他文件
- 归档文件: 归档日志是Redo日志完成归档后形成的日志。
- 密码文件: 存放着数据库管理用户sys的密码。


逻辑存储结构
- 表空间
- 数据库划分的逻辑单元,包含若干数据库对象,例如表、索引等。
- 数据段
- 每个数据库对象至少包含一个数据段。空间上由若干数据区组成。包含表段、索引段、回滚段等不同类型的段。
- 数据区
- 由一组物理上连续的数据块组成,可以提高空间管理的效率。
- 数据块
- 数据存储的最小逻辑单元,默认的大小8K。包含表、索引、UNDO等不同类型的块。


数据库存储管理
- ashanDB内置了如下表空间,其属性可以默认或者在建库时指定
| 表空间 | 作用 |
|---|---|
| SYSTEM表空间 | 主要包含数据字典;数据库管理信息的表和视图;已编译的存储对象,如触发器、过程和包。 |
| SYSAUX表空间 | 作为SYSTEM表空间的辅助表空间,YashanDB AWR快照信息的默认表空间。 |
| USERS表空间 | 默认的用户表空间,用于存储永久用户对象和私有信息。 |
| TEMP表空间 | 主要用于临时表的段分配,存储临时表数据信息。 |
| UNDO表空间 | 用于YashanDB创建和管理回滚(撤销数据库更改)信息。 |
| SWAP表空间 | 用于存储临时数据排序,提高排序期间空间管理操作的效率。 |
-
多个表空间的优点:
- 将用户数据与数据字典数据分开,以减少I/O争用。
- 将一个应用程序的数据与另一个应用程序的数据分开,以防止在表空间必须脱机时多个应用程序受到影响。
- 将不同表空间的数据文件存储在不同的磁盘驱动器上,以减少I/O争用。
- 使单个表空间脱机,而其他表空间可以继续保持联机,无需全部表空间脱机或关闭数据库,从而提供更好的可用性。
- 备份单个表空间。
-
创建表空间
- CREATE TABLESPACE用于在数据库中创建一个新的表空间。
- SYSTEM/SYSAUX/UNDO/SWAP/TEMPORARY/DEFAULT表空间在CREATE DATABASE时自动创建,无需手动CREATETABLESPACE创建。
- 为了方便管理,当有不同的业务用户时,需要给不同用户的创建不同的表空间。
-
创建表空间示例
CREATE TABLESPACE yashan1 DATAFILE 'yashan1' SIZE 4M AUTOEX TEND ON NEX T 4M MAXSIZE 1G;
- 新建用户指定表空间
CREATE USER yashan_user1 IDENTIFIED BY yashan_pwd1 DEFAULT TABLESPACE yashan1;
GRANT DBA TO yashan_user1;
- 修改用户默认表空间
ALTER USER yashan_user1 DEFAULT TABLESPACE users;
- 删除表空间
- DROP TABLESPACE用于删除一个表空间。
- 注意:
- 不能删除一个已被某个用户指定的DEFAULT TABLESPACE,必须先通过ALTER USER语句将其变更。
- 不能删除一个已创建了任何数据库对象的表空间,除非指定了INCLUDING CONTENTS语句。
- 如果表空间中存在被其他表空间对象定义的外键约束,那么即使指定了INCLUDING CONTENTS语句,该表空间也不能被删除,除非同时指定了CASCADE CONSTRAINT。
- 不能删除SYSTEM/SYSAUX/UNDO/SWAP/TEMPORARY/DEFAULT等内置表空间。
- 删除表空间示例
DROP TABLESPACE yashan1 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
-
INCLUDING CONTENTS
- 该语句用于指定将表空间及其包含的所有对象都删除。
-
AND|KEEP DATAFILES
- 指定在删除表空间时,其对应的数据文件是被删除,还是被保留,缺省为保留。
-
CASCADE CONSTRAINT
- 当存在其他表空间里的对象定义了到本表空间里对象的外键约束时,先将这些外键约束项删除,再删除本表空间。
-
ALTER TABLESPACE维护表空间
- ALTER TABLESPACE语句用于更改一个已存在的表空间的相关属性。
-
增加数据文件
ALTER TABLESPACE yashan1 ADD DATAFILE;
- 空闲空间回收
ALTER TABLESPACE yashan1 SHRINK SPACE;
- 表空间相关视图
- DBA_TABLESPACES 显示所有表空间的信息。
- DBA_DATA_FILES 显示所有数据文件信息。
- V$TABLESPACE 显示所有表空间的汇总信息。
- V$DATAFILE 显示数据文件汇总信息。
- 查看DBA_TABLESPACES视图
select tablespace_name,user_bytes,total_bytes from dba_tablespaces;

- 查看DBA_DATA_FILES视图
select tablespace_name,file_name from dba_data_files;

- 查看V$TABLESPACE视图
select name,temporary from v$tablespace;

- 查看V$DATAFILE视图
select name,creation_time,auto_extend from v$datafile;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




