Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1240167
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-10 13:30:33

涂抹ORACLE试阅章节:第16章-体系结构之结构

===========================================================================

  对于很多初接触Oracle的朋友,很容易混淆数据库的概念。由于通常提到数据库(D atabase ),闪现在脑海中的第一印象并不是一个物理的概念,而是有着广泛意义的逻辑概念,如更多的是想到这是的代名词,又或者想到某个具体的存储对象。不过,Oracle对于这些相关概念的定义要严谨得多。

  严格来讲,Oracle数据库包括两个组成部分,数据库(Database)只是其中之一,特指存储数据和相关对象的一系列物理文件;另一部分是实例(Instance),特指一系列操作系统进程和它的内存区。

    提示:

    所谓数据库物理,其实备份的就是数据库的物理文件。只要拥有完整的物理备份,就可以随时将数据库恢复至备份时间点的状态。

  Oracle 在存储数据时并不是简单进行数据堆砌,而是由一整套严谨并且高效的逻辑结构来管理物理数据的存储,因此Oracle数据库的存储结构也可以分成两大类:物理存储结构和逻辑存储结构。物理存储结构对应一系列不同格式、类型、作用的文件,用来存储对象及其物理数据;逻辑存储结构则是Oracle内部存储、管理数据的方式。

16.1 数据库物理存储结构

  数据库由一系列物理文件组成,不同的文件类型在处理数据时承担着不同任务,有发号施令的(俗称领导),有老实听话,让记啥就记啥的(跟班,又称秘书),有任劳任怨,谁想用就谁用的(一位杨姓兄弟,昵称白劳),有尽忠职守埋头苦干的(俗称保镖)。对号入座的话,分别对应下列类型的文件:

  • 控制文件(Control Files);
  • 数据文件(Datafiles);
  • 临时文件(Tempfiles);
  • 重做日志文件(Online Redolog Files & Archived Log Files)。

    提示:

    本章中出现的控制文件、数据文件与本书第二部分“加载数据”中提到的控制文件、数据文件可不是一回事儿哟。第二部分中出现的控制文件和数据文件,是指SQL*L oader 及外部表加载时用到的文件类型,仅只是对应的命令行所使用的文件的称谓。而本章中出现的控制文件和数据文件,是指整个Oracle数据库运行过程中,存储数据库物理结构及实际数据的文件类型。

16.1.1 控制文件(Control Files )

  看到控制两字就该知道,这类事物一般都处于领导阶层,Oracle数据库的控制文件虽然个头不大(最大不超过20000个数据块),但是地位非凡,这倒正应了那句话:浓缩的都是精华。Oracle数据库实例启动后(即启动到NOMOUNT模式),要通过加载控制文件确定数据文件、重做日志文件的路径(进入到MOUNT模式),然后才能打开数据库(Finally,OPEN数据库)。因此,没有了控制文件,想顺利启动Oracle数据库是不可能的。

    提示:

    控制文件的数据块大小与当前数据库的数据块大小有可能并不相同。在版本中,要查看当前Oracle数据库中控制文件的数据块大小,可以通过V$CONTROLFILE视图的BLOCK_SIZE列实现,默认情况下应为16K。

  当然,控制文件中并不是只有数据文件和重做日志文件的路径(如果仅有这些,这个导字早就被别人领了),还包括数据库名称、数据库创建信息、表空间信息、数据文件状态、日志文件信息、备份信息、检查点信息等。该文件不仅在数据库启动过程中需要,在Oracle数据库运行过程中,控制文件也需要发挥重要作用,如记录检查点的相关信息、归档文件路径、备份信息(假如采用RMAN执行备份的话),以及数据库发生结构修改(流行词汇形容叫领导班子调整,类似添加删除表空间、数据文件、日志文件)等操作都需要同步到控制文件。如果在Oracle数据库运行过程中,由于某些原因导致控制文件无法访问,则数据库也无法继续正常工作。

  控制文件是一个二进制文件,不能直接通过文本编辑工具修改,一般这个文件中的内容都是由Oracle自行维护。一个Oracle数据库至少要拥有一个控制文件,鉴于其重要地位(领导嘛),Oracle对其的保护有加,在默认情况下,控制文件就会有三份冗余(就是一模一样的文件存在三份),这三份文件的一致性由Oracle自动维护,当然啦,冗余的数量和冗余文件的位置可以由DBA指定,Oracle建议控制文件至少要有两份冗余,并且存储在不同的磁盘中,以提高该文件的可用性。

  查询当前数据库拥有的控制文件,最常用的是通过下列两种方式进行。

  • 通过初始化参数CONTROL_FILES查询:

    SQL> SHOW PARAMETER CONTROL_FILES;

    NAME                  TYPE        VALUE

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

    control_files         string      F:\ORACLE\ORADATA\JSSBOOK\CONT

                                      ROL01.CTL, F:\ORACLE\ORADATA\J

                                      SSBOOK\CONTROL02.CTL, F:\ORACL

                                      E\ORADATA\JSSBOOK\CONTROL03.CTL
  • 通过动态性能视图V$CONTROLFILE查询:

    SQL>  SELECT NAME FROM V$CONTROLFILE;

    NAME

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

    F:\ORACLE\ORADATA\JSSBOOK\CONTROL01.CTL

    F:\ORACLE\ORADATA\JSSBOOK\CONTROL02.CTL

    F:\ORACLE\ORADATA\JSSBOOK\CONTROL03.CTL

=================================================

阅读(1325) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~