2.1 物理结构
Oracle数据库的物理结构由构成数据库的操作系统文件组成,它是从操作系统的角度来分析数据库的组成,在操作系统中可以看得到的文件,也就是说它是数据库在操作系统中的存储位置。常见的物理结构包括:控制文件、数据文件、重作日志文件、归档日志文件、初始化参数文件、还有其它文件(密码文件、报警日志文件和后台及用户跟踪文件)。
控制文件
Select* from v$controlfile;
数据文件
Select* from dba_data_files; 或者:select * from v$datafile;
日志文件
Select* from v$logfile;
参数文件
在命令窗口执行 show parameter pfile;
2.2 Oracle数据库逻辑结构
逻辑结构如下图所示:
2.2.1 数据块 最小的存储单元,是操作系统块大小的整数倍。
2.2.2 区 由连续的数据块组成。用于保存特定数据类型的数据,区不可跨越多个数据文件。
2.2.3 段
是由多个区组成,用于保存特定的数据库对象。段能不能跨越多个数据文件
(1) 数据段
数据段也称为表段,它包含数据并且与表和簇相关。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。
(2) 索引段
包含了用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。
(3) 回滚段
oracle回滚段的理解:
当一个事务开启(DML会自动开启事务)时,系统会自动为之分配回滚段。当修改表中数据的时候,
该数据修改前的值(即前影像)会存放在回滚段中,
当用户回滚(rollback)事务时,oracle将利用回滚段中的数据前影像来将修改的数据
恢复到原来的值。提交事务之后,系统会自动释放相应回滚段的数据。
问:当前会话为什么查到的都是最新的数据?
答:未提交的数据称为脏数据,脏数据都是保存在内存中的,而且只对于该会话有效。
问:新开始一个会话(session),为啥查不到未提交的数据?
答:由于事务的隔离性
(4) 临时段
它是Oracle在运行过程中自行创建的段。当一个SQL语句需要临时工作区时,由Oracle建立临时段。一旦语句执行完毕,临时段将自动消除。
(5) LOB段
如果表中含有CLOB和BLOB等大型对象类型数据时,系统将创建LOB段以存储相应的大型对象数据。LOB独立于保存表中其他数据的数据段。
2.2.4 表空间
Oracle数据库是由若干个表空间(tablespace)构成的。任何数据库对象在存储时都必须存储在某个表空间中。表空间对应于若干个数据文件,即表空间是由一个或多个数据文件构成的,一个数据文件只可以属于一个表空间。表空间相当于操作系统中的文件夹,这是Oracle数据库逻辑结构与物理文件之间的一个映射。所以数据库的存储空间在物理上表现为数据文件,在逻辑上表现为表空间。每个数据库至少有一个表空间,表空间的大小等于所有从属于它的数据文件大小的总和。
查询表空间信息最常用sql:
select * Fromuser_tablespaces;
select *from dba_tablespaces;
(1) 系统表空间
系统表空间(system tablespace)是每个Oracle数据库都必须具备的。其功能是在系统表空间中存放诸如表空间名称、表空间所含数据文件等数据库管理所需的信息。系统表空间的名称是不可更改的。系统表空间必须在任何时候都可以用,也是数据库运行的必要条件。因此,系统表空间是不能脱机的。
系统表空间包括数据字典、存储过程、触发器和系统回滚段。为避免系统表空间产生存储碎片以及争用系统资源的问题,应创建一个独立的表空间用来单独存储用户数据。
(2) SYSAUX表空间
SYSAUX表空间是随着数据库的创建而创建的,它充当SYSTEM的辅助表空间,主要存储除数据字典以外的其他对象。SYSAUX也是许多Oracle 数据库的默认表空间,它减少了由数据库和DBA管理的表空间数量,降低了SYSTEM表空间的负荷。
(3) 临时表空间
相对于其他表空间而言,临时表空间(temp tablespace)主要用于存储Oracle数据库运行期间所产生的临时数据。数据库可以建立多个临时表空间。当数据库关闭后,临时表空间中所有数据将全部被清除。除临时表空间外,其他表空间都属于永久性表空间。
(4) 撤销表空间
也叫UNDO表空间。用于保存Oracle数据库撤销信息,即保存用户回滚段的表空间。除了回滚段,在撤销表空间中不能创建任何其他类型的段,因此,用户不能再撤销表空间中创建数据库对象