概述
从宏观上看,Oracle数据库服务器主要由两部分组成, 数据库和实例.
数据库是Oracle用于保存数据的一系列物理结构和逻辑结构.
数据库是指操作系统下数据文件,控制文件,日志文件等.一般情况下,数据库是静态的,通过操作可以修改数据的相关数据,并产生相关日志及文件.
实例是由服务器在运行过程中的内存结构和一系列进程组成的.
实例是动态的,由一组内存结构和相关的进程组成,与数据库密切相关.当操作系统关闭时,实例随着数据库关闭也就消失了.
物理存储结构
Oracle数据库的内部结构(存储结构)包括物理存储结构(Physical Structure)和逻辑存储结构(Logical Structure),两者密切联系,相互关联.
从文件的角度看.数据库可以分成三个层次.Oracle数据库的物理存储结构主要包括数据文件(Data File), 控制文件(Control File), 归档日志文件(Archived Log File)等,所有文件都是由操作系统的物理块组成.
数据文件
数据文件(Data File)用来存储数据和相关脚本的文件.Oracle数据库由一个或多个数据文件组成.数据文件可以存储两种类型的数据,用户数据和系统数据.
控制文件
每个数据库至少有一个控制文件,一般是三个控制文件,和数据文件放在同一个目录下.控制文件是特定的二进制文件,一般比较小,其中存放了数据库文件相关的关键信息.
数据库启动时,通过控制文件找到数据文件和重做日志文件,通过控制文件保持数据库的完整性以及恢复数据时使用那些重做日志.
数据库控制文件名通过init.ora文件的CONTROL_RILES参数规定.主要包含的信息类型如下:
数据库名
数据库创建时间
数据文件和重做日志文件的存放位置
表空间名
当前日志序列号
检查点信息
关于重做日志和归档的当前状态信息
查看控制文件信息的两种方法:
SQL > SELECT * FROM v$controlfile; SQL > SELECT type,record_size,records_total,records_used FROM V$controlfile_record_section WHERE type = 'DATAFILE';
归档日志文件
归档日志文件 (Archived Log File) 用于保存被覆盖的重做日志文件.
非归档模式就是在数据库运行时,日志信息不断地记录到日志文件组中,当日志文件组记录满后又重新从第一个日志组开始覆盖写日志信息,这时不会用到归档日志文件.
逻辑存储结构
Oracle数据库在逻辑上按照从大到小的层次分别为表空间, 逻辑对象, 段区间和块,小的逻辑结构包含在大的逻辑结构中.
表空间
表空间(Tablespace)是用于存放表,索引和视图等对象的磁盘逻辑空间,是数据库中最高级的逻辑存储结构,是数据库的逻辑的划分,是一个或多个物理文件表示.
在无指定情况下,默认属于System表空间.
逻辑对象
逻辑对象(Logic Object) 或模式对象,是由用户创建的逻辑结构,用以包含或引用他们的数据,如表,视图,索引,簇,存储过程,序列和同义词之类的结构.
可以使用你Oracle Enterprise Manager来创建和操作逻辑对象.
段
段(segment) 是表空间中指定类型的逻辑结构, 由一个活多个区间组成.一个单独的表可以是一个段.
当分配空间时,以区间为单位.
Oracle数据库中,几种常见类型的段:
数据段 (Data Segments). 存放一个表或簇中的所有数据, 当使用create table 自动在表空间上创建data segments.
索引段 (Index Segments). 存放所有索引数据, 当使用create index自动在表空间上创建index segments.
回滚段 (Rollback Segments). 存放事物所修改数据的旧值.
临时段 (Temporary Segments). 处理SQL 语句和排序数据时所用的工作区间.
区间
区间(extent) 是Oracle数据库的最小存储单元,由一系列连续的块组成的空间,每一次系统分配和回收空间都是以区间为单位进行的.
块
块(block) 是Oracle进行逻辑管理的最基本的管理单元,数据库进行读写都是以块为单位进行的,其大小与操作系统的块不同,由db_block_size参数决定的:
db_block_size=8192
数据字典
Oracle数据字典由基表和视图组成,存储Oracle系统的活动信息和所有用户数据库的定义信息等.
静态数据字典
静态数据字典是数据库的一部分,记录了系统资源信息,用户登录信息,数据库信息等内容.
静态数据字典是由一些基表和视图组成,存在于SYSTEM表空间,可分成4类,由前缀区分:
数据字典前缀 | 说明 |
ALL | 由授权的用户访问,显示所有可访问的对象信息 |
USER | 由用户创建,显示用户私有的对象信息 |
DBA | 由具有DBA权限的用户访问,管理数据库对象信息 |
V$ | 由具有DBA权限的用户访问,显示运行中的动态信息 |
查询表空间的信息 (当前用户必须拥有DBA角色)
SQL > SELECT * FROM dba_data_files;
查询某一用户下的所有表,过程,函数等信息
SQL > SELECT owner,object_name,object_type FROM all_objects;
动态性能表
动态性能表本质上不是数据字典的一部分,是一组虚拟表,记录了当前数据库的活动情况和参数.动态性能表一般以V$前缀开始.
常用数据字典
数据字典名称 | 说明 |
DBA_TABLES | 所有用户的所有表信息 |
DBA_TAB_COLUMNS | 所有用户的表的列(字段)信息 |
DBA_VIEWS | 所有用户的视图信息 |
DBA_SYNONYMS | 所有用户的同义词信息 |
DBA_SEQUENCES | 所有用户序列信息 |
DBA_COUNSTRAINTS | 用户的表的约束信息 |
DBA_INDEXES | 所有用户索引的信息 |
DBA_TRIGGERS | 所有用户触发器信息 |
DBA_SOURCE | 所有用户存储过程信息 |
DBA_SEGMENTS | 所有用户段(表,索引及Cluster)空间信息 |
DBA_EXTENTS | 所有用户段的扩展信息 |
DBA_OBJECTS | 所有用户对象的基本信息 |
CAT | 当前用户可以访问的所有基表 |
TAB | 当前用户创建的所有基表,视图,同义词等 |
DICT | 构成数据字典的所有表的信息 |
数据库相关的数据字典
数据库对象 | 数据字典中的表和视图 | 说明 |
数据库 | V$DATABASE | 记录数据库系统的运行状况 |
表空间 | DBA_TABLESPACES | 记录系统表空间的基本信息 |
DBA_DATA_FILES | 记录系统数据文件及表空间的基本信息 | |
DBA_FREE_SPACE | 记录系统表空间的自由空间的信息 | |
实例 | V$INSTANCE | 记录实例的基本信息 |
V$PARAMETER | 记录系统各参数的基本信息 | |
V$SYSTEM_PARAMETER | 显示实例当前的有效参数信息 |