在一个服务器中,每一个运行的数据库都有一个数据库实例(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的SQL语法、存储过程、触发器、视图、约束、分区表等特性的理解和应用。通过理解这些核心概念,可以更好地管理和优化Oracle数据库,提升系统的稳定...
Oracle数据库的物理结构是数据库系统的基础,它包含了数据库在操作系统层面的存储布局。在Oracle数据库中,物理结构主要由三个核心部分组成:数据文件、重做日志文件和控制文件。 1. 数据文件: 数据文件是Oracle...
Oracle 12c数据库体系结构图文详解手册是 Oracle 12c数据库管理系统的核心组件之一,该手册详细介绍了 Oracle 12c数据库的体系结构、实例、数据库、内存结构、后台进程、控制文件、重做日志文件、数据文件等概念。...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其复杂而高效的设计使得它在企业...通过深入学习Oracle数据库体系结构,不仅可以提升数据库管理技能,还能为后续的数据库优化、故障排查等工作打下坚实的基础。
Oracle数据库体系结构主要由以下几部分构成:Oracle数据库服务器、Oracle实例、Oracle数据库的物理结构和Oracle数据库的逻辑结构。接下来我们将详细探讨这些组成部分。 Oracle数据库服务器是指运行Oracle数据库软件...
在深入探讨Oracle数据库体系结构之前,我们先简单了解一下Oracle的主要组件及其作用。 1. **数据库实例**:Oracle数据库实例是内存结构和后台进程的集合,它们一起管理和处理对数据库的请求。内存结构包括数据缓冲...
Oracle数据库是业界广泛应用的关系型数据库管理系统,它的体系结构是理解和管理数据库的关键。Oracle数据库的体系结构可以分为物理结构和...对于希望深入掌握Oracle数据库体系结构的读者来说,需要进一步学习和实践。
综上所述,Oracle数据库体系结构是一个深度集成的系统,涉及内存管理、进程协调、数据存储和访问、事务处理、安全性等多个方面。理解和掌握这些概念对于有效地管理和优化Oracle数据库至关重要。
Oracle数据库的物理结构: * 数据文件(Data File):是物理存储Oracle数据库数据的文件 * 日志文件(Log File):记录所有对数据库数据的修改,以备恢复数据时使用 * 控制文件(Control File):是一个较小的文件...
在实验“实验2_Oracle数据库体系结构”中,我们将深入理解Oracle数据库的关键组成部分。 首先,Oracle数据库的物理存储结构由数据文件、重做日志文件、控制文件和参数文件组成。 1. **数据文件**(Data Files):...
### Oracle数据库体系结构知识点 #### 一、Oracle体系结构简介 **Oracle Server**: Oracle服务器包含两个主要部分:数据库(Database)和实例(Instance)。 - **Database**: 包括数据文件(Datafiles)、控制文件...
Oracle数据库是世界上最广泛使用的数据库管理系统之一,其复杂的体系架构提供了高效的数据管理、事务处理和安全性。本文将深入探讨Oracle数据库的体系架构,重点解析其中的关键组件及其作用。 首先,我们来了解一下...
一、ORACLE 数据库体系结构 ORACLE 数据库是一个关系型数据库管理系统,由多个组件组成。一个 ORACLE 实例(Instance)是由一定的内存与后台进程组成,而数据库(Database)指物理文件。下面是 ORACLE 数据库的主要...
### Oracle数据库体系结构详解 #### 一、Oracle数据库的核心竞争力 Oracle数据库因其强大的核心竞争力而闻名于世,这些优势体现在可扩展性、可靠性和可管理性三个方面。 **1. 可扩展性** - **定义**: Oracle...
Oracle数据库是一种广泛使用的大型关系型数据库管理系统,其体系结构复杂且高效。理解Oracle数据库的体系结构对于管理和优化数据库性能至关重要。 首先,Oracle的逻辑结构主要包括以下几个部分: 1. **表空间...
Oracle数据库体系结构主要由以下几个关键组件构成: 1. **实例(Instance)**:实例是Oracle数据库在内存中的表现形式,它由系统全局区(SGA)、程序全局区(PGA)和后台进程组成。系统全局区存储共享数据,如数据...
Oracle数据库体系结构主要包括三个方面:内存结构、进程结构和存储结构。 1. **内存结构**: - **System Global Area (SGA)**:这是Oracle数据库中所有进程共享的一块内存区域,包含了数据库缓存、数据字典缓存、...