作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g OCP/OCM、
Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007
擅长Oracle数据库运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
1.物理存储结构
2.逻辑存储结构
将逻辑存储与物理存储分开是关系数据库范例的要求之一。
oracle 数据库的数据的处理发生在 instance(内存)中,但数据的存储发生在磁盘的 database上。
oracle 数据库逻辑存储结构可分为数据库、表空间、段、区、块几个层次。
3.表空间和数据文件
数据在物理上是存储在数据文件(data files)上,从逻辑上看数据存储在段(通常是表)中,
表空间是二者的抽象, 是一个逻辑的概念
表空间的使用解决了这个问题, 消除了段和数据文件之间多对多的关系,
一个表空间可能包含多个段(对象),并由多个数据文件组成,但一个数据文件只能对应一个表空间。
查看表空间信息
SYS@PROD>select tablespace_name,contents,status from dba_tablespaces;
查看表空间对应数据文件
SYS@PROD>select file_id,file_name,tablespace_name,bytes/1024/1024 m from dba_data_files;
2.段、区、块
段(segment): 段是表空间中存储数据的数据库对象。表是典型的段,
还有其他段类型比如索引段、 undo 段。
任何一个段可以仅存在于一个表空间中,
但表空间可以由多个数据文件组成。这样表的大小就不再受单个数据文件大小限制。
段是模式对象,由具体某一个用户(模式)限定。
注意: PL/SQL 过程、视图、序列不是段,它们不存储数据,存在于数据字典中。
SYS@PROD>select segment_name,segment_type,tablespace_name,bytes/1024 k,extents,blocks from dba_segments where owner='SCOTT';
区(extent)
区是 oracle 空间分配的基本单元。 区是一组连续编号的 oracle 块。
这些区可能位于构成表空间的一个或多个数据文件中。
块(block)
oracle 块是数据库 I/O 的基本单位。 数据文件设置为连续编号的 oracle 块。一个块中可能有多个行,
但当会话需要某行数据时,是从磁盘将整个块读入到数据缓冲区。
同样,dbwr 写脏块时也是把整个块写入数据文件。对表空间来说,块大小是固定不变的。
11g 默认标准块大小是 8KB,在创建数据库时确定db_block_size 参数,不能修改。
从物理上讲,数据文件由操作系统块组成,操作系统块是文件系统 I/O 的基本单位。
通常 oracle块和操作系统块是一对多的关系,比如上图, oracle 块是 8KB,操作系统块大小是 1KB
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持 您的批评指正是我写作的最大动力!
?? 技术交流可以 关注公众号:IT邦德 ??
|