数据库基础原理1:Oracle数据库体系结构(续1)
接着上篇的【数据文件】
物理存储结构和逻辑存储结构,是相关独立的,但也紧密联系中。
因为独立,所以在管理物理存储结构的时候,不会影响对逻辑结构的访问。例如重命名了数据文件的名称,不会影响内部的逻辑存储结构,如表,索引等等。
因为紧密联系,所以,在介绍逻辑存储结构前,还是有必要先提及其中的几个概念: 模式,表空间
【模式-schema】,它与Oracle数据库的用户相匹配,基本上是一个用户对应一个模式。模式是Oracle数据库的基本逻辑隔离单元,它是一个用户下所有对象的集合。可以说,用户是模式中所有数据结构(对象)的所有者,其它用户要访问这些对象,必须经过专门的授权。
也可以极端一点的说, 模式是对象的集合 ,而 用户是权限的集合 。
更好一层的隔离就是数据库层面,彼此间的访问,就不必须同DBlink。
【表空间】,它是一个逻辑概念。数据库的所有数据都存在于表空间中。而物理上又是落在数据库文件中。所有说,每个表空间都有由一个或多个数据文件组成。如图,
必要的是区分: 表空间是逻辑概念 和 数据文件是物理实体 。
所以在创建用户的时候,需要指定默认表空间。而创建表空间的时候,需要指定数据文件。这样,用户,模式,表空间,数据文件,就串联起来了。 当用户下建立对象后,模式就随之产生。模式里的对象(如表)的结构元数据和里面存放的业务数据就有了逻辑上的存放位置,即表空间,以及 物理存放位置,即数据文件。
创建用户:
create user user_name identified by password default tablespace tablespace_name;
创建表空间:
create tablespace tablespace_name /u01/app/oracle/oradata/ecs/file01.dbf autoextend on next 200m maxsize unlimited, /u01/app/oracle/oradata/ecs/file01.dbf autoextend on next 200m maxsize unlimited;
说明: 创建一个表空间,包含着两个数据文件,数据文件是按照每200M自动扩展,但由于操作系统中文件系统的限制,一个数据文件最大支持32G。如果建立是的大表空间,那就是另一回事了。
【控制文件】 ,一个很小的二进制特殊数据文件。虽然短小,但却精悍,他是数据库的中枢机要所在。
查询控制文件:
或者:
每个数据库都有一个唯一的控制文件,但可以有多个副本,而且应该至少有一个副本。在参数文件中记录了控制文件和副本的位置,参数为:control_files . Oracle会保证对所有控制文件做同步更新。
要有多个副本,因为它至关重要。
同时,也因为它是一个二进制文件,不能像文本文件一样,轻易重建。
所以,冗余与备份,势在必然。在备份数据库的时候,必须要备份控制文件。
再看看它的大小:
也就18M左右。因为短小,所以不需要担心多个同步更新多个控制文件会对性能造成多大影响,I/O微乎其微。
为何是中枢机要所在,再看看它记录的内容:
-
数据库名称和数据库唯一标识符(DBID)
-
数据库创建的时间戳
-
有关数据文件,联机重做日志文件和归档重做日志文件的信息
-
表空间信息
-
RMAN备份
-
检查点及SCN信息
控制文件,记录了数据库名称,能够定位数据文件和重做日志文件。 同时,数据文件和重做日志文件发生更改,也就是发生步调一致的checkpoint时候,都会记录到控制文件。也就是记录了数据库系统层面的SCN,数据文件的SCN,以及数据文件的终止SCN。另一个SCN,记录在数据文件头部。
--系统检查点:
select checkpoint_change# from v$database;
--数据文件检查点
select name,checkpoint_change# from v$datafile;
--启动检查点:
select name,checkpoint_change# from v$datafile_header;
--终止检查点:
select name,last_change# from v$datafile
SCN: System Change Number.
A database ordering primitive. The value of an SCN is the logical point in time at which changes are made to a database.
系统变更编号,对数据库进行的更改的逻辑时间戳。控制文件通过SCN,管理着数据库的状态。像一根根信道,接通各个数据文件,监控着数据库的改变。 在数据库恢复的时候,SCN是基础。
另外,通过RMAN备份的备份集元数据一般也记录在控制文件中。当然也可以记录单独的目录数据库中。各有优劣,此不细说。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69915315/viewspace-2641896/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69915315/viewspace-2641896/