oracle学习之系统结构(2)--物理结构

上一篇学习了oracle中常见的术语,术语应当是基于一个体系才会变的有意义。所以有必要对orale的体系结构作一下认 识。最经典的图,就是下边这张了 [img]http://dl.iteye.com/upload/attachment/546579/5aabc4f7-4b59-39ce-8314-08e5bcd072fe.png" alt="[/img]

 

个人觉得oracle的整个体系可以分为三个部分:物理文件管理体系、内存管理体系、用户(APP)接口调用。

本篇先从第一部分物理文件管理体系说起:

文件体系由一堆文件构成,大家都知道oracle的数据以及诸多DBMS的信息都是存储在文件中的,这样的文件主要有:

1.Data FILES(数据文件)

2.CONTROL FILES(控制文件)

3.REDO_LOG FILES(重做日志文件)

4.ARCHIVED_LOG FILES(归档日志文件)

除此之外,还有一些譬如Parameter files、password files等小文件

下面做简单的解析:

(一)data files

数据文件主要用来存储数据内容(以数据块形式)以及数据库对象,如SEQUENCE\INDEX \SYNONYM\TABLE\等,读取数据时,系统首先从数据库文件中读取数据,并存储到SGA的数据缓冲区中。这是为了减少I/O,如果读取数据时,缓冲区中已经有要读取的数据,就不需要再从磁盘中读取了。存储数据时也是一样,事务提交时改变的数据先存储到内存缓冲区中,再由oracle后台进程DBWR决定如何将其写入到数据文件中。oracle正是通过采用这样的机制,减少I/O,提高性能,增强稳定性。

(二)control files

这是一个二进制格式的文件,文件内容包括:

 

  1. 数据库名及数据库惟一标识
  2. ·数据文件及日志文件的标识
  3. ·系统恢复的必要信息,即SCN(system change number)
我们可以在Oracle的init.ora文件中看到这样一个参数:controller_files = ('file1','file2'...'filen'),这说明数据库有多个控制文件,这些控制文件彼此之间都是镜像的关系。只要其中一个文件是完好的数据库就可以启动。
(三)、redo_log files

重做日志文件记录了对数据库的所有修改的信息。
每一个Oracle数据库中都有至少两个的重做日志文件组,每个重做日志文件组都包含了一个到多个的重做日志文件-即日志成员。同一个日志文件组中的各个日志成员之间是镜像关系,它们的内容都是一模一样的。
Oracle在写日志的时候是以日志组为单位的,只有写完了同一个日志组中的所有日志成员之后,写日志才会结束。当一个日志文件组中所有的成员同时被写满数据时,系统自动转换到下一个日志文件组,这个转换过程称为日志切换。

当日志切换后,会给前一个日志组编一个号,用于归档日志的编号,这个编号称为日志序列号。此编号由1开始,每切换一次,序列号自动加1,最大值受参数MAXLOGHISTORY限制,该参数的最大值为65534。

当oracle把最后一个日志组写满了以后,自动转向第一个日志组,这时,再向第一个日志组写日志的时候, 如果数据库运行在非归档模式下,这个日志组中的原有日志信息就会被覆盖。

(四)arechived_log files

归档日志文件用于系统出现故障时进行恢复操作

Oracle中各种物理文件的操作 SQL语句

注:

创建(添加)数据文件

alter tablespace *** add datafile ***  size ***m autoextend on maxsize unlimited(在linux下得注意限制文件大小不能超过2G)
调整数据文件
alter database *** datafile *** resize ***m
查看数据文件
select * from dba_data_files/select * from v$datafile
查看空闲空间
select * from dba_free_space
查看日志文件
select * from v$log
查看检查点号
select first_change# / checkpoint_change# from v$log/v$datafile/v$database
查看控制文件
select * from v$controller

 

你可能感兴趣的:(oracle 物理结构)