第五篇 再述oracle数据库体系结构 之一:物理结构

转载 2007年10月10日 19:41:00
 在一个服务器中,每一个运行的数据库都有一个数据库实例(instancename) 相联系。数据库启动时,系统首先在服务器内存中分配系统全局区(SGA),即构成了oracle的内存结构。然后启动若干个常驻内存的操作系统进程,即组成了oracle的进程结构。除此之外,还有数据库的物理与逻辑结构。数据库体系统结构图可以参考第一篇。在接下来的篇幅中将分五篇来详细说明oracle数据库的体系结构。
  • oracle物理结构
  • oracle逻辑结构
  • oracle内存结构
  • oracle进程结构
  • oracle连接配置结构

  因为我的学习路线与学任何东西一样,分四个阶段,先需了解总体结构和原理,然后再进一步型清楚他们,第三再分块理解吸收,最后再综合提升。当然动手做试验须贯穿始终。

  本篇说明物理结构。

  物理结构,即oracle数据库使用的操作系统文件结构。对于数据库物理结构文件,不同的oracle版本,不同的操作系统平台上有不同的存储目录结构。

  • winnt  | d:/oracle/product/10.1.0/oradata/DB_NAME/*.*(oracle 10g);d:/orant/database/*.*(oracle7,oracle8)
  • Unix | /home/app/oracle/product/10.1.0/oradata/DB_NAME/*.*(10g);/home/app/oradata/db_name/*.*(8i,9i)

  数据库的物理结构文件按其作用可以分为三类:

  • 数据文件
  • 日志文件
  • 控制文件

一、数据文件

  数据文件用来存储数据库的数据,如表、索引等。读取数据时,系统首先从数据库文件中读取数据,并存储到SGA的数据缓冲区中。这是为了减少I/O,如果读取数据时,缓冲区中已经有要读取的数据,就不需要再从磁盘中读取了。存储数据时也是一样,事务提交时改变的数据先存储到内存缓冲区中,再由oracle后台进程DBWR决定如何将其写入到数据文件中。

1.查询数据文件的信息

sql>select * from dba_data_files或

sql>select * from v$datafile(此数据字典包含文件的动态信息)

一个数据文件只与一个数据库相联系。数据文件的大小是可以改变的。可以通过以下语句查询表空间的空间空闲量

sql>select * from dba_free_space

2.修改数据文件的大小

sql>alter database datafile "d:/.../df1.dbf" resize 800m

3.数据库文件的自动扩展特性。请看下面的例子:

sql>alter tablespace tbs1 add datafile "d:/.../df2.dbf" size 500m autoextend on next 50m maxsize 1000m

sql>alter database mydb1 datafile "d:/.../df2.dbf","d:/.../df3.dbf" autoexetend off

sql>alter database mydb1 datafile "d:/.../df2.dbf","d:/.../df3.dbf" autoexetend on next 30m maxsize unlimited

二、重做日志文件

  重做日志文件记录对数据库的所有修改信息。它是三类文件中最复杂的一类文件,也是保证数据库安全与数据库备份与恢复有直接关系的文件。

 1.日志文件组与日志成员

  在每一个oracle数据库中,至少有两个重做日志文件组。每组有一个个或多个重做日志文件,即日志成员。同一组中的成员是镜像关系,它们存储的内容是一模一样的。oracle在写日志时,以一个日志组为逻辑单位写入,只在将日志都写入日志组中的每个成员文件中后,写日志才完成。

2.日志工作原理

  oracle有多个日志文件组,当一个日志文件组中所有的成员所有的成员同时被写满数据时,系统自动转换到下一个日志文件组,这个转换过程称为日志切换。

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

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

  使用以下语句查询日志文件信息:

sql>select * from v$log

相关字段说明如下:

GROUP#:日志文件组号

THREAD#:日志文件线程号,一般为1,双机容时为2

SEQUENCE#:日志序列号

BYTES:日志文件大小

MEMBERS:该组的日志成员个数

ARC:该组日志信息是否已经完成归档

STATUS:该组状态(CURRENT:表示当前正在使用的组;NACTIVE:表示非活动组;ACTIVE:表示归档未完成)

FIRST_CHANGE#:系统改变号SCN,也叫检查点号

FIRST_TIME:系统改变时间

DBA可以使用下列命令进行强制日志切换

sql>alter system switch logfile

 3.NOARCHIVELOG/ARCHIVELOG

  NOARCHIVELOG是非归档模式,如果数据库运行在这种模式下,当日志切换时,新切换到的日志组中的日志信息会被覆盖。ARCHIVELOG:归档模式,如果数据库运行在这种模式下,日志会被归档存储,产生归档日志,且在未归档之前,日志不允许被覆盖写入。

  要确认数据库的归档方式,可以查询数据字典v$database:

sql>select log_mode from v$database

  要了解归档日志的信息,可以查询数据字典v$archived_log。

  要将数据库改为归档模式:

a.alter database archivelog

b.设置初始化参数LOG_ARCHIVE_START=TRUE

c.设置归档文件目标存储路径 LOG_ARCHIVE_DEST=C:/ORA/ARCHIVE

d.设置归档文件命名格式参数 LOG_ARCHIVE_FORMAT="ORCK%T%S.ARC"。这个格式中的%S表示日志序列号,自动左边补零;%s表示日志序列号,自动左边不补零;%T表示日志线程号,左边补零;%t表示日志线程号不补零。

e.重新启动数据库

4.CKPT进程(检查点进程)

  CKPT进程保证有修改过的数据库缓冲区中的数据都被写入到数据文件,日志文件、数据文件、数据库头和控制文件中都有写入检查点标记。数据库在恢复时,只需提供自上一个检查以来所做的修改。检查点完成时系统将更新数据库数据库头和控制文件。

  参数LOG_CHECKPOINT_TIMEOUT决定一个检查点发生的时间间隔。LOG_CHECKPOINT_INTERVAL决定一个检查需要填充的日志文件块的数量。检查点号,也称系统改变号(SCN),它标识一个检查点。可以通过v$log查询日志文件的检查点信息,通过v$datafile查询数据文件的检查点信息,通过v$database查询数据库头的检查点信息。三个地方的检查点号相同,如果不同,说明发明数据库不同步,此时数据库肯定无法正常启动。

5.增加与删除日志文件组、日志成员(详细语法请参考oracle文档)

alter database [database] add logfile [group integer] filespec[,[group...

alter database [database] add logfile (...)

alter database [database] drop logfile [grout integer]

alter database  [database] add logfile member "filespec" [reuse] to group integer

alter database [database] drop logfile member "filename","filename"...

alter database [database] rename file "filename" to "filename"

6.清除日志文件数据

alter database [database] clear [unarchived] logfile group integer|filespec

 

三、控制文件

  控制文件是一个二进制文件,用来描述数据库的物理结构,一个数据库只需要一个控制文件,控制文件的内容包括:

  • 数据库名及数据库唯一标识
  • 数据文件和日志文件标识
  • 数据库恢复所需的同步信息,即检查点号

  控制文件由参数control_files指定,格式如下:

control_files=("home/app/.../control01.ctl","home/app/.../control02.ctl")

参数中各个文件是镜像关系,也就是说,几个文件中只要有一个文件完好,数据库就可以正常运行。

  以下语句查询控制文件的信息:

sql>select * from v$controlfile

  如果控制文件损坏或丢失,数据库将终止并且无法启动,所以,要对控制文件进行镜象,手工镜像步骤如下:

a.关闭数据库

b.复制控制文件

c.修改参数文件,加入新增的控制文件位置描述

d.重新启动数据库

  另外注意,控制文件中还包含几个服务器参数的设置,如果修改这些参数的值,刚需要重新创建控制文件,这些参数是:

  • MAXLOGFILES:最大日志文件个数
  • MAXLOGMEMBERS:最大日志成员个数
  • MAXLOGHISTORY:最大历史日志个数
  • MAXDATAFILES:最大数据文件个数
  • MAXINSTANCES:最大实例文件个数

  所有修改数据库结构的命令都会引起控制文件的改变。同时出会记录在oracle跟踪文件中,跟踪文件的名称为alter_SID.log,路径如下:

d:/oracle/product/10.1.0/admin/DB_NAME/bdump/SIDALRT.log(unix是alter_SID.ora)

也可以在参数文件中指定跟踪文件的存储路径,后台进程跟踪文件目录由参数background_dump_dest指定,用户跟踪文件位置由参数user_bdump_dest指定,如:

background_bdump_dest=/u01/app/oracle/oralog/bdump

user_bdump_dest=/u01/app//oralog/udump

Oracle--数据库体系结构(物理结构、逻辑结构、内存结构及后台进程)

Oracle数据库的体系结构包括四个方面:数据库的物理结构、逻辑结构、内存结构及进程。   1. 物理结构      物理数据库结构是由构成数据库的操作系统文件所决定,Oracle数据库文件包括:  ...
  • oChangWen
  • oChangWen
  • 2016年04月17日 10:23
  • 2675

ORACLE体系结构,很详细

数据库(Database) 数据库是一个数据的集合,不仅是指物理上的数据,也指物理、存储及进程对象的一个组合。Oracle是一个基于B/S模式的关系型数据库管理系统(RDBMS)。 Ora...
  • sinat_33363493
  • sinat_33363493
  • 2016年06月29日 13:57
  • 7147

Oracle的逻辑结构和物理结构

oracle数据库可以从两个层次划分架构,一个为逻辑结构,另一个为物理结构 如下图所示: 1 逻辑结构    表空间:为数据库提供使用存储空间的逻辑结构,一个表空间可以包含多个数据文件,表空间...
  • tang490996083
  • tang490996083
  • 2013年11月18日 21:19
  • 988

GreenPlumn数据库体系结构

GreenPlumn 数据库是基于 PostgreSQL 基础上开发,具有巨大的并行处理能力的数据仓库,MPP( massively parallel processing )是 GreenPlumn...
  • boyu_tung
  • boyu_tung
  • 2016年01月17日 10:27
  • 518

oracle学习笔记 Oracle体系结构概述

oracle学习笔记 Oracle体系结构概述 从这节开始,开始讲oracle数据库体系结构。 首先从总体上,从概述上把oracle整体的体系结构讲一下, 然后接下来的时间我们会一块一...
  • xinzhan0
  • xinzhan0
  • 2016年07月03日 18:58
  • 1617

使用PowerDesigner将Oracle中的表结构转为物理数据模型

最近因为工作需要,了解了一下PowerDesigner和oracle之间的微妙关系,特将自己的总结分享给各位小伙伴。 一、导出oracle中的物理数据模型 1、导出的过程,就是做了一个逆向工程的过程,...
  • zhaoguoshuai91
  • zhaoguoshuai91
  • 2015年06月14日 20:00
  • 1382

Oracle体系结构之物理结构

Oracle体系结构之物理结构 以前对Oracle的了解少之又少,仅仅停留在最简单的使用层面,最近看《收获,不止Oracle》,对Oracle的整体结构有了大致的了解后再去看其他知识可能会更加容易理解...
  • zhang__jiayu
  • zhang__jiayu
  • 2014年03月24日 21:46
  • 517

Oracle物理结构、逻辑结构、内存结构

数据库(Database) 数据库是一个数据的集合,不仅是指物理上的数据,也指物理、存储及进程对象的一个组合。Oracle是一个基于B/S模式的关系型数据库管理系统(RDBMS)。 Ora...
  • weinabanta
  • weinabanta
  • 2013年10月06日 16:26
  • 3469

Oracle12C体系结构(二)

一.5个重要组成部分 1.     连接数据库实例的服务:为Oracle系统的体系结构中协同工作的方式; 2.     服务器进程; 3.     文件系统管理; 4.     内存区域管理:...
  • qq_33301113
  • qq_33301113
  • 2017年02月18日 11:06
  • 573

MongoDB体系结构

MongoDB是一个可移植的数据库,它在流行的每一个平台上都可以使用,即所谓的跨平台性,在不同的操作系统上虽然略有差别,但是从整体架构上来看,MongoDB在不同的平台上是一样的,如数据逻辑结构和数据...
  • yujin2010good
  • yujin2010good
  • 2016年12月21日 23:51
  • 1083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第五篇 再述oracle数据库体系结构 之一:物理结构
举报原因:
原因补充:

(最多只允许输入30个字)