设为首页 加入收藏

TOP

Oracle的物理存储结构(一)
2015-11-21 03:27:04 来源: 作者: 【 】 浏览:16
Tags:Oracle 物理 存储 结构

Oracle数据库的体系结构是从某一角度来分析数据库的组成,工作过程以及数据库如何管理和组织数据的,主要包括物理存储结构,逻辑存储结构,内存结构以及进程结构。

Oracle的物理存储结构:

Oracle物理存储结构主要包括三种类型的物理文件,分别是数据文件(*.dbf),控制文件(*.ctl)和重做日志文件(*.log)。

1. 数据文件

数据文件主要是存储数据的文件。例如,数据文存储的表的记录和索引。在这些数据文件中,如果用户频繁的访问某些数据,那么这些数据就会被存储在内存的缓冲区中。当对这些数据进行读取时,Oracle首先会从内存de缓冲区中找到相关的数据信息。如果内存的缓冲区中不存在相关的数据,则从数据库文件中读取数据,然后存放到内存的数据缓冲区中,以供查询时使用。这种数据的存取方式不仅可以减少磁盘的I/O操作,还可以提高系统的相应性能。

如果需要了解数据文件的信息可以通过查询数据字典视图DBA_DATA_FILES和V$DATAFILE。首先通过DESC命令来了解一下数据字典视图DBA_DATA_FILES和V$DATAFILE的结构,数据字典视图DBA_DATA_FILES的结构如下:

SQL> DESCDBA_DATA_FILES;

名称 是否为空? 类型

----------------------------------- --------------------------------

FILE_NAME VARCHAR2(513)

FILE_ID NUMBER

TABLESPACE_NAME VARCHAR2(30)

BYTES NUMBER

BLOCKS NUMBER

STATUS VARCHAR2(9)

RELATIVE_FNO NUMBER

AUTOEXTENSIBLE VARCHAR2(3)

MAXBYTES NUMBER

MAXBLOCKS NUMBER

INCREMENT_BY NUMBER

USER_BYTES NUMBER

USER_BLOCK NUMBER

ONLINE_STATUS VARCHAR2(7)

在上述的结果中,FILE_NAME表示数据文件的名称以及存放的路径;FILE_ID表示数据文件在数据库中的ID号;TABLESPACE_NAME表示数据文件对应的表空间名;BYTES表示的是数据文件的大小;BLOCKS表示数据文

件所占用的数据块;STATUS表示数据文件的状态;AUTOEXTENSIBLE表示数据文件是否可扩展。数据字典

视图V$DATAFILE记录了数据文件的动态信息,其结构如下:

SQL> DESCV$DATAFILE;

名称 是否为空? 类型

----------------------------------- --------------------------------

FILE# NUMBER

CREATION_CHANGE# NUMBER

CREATION_ TI DATE

TS# NUMBER

RFILE# NUMBER

STATUS VARCHAR2(7)

ENABLED VARCHAR2(10)

CHECKPOINT_CHAN NUMBER

CHECKPOINT_TIME DATE

UNRECOVERABLE_CHANGE# NUMBER

UNRECOVERABLE_TIME DATE

LAST_CHANGE# NUMBER

LAST_TIME DATE

OFFLINE_CHANGE# NUMBER

ONLINE_CHANGE# NUMBER

ONLINE_TIME DATE

BYTES NUMBER

BLOCKS NUMBER

CREATE_BYTES NUMBER

BLOCK_SIZE NUMBER

NAME VARCHAR2(513)

PLUGGED_IN NUMBER

BLOCK1_OFFSET NUMBER

AUX_NAME VARCHAR2(513)

FIRST_NONLOGGED_SCN NUMBER

FIRST_NONLOGGED_TIME DATE

FOREIGN_DBID NUMBER

FOREIGN_CREATION_CHANGE# NUMBER

FOREIGN_CREATION_TIME DATE

PLUGGED_READONLY VARCHAR2(3)

PLUGIN_CHANGE# N MBER

PLUGIN_RESETLOGS_CHANGE# NUMBER

PLUGIN_RESETLOGS_TIME DATE

CON_ID NUMBER

在上述的结果中FILE#表示存放数据文件的编号;STATUS表示数据文件的状态;CHECKPOINT_CHANGE#表示数据文件的同步号,随着系统的运行自动修改,以维持数据文件的同步;BYTES表示数据文件的大小;BLOCKS表示数据文件所占用的数据块数;NAME表示数据文件的名称以及存放的路径。

2. 控制文件

控制文件是一个很小的二进制文件,主要包含与关于数据库物理结构的重要信息,存放数据库中的数据文件和日志文件的信息。

控制文件对于数据库的成功启动和正常运行至关重要。在加载数据库时必须先找到数据库的控制文件。如果控制文件正常,实例才能加载并打开数据库。但是如果控制文件中记录了错误的信息,或者实例无法找到一个可用的控制文件,数据库将无法加载,当然也无法打开。

一个Oracle数据库通常包含有多个控制文件,在数据库运行的过程中,Oracle数据库需要不断的更新控制文件,因此控制文件必须在整个数据库打开期间始终保持可用状态。如果某种原因导致控制文件不可用,那么数据库将会崩溃。

控制文件的信息可以通过数据字典视图V$CONTROLFILE来了解,其结构如下:

SQL> DESC V$CONTROLFILE;

名称 是否为空? 类型

----------------------------------- -------------

STATUS VARCHAR2(7)

NAME VARCHAR2(513)

IS_RECOVERY_DEST_FILE VARCHAR2(3)

BLOCK_SIZE NUMBER

FILE_SIZE_BLKS NUMBER

CON_ID NUMBER

在上述的结果中,STATUS表示控制文件的状态;NAME表示控制文件的名称以及路径的信息。例如查询控制文件的名称以及路径信息,如下:

SQL> SELECT NAME FROM V$CONTROLFILE;

NAME

-------------------------------------------------

D:\ORACLE\ORADATA\ORACLE12C\CONTROL01.CTL

D:\ORACLE\ORADATA\ORACLE12C\CONTROL02.CTL

从上述的结果可以看出,Oracle一般会默认创建两个包含相同信息的控制文件。其目的

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle的同义词 下一篇重建控制文件时提示ORA-01189:fil..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: