金沙国际娱乐官网

来源:互联网 由 撑起一片天02 贡献 责任编辑:鲁倩  

以下内容为系统自动转化的文字版,可能排版等有问题,仅供您参考:

第3周 Oracle控制文件

杨进 [email protected]

学习目标

在本章中,我们将学习Oracle 数据库控制文 件的有关知识和操作。

控制文件是Oracle数据库3 类重要的物理文件 之一。

控制文件中记载了数据库的物理结构等重要 的数据库信息,是用于维护数据库完整性的 重要文件。

【本章要点】

? 控制文件的内容 ? 控制文件的复用 ? 控制文件的重建 ? 查询控制文件信息

一、Oracle数据库控制文件

控制文件中记载了数据库的物理结构等重要的 数据库信息,如数据文件和日志文件信息。

控制文件是用于维护数据库完整性的重要文件 。

Oracle 正是使用该文件在实例和数据库 之间建立关联的。

当发生实例故障时,控制文件记载的信息可用 于实例的恢复

1.控制文件概述

在数据库的启动过程中,当装载(MOUNT)数据库时 ,Oracle 会按照初始化参数文件中的control_files 参数的 设置查找并打开控制文件;而当打开(OPEN)数据库 时,Oracle 会根据控制文件所记录的数据文件和重做日 志信息,打开数据文件和重做日志文件。

控制文件是一个很小的二进制文件,在启动Oracle 数据库时需要从中读取信息,它的大小一般是在创建数 据库时确定的。

在对Oracle 数据库进行操作过程中,会 不断地将信息写回控制文件,所以在Oracle 数据库打开 的过程中,控制文件必须是可用的。

2.使用相关视图查看控制文件的相关信息 V$CONTROLFILE --列出实例中所有控制文件的名字 及状态信息 V$PARAMETER --列出所有参数的位置及状态信息 V$CONTROLFILE_RECORD_SECTION --列出控制文件 中记录的部分信息 SHOW PARAMETER CONTROL_FILES --列出控制文 件的名字、状态、位置等

select * from v$controlfile

控制文件中记载了数据文件、重做日志名称和位置 、日志序列号、检查点和日志历史信息,以及 RMAN(一种备份和恢复工具)备份信息。

当Oracle 服务器出现实例失败或介质失败时,通过 控制文件所记载的日志和检查点信息,Oracle 可以 确定执行恢复所需要的日志文件。

从Oracle8 版本 开始,Oracle 提供了使用RMAN 执行备份与恢复的 方法,RMAN 可以简化用户所要执行的备份与恢复 操作,并且其备份信息会被存放到控制文件中。

控制文件一旦丢失或损坏,就会导致整 个数据库不可用。

所以保证控制文件的可用 性, 对Oracle 数据库来说是至关重要的。

例如,当使用RMAN 进行备份时,其备 份信息会记录到控制文件中,假定控制文件 出现丢失或损坏,那么因为备份信息丢失可 能会导致其备份文件不能使用。

对于Oracle 数据库,可以采用复用控制文件的方法来达 到保护控制文件的目的。

二、控制文件的内容

在控制文件中要记载数据文件、重做日志、日志历史等 信息。

其中初始化参数文件中的DB_NAME 必须与控 制文件中记载的数据库名称相同。

控制文件分保存的信息分为可变的和不可变 的

1.可变部分

例如RMAN 备份信息。

到了 control_file_record_keep_time 之后,就会被覆盖。

参数control_file_record_keep_time 是一个位于控制文 件中比较重要的参数。

它决定了控制文件里可重复使 用的记录所能保存的最小天数。

当一条新的记录需要 添加到可重用记录的空间时,并且最老的记录在可重 用记录空间中还没有老化,即实际保留的天数未超过 这个参数规定的天数,则控制文件中可重用记录部分 的空间将被自动扩展,此时控制文件尺寸将会变大。

control_file_record_keep_time 定义信息

1) 参数的描述信息 Property Description ----------------------------------------------------------Parameter type Integer Default value 7 (days) --缺省值 Modifiable ALTER SYSTEM --使用ALTER SYSTEM 修 改 Range of values 0 to 365 (days) --其值的范围从0365 Basic No ----------------------------------------------------------

2) 官方定义 CONTROL_FILE_RECORD_KEEP_TIME 指定一个可重用的记 录在控制文件中最少可重复使用的天数。

如果由于需要,一个新的记录被添加到可重复使用的部 分,最旧的记录还未达到指定的值,记录部分扩展。

如 果该参数被设置为0,然后可重复使用的部分永远不会 扩大,记录根据需要被重用。

注意事项:

此参数只适用于在控制文件中的记录,可循环重用(如 归档日志记录和各种备份记录)。

它不适用于记录,如数据文件,表空间和重做记录,不 会被重用,除非表空间中删除相应的对象。

3) 可重用的模块 ARCHIVED LOG BACKUP DATAFILE BACKUP REDO LOG COPY CORRUPTION DELETED OBJECT OFFLINE RANGE

BACKUP CORRUPTION BACKUP PIECE BACKUP SET DATAFILE COPY LOGHISTORY

2.不可变部分(控制文件永久参数)

关于数据库的那些信息,文件位置,大小,日 志位置,数据库名,等等是不会丢失的

控制文件中会为每个数据文件预留180 字节的 空间,该空间将用于记载数据文件的名称、尺 寸、状态以及检查点等信息,假定数据库最多 可以包含1000 个数据文件,那么控制文件就要 为数据文件分配大约180KB 的空间。

在执行CREATE DATABASE 命令建立数据库时,通 过设置永久参数可以设定数据库可以包含的最 大数据文件以及重做日志个数等,这些永久参 数的设置会影响控制文件的尺寸。

这些参数是 :

控制文件大小实验:

/race 备份控制文件 SQL> alter database backup controlfile to trace as '/home/oracle/ctl';

//创建重建控制文件脚本 [[email protected] ~]$ cat ctl | grep -v ^- | grep -v ^$ > c.sql

SQL> startup nomount; SQL> @/home/oracle/c.sql Control file created.

1.复用控制文件

1) 保证控制文件的可用性 保证控制文件的可用性的方法是通过保留控制文件的多个复本 ,多个控制文件副本互为镜像,内容总是保持完全一致。

这样 当一个控制文件发生损坏或丢失,仍然可以使用其它的控制文 件副本启动数据库,而不需要进行数据库恢复。

然后,在适当 时机增加新的控制文件,使控制文件仍然保持有多个镜像。

每 个Oracle 数据库至少应该包含两个或两个以上的控制文件,控制 文件的总数不能超过8 个。

应该合理地放置控制文件,在设计数据库时,尽可能将控制文 件分布到不同的磁盘上,以避免磁盘损坏导致所有控制文件丢 失。

另外,在修改了Oracle 数据库的物理结构后,最好对控制文件进 行一次备份。

2) 复用控制文件的方法

控制文件的复用是如何实现的呢?又怎样才能 增加新的控制文件镜像呢?

2) 复用控制文件的方法

方法很简单,停止数据库后,我们可以首先查 看初始化参数文件,找到参数control_files, 如前图所示,其中描述了目前使用的控制文件 和位置。

为了增加新的控制文件镜像,可以

先用操作系统命令复制一个新的控制文件,然 后修改该参数的设置。

注意:在数据库打开时,控制文件是动态的, 不能在数据库运行过程中复制控制文件,只有 停止数据库后控制文件才是静止和一致的。

否 则增加镜像的过程就会失败。

3) 镜像丢失的维护

我们尝试在关闭数据库的状态下,删除一个控制 文件到回收站,来模拟控制文件的丢失, 然后启动数据库,观察控制文件丢失一个镜像的 现象。

并采取相应的维护措施。

使数据库能 够正常工作。

*控制文件镜像丢失的维护

1 查看当前的控制文件 SQL> SELECT name FROM v$controlfile; NAME ----------------------------------------D:\ORACLE\ORADATA\DB01\CONTROL01.CTL D:\ORACLE\ORADATA\DB01\CONTROL02.CTL D:\ORACLE\ORADATA\DB01\CONTROL03.CTL

*控制文件镜像丢失的维护

2 关闭数据库,删除最后一个控制文件 CONTROL03.CTL 到回收站 SQL> SHUTDOWN 数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

手工删除控制文件 D:\ORACLE\ORADATA\DB01\CONTROL03.CTL

*控制文件镜像丢失的维护

3 重新启动数据库,观察现象 SQL> STARTUP

ORACLE 例程已经启动。

Total System Global Area 64035360 bytes Fixed Size 453152 bytes Variable Size 29360128 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes ORA-00205: ?????????????????????

数据库停止在NOMOUNT 状态,错误ORA-00205 表示控 制文件错误,但这条信息并不明确。

*控制文件镜像丢失的维护

4 查看跟踪记录信息

通过查看跟踪记录信息, 可以进一步确定错误类型。

跟踪文件位于 D:\app\Administrator\diag\rdbms\orcl\orcl\trace,名称 为Alert_db01.log。

该文件是db01 数据库的跟踪警告文 件,文件的最后有如下信息。

*控制文件镜像丢失的维护

5 修改服务器端参数文件 SQL> ALTER SYSTEM SET control_files = 'd:\oracle\oradata\db01\CONTROL01.CTL', 'd:\oracle\oradata\db01\CONTROL02.CTL' SCOPE=SPFILE; 系统已更改。

*控制文件镜像丢失的维护

6 关闭并重新启动数据库,使初始化参数的修改生效

SQL> SHUTDOWN

ORA-01507: ?????? ORACLE 例程已经关闭。

SQL> STARTUP

ORACLE 例程已经启动。

Total System Global Area 64035360 bytes Fixed Size 453152 bytes Variable Size 29360128 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes 数据库装载完毕。

数据库已经打开。

可以看到,控制文件只有两个镜像,最后一个 已经被删除。

至此数据库已经打开并可以 正常工作了

4) 增加新的镜像

以上数据库的控制文件只有两个镜像,可以在适当的时候 增加新的镜像,以确保控制文件的安全。

那么可不可以把 删除到回收站的控制文件取回,然后重新利用呢?答案是 不可以,

因为控制文件在数据库启动阶段已经发生了变化,被删除 的控制文件与正在工作的控制文件的内容已经不同了。

以 下实例重新为控制文件增加一个镜像。

*为控制文件增加镜像

1 在数据库启动状态下,修改服务器端初始化参数文件 SQL> ALTER SYSTEM SET control_files = 'd:\oracle\oradata\db01\CONTROL01.CTL', 'd:\oracle\oradata\db01\CONTROL02.CTL', 'd:\oracle\oradata\db01\CONTROL03.CTL' SCOPE=SPFILE;

*为控制文件增加镜像

2 关闭数据库,以确保复制后的控制文件与源控制文件内 容完全相同 SQL> SHUTDOWN 数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

*为控制文件增加镜像

3 复制控制文件 可以使用当前的两个控制文件任意一个,复制为新的控制 文件。

在本实例中,在D:\ORACLE\ORADATA\DB01\目录下,将控 制文件CONTROL01.CTL 复制为CONTROL03.CTL。

*为控制文件增加镜像

4 重新启动数据库 SQL> STARTUP ORACLE 例程已经启动。

Total System Global Area 64035360 bytes Fixed Size 453152 bytes Variable Size 29360128 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes 数据库装载完毕。

数据库已经打开。

*为控制文件增加镜像

5 查看结果 SQL> select name from v$controlfile; NAME --------------------------------------------D:\ORACLE\ORADATA\DB01\CONTROL01.CTL D:\ORACLE\ORADATA\DB01\CONTROL02.CTL D:\ORACLE\ORADATA\DB01\CONTROL03.CTL 在实际的生产数据库中,为了避免磁盘介质故障,造成控 制文件同时丢失,建议将增加的新镜像放在一个新的磁盘 驱动器上,

四、备份与重建控制文件

1.控制文件重建的意义 当控制文件全部丢失或损坏,但数据文件和重做日志没有 丢失和损坏。

如果有一份在用数据文件、重做日志以及控 制文件清单,还是可以尝试使用CREATE CONTROLFILE 命令 来重建控制文件。

另外,如果要改变数据库名称或永久参数(MAX_DATAFILE 等)的话, 也只能重新建立控制文件。

但是,必须要注意,建立控制文件是一项非常危险的工作 ,如果建立控制文件不成功,可能会潜在地损坏数据文件 和重做日志。

所以在建立控制文件之前,必须首先备份所 有数据文件和重做日志,避免损坏用户的数据库。

另外,

2.控制文件的备份

控制文件本身也有必要在适当的时候进行备份,特别是数据库的 结构进行了很大的修改。

那么,可不可以将控制文件复制到另外 一个位置,就算是备份了呢? 这样做没有任何意义,因为控制文件里面的信息是不断更新的, 如果把这样的备份用于启动数据库就会失败。

Oracle 9i 提供了一个系统命令,可以将控制文件以脚本的形式备 份到跟踪(或二进制)文件中,可以将此备份的脚本通过修改用 于控制文件的重建。

这条命令如下: ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

3.重建控制文件

下面的实例,通过重建控制文件,来修 改控制文件中的永久参数,对于其它重 建控制文件的情况,可模仿进行。

由于 对控制文件的重建存在一定风险

【实例2】修改控制文件中的永久参数 MAXDATAFILES 的值

步骤1:将控制文件备份到跟踪文件,以获得控制文件的重建脚本 。

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE; 数据库已更改。

步骤2:关闭并启动数据库到NOMOUNT 状态

在建立控制文件之前,必须首先启动实例。

另外,当建 立控制文件时,不需要指定控制文件名称。

与建立数据 库类似,Oracle 会自动按照初始化参数control_files 的设 置建立控制文件,如果用户要改变控制文件的名称和位 置,那么必须在启动实例之前先正确地设置 control_files 参数,启动实例的命令如下:

【实例2】修改控制文件中的永久参数 MAXDATAFILES 的值

SQL> STARTUP NOMOUNT Total System Global Area 34675092 bytes Fixed Size 453012 bytes Variable Size 29360128 bytes Database Buffers 4194304 bytes Redo Buffers 667648 bytes 步骤3:建立新的控制文件

在启动了实例之后,就可以建立控制文件了。

注意,建立控制文件 只能以SYSDBA身份登录,而不能以SYSOPER 登录。

我们从系统的最 后一个跟踪文件中取出刚刚备份的控制文件创建脚本,并修改 MAXDATAFILES 为80(原值为100),然后执行:

SQL> CREATE CONTROLFILE REUSE DATABASE "DB01" NORESETLOGS NOARCHIVELOG -- SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES 50 MAXLOGMEMBERS 5 MAXDATAFILES 80 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP 1 'D:\ORACLE\ORADATA\DB01\REDO01.LOG' SIZE 100M, GROUP 2 'D:\ORACLE\ORADATA\DB01\REDO02.LOG' SIZE 100M, GROUP 3 'D:\ORACLE\ORADATA\DB01\REDO03.LOG' SIZE 100M -- STANDBY LOGFILE

DATAFILE 'D:\ORACLE\ORADATA\DB01\SYSTEM01.DBF', 'D:\ORACLE\ORADATA\DB01\UNDOTBS01.DBF', 'D:\ORACLE\ORADATA\DB01\CWMLITE01.DBF', 'D:\ORACLE\ORADATA\DB01\DRSYS01.DBF', 'D:\ORACLE\ORADATA\DB01\EXAMPLE01.DBF', 'D:\ORACLE\ORADATA\DB01\INDX01.DBF', 'D:\ORACLE\ORADATA\DB01\ODM01.DBF', 'D:\ORACLE\ORADATA\DB01\TOOLS01.DBF', 'D:\ORACLE\ORADATA\DB01\USERS01.DBF', 'D:\ORACLE\ORADATA\DB01\XDB01.DBF' CHARACTER SET ZHS16utf-8;

其中的参数说明如下: ? REUSE:覆盖原有控制文件。

? DATABASE:用于指定数据库名称,该名称必须要与初始化参数 db_name 保持一致。

? RESETLOGS:用于指定复位重做日志,即清空重做日志所包含的 事务修改。

? LOGFILE:用于指定重做日志文件的名称和尺寸,必须与数据字典 所记载的重做日志信息匹配。

? DATAFILE:用于指定数据文件的名称和尺寸,必须与数据字典所 记载的数据文件信息匹配。

? CHARACTERSET:用于指定数据库字符集。

步骤4:打开数据库 在建立了控制文件之后,系统会打开控制文件。

我们可以继续使用 控制文件将数据库打开。

注意,在建立控制文件时如果指定了 RESETLOGS 选项,打开数据库时必须要带有该选项,本实例中,我 们可以直接打开数据库,具体命令如下:

SQL> ALTER DATABASE OPEN; ******

数据库已更改。

步骤5:增加临时文件

需要注意,如果临时表空间包含了“临时文件”,那么为了可以顺 利地执行排序操作,还必须重新生成该临时文件。

具体命令如下: SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\app\Administrator\oradata\orcl\TEMP01.DBF' REUSE; 表空间已更改。

步骤6:查询对控制文件的修改 SQL> SELECT record_size, records_total, records_used FROM v$controlfile_record_section WHERE type='DATAFILE'; RECORD_SIZE RECORDS_TOTAL RECORDS_USED ----------- ------------- -----------180 80 10 其中RECORDS_TOTAL 的值为80,是修改后的新 值

五、小结

控制文件是用于维护数据库完整性的重要文件,控制 文件中记录了日志文件和数据文件以及检查点等信息 ,控制文件的位置由初始化参数文件指明,控制文件 在装载数据库阶段打开。

为了保证控制文件的可用性,通常需要通过移动、增 加或删除镜像文件的方法来对其进 行维护。

六、练习

1.当复用了控制文件后,其中一个控制文件损坏,理 想的解决方法是( ) A.删除损坏的控制文件即可 B.用好的控制文件,覆盖坏的控制文件 C.删除参数文件 D.必须进行数据库恢复

六、练习

2.如何修改数据库所允许的重做日志个数( ) A.修改初始化参数 B.重建参数文件 C.修改控制文件 D.重建控制文件

3.增加控制文件的镜像文件,说法正确的是( ) A.不能位于不同的物理磁盘驱动器 B.必须在实例启动时进行 C.需要修改初始化参数文件 D.需要重建控制文件

六、练习

4.控制文件中不包含( ) A.数据文件信息 B.重做日志文件信息 C.实例信息 D.数据库有关信息

5.以下视图信息,不是来自控制文件的是( ) A.V$DATAFILE B.V$TABLESPACE C.V$DATABASE D.V$INSTANCE

六、练习

1.当复用了控制文件后,其中一个控制文件损坏,理 想的解决方法是( ) A.删除损坏的控制文件即可 B.用好的控制文件,覆盖坏的控制文件 C.删除参数文件 D.必须进行数据库恢复

六、练习

1.当复用了控制文件后,其中一个控制文件损坏,理 想的解决方法是( ) A.删除损坏的控制文件即可 B.用好的控制文件,覆盖坏的控制文件 C.删除参数文件 D.必须进行数据库恢复

六、练习

1.当复用了控制文件后,其中一个控制文件损坏,理 想的解决方法是( ) A.删除损坏的控制文件即可 B.用好的控制文件,覆盖坏的控制文件 C.删除参数文件 D.必须进行数据库恢复

六、练习

1.当复用了控制文件后,其中一个控制文件损坏,理 想的解决方法是( ) A.删除损坏的控制文件即可 B.用好的控制文件,覆盖坏的控制文件 C.删除参数文件 D.必须进行数据库恢复


  • 与《oracle控制文件剖析》相关:
  • oracle控制文件
  • Oracle-控制文件
  • Oracle 控制文件介绍
  • Oracle 建立控制文件
  • Oracle重建控制文件
  • oracle控制文件重建
  • Oracle 重建控制文件
  • Oracle 控制文件 说明
  • oracle管理控制文件
  • 第11章 oracle控制文件与日志文件的管理
  • 本站网站首页首页教育资格全部考试考试首页首页考试首页职业资格考试最近更新儿童教育综合综合文库22文库2建筑专业资料考试首页范文大全公务员考试首页英语首页首页教案模拟考考试pclist学路首页日记语文古诗赏析教育教育资讯1金沙国际娱乐平台资讯教育头条幼教育儿知识库教育职场育儿留学教育金沙国际娱乐平台公务员考研考试教育资讯1问答教育索引资讯综合学习网站地图学习考试学习方法首页14托福知道备考心经冲刺宝典机经真题名师点睛托福课程雅思GREGMATSAT留学首页首页作文
    免责声明 - 关于我们 - 联系我们 - 联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.abcanuncios.com All Rights Reserved