Oracle体系结构
逻辑存储结构
存储结构
在sql中存储数据的方式成为存储结构
逻辑存储结构是用于描述ORACLE内部组织和管理数据的方式,是从逻辑的角度分析数据库的构成,是指的一种层次结构
- 主要的层次有:
表空间、段、数据区 和 数据块
数据块
逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位
数据区
是由一组连续的ORACLE数据块所构成的ORACLE存储结构,一个或多个数据块组成一个数据区
数据区是ORACLE存储分配的最小单位,ORACLE进行存储空间的扩展时以区为基本单位
段
段是由一个或多个数据区构成的,是为特定的数据对象分配的一系列数据区
数据段
保存表中数据
索引段
保存索引数据
回滚段
也叫撤销段,保存回滚数据
临时段
当执行创建索引、排序、分组、表连接、去重等操作时,暂时存储“解析过的数据”
表空间
- 数据库最大的逻辑划分区域,任何数据库对象的创建都必须被指定存储在某个表空间中
- 一个用户可以将对象指定建立在多个表空间上,创建用户的同时一定会指定一个默认的数据表空间和一个默认的临时表空间
- 创建数据库(orcl)时会自动创建表空间,包括用于管理用户数据的表空间和管理ORACLE系统自身的表空间
集中默认创建的表空间
SYSTEM表空间
即系统表空间,存放ORACLE内部数据,例如系统内部表和数据字典数据,如表名、用户名、列名等,不赞成用于存储用户数据
SYSAUX表空间
SYSTEM表空间的辅助表空间,降低SYSTEM表空间的负荷
UNDO表空间
即撤销表空间,存储旧数据 --对应回滚段
USERS表空间
用户表空间,专门存放用户数据,如表、索引、序列等 --对应数据段和索引段
TEMP表空间
临时表空间,不同于撤销表空间,它存放的是解析数据 --对应临时段
注意
- 建议单独创建并命名用户使用的表空间(每种系统或每种用途单独划分),并单独维护
- 表空间对应的物理结构是数据文件,一个表空间下可以有多个数据文件,但一个数据文件只属于一个表空间
- 一个用户可以将对象指定建立在多个表空间上,创建用户的同时一定会指定一个默认的数据表空间和一个默认的临时表空间
- 创建数据库(orcl)时会自动创建表空间,包括用于管理用户数据的表空间和管理ORACLE系统自身的表空间
物理存储结构
用于描述ORACLE在操作系统中的物理文件组成情况
主要文件
数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件和警告日志文件等
数据在物理上存储在表空间所包含的物理文件中
数据文件
保存用户数据和ORACLE内部数据的文件
数据文件对应的数据字典:
dba_data_files/dba_temp_files
控制文件
一个二进制文件,记录了数据库的物理结构信息,包括数据库名、数据文件与日志文件等的名字和位置,建库信息等。出于安全性考虑,ORACLE会在创建数据库时自动创建2到3个控制文件并记录相同的信息
对应数据字典:
v$controlfile
重做日志文件
UNDO表空间内只能尽可能地存放撤销数据,但出于性能考虑不能一直存放,超过一定时间会将其写入到重做日志中,可以用于数据恢复,重做日志文件循环使用。
对应数据字典:
v$logfile
归档日志文件
重做日志文件循环使用必将导致旧日志被覆盖,为了保留这部分日志,重做日志被覆盖前会写进归档日志,由归档日志永久保留。出于性能考虑,大部分项目组不会采用归档模式,但会每天备份数据库(expdp impdp )
对应数据字典:
select dbid,name,log_mode from v$database;
参数文件
口令文件
警告日志文件
表空间与数据文件的关系
1.一个表空间可以由多个数据文件构成,一个数据文件只归属于一个表空间
2.每个数据文件最多可以扩展到32G
3.一个表空间的容量与数据文件的大小以及数据文件的个数有着直接的关系,一个表空间的最大容量=每个数据文件大小之和。
表空间:XXX 5个数据文件 2个10g,3个20g。 80g/160=50%
User表空间
数据文件:User01 user 02
数据字典
定义
是数据库自己维护的一组表,它是存放ORACLE内部信息的地方,描述数据库内部运行情况和管理情况。本质上是一张表,区别于平时使用的事实表,它仅存放关于数据库某项内部内容的信息
分类
dba_ --管理员用户登录
user_ --对应用户登录
all_ --管理员或普通用户登录
数据字典动态视图:动态性能视图 v$ --管理员用户登录
查看数据字典
select * from dba_users; --所有用户信息
select * from dba_tablespaces; --表空间信息
select * from dba_data_files; --数据文件信息
select * from dba_temp_files; --临时文件信息
select * from user_objects; --用户的对象信息
SELECT * FROM USER_TABLES; --当前用户下的所有表的信息
SELECT * FROM USER_TAB_COLS WHERE TABLE_NAME = ‘’; --表的列的信息
SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAME = ‘’; --表注释
SELECT * FROM USER_COL_COMMENTS WHERE TABLE_NAME = ‘’; --列注释
SELECT * FROM USER_IND_COLUMNS; --查询用户的索引
SELECT * FROM USER_SEQUENCES; --查询序列
SELECT * FROM USER_VIEWS; --查询视图
SELECT * FROM USER_CONSTRAINTS; --约束信息
SELECT * FROM USER_CONS_COLUMNS; --约束覆盖字段信息