现在的位置: 首页 > 综合 > 正文

oracle学习笔记(3)——物理存储结构——控制文件

2014年02月24日 ⁄ 综合 ⁄ 共 3304字 ⁄ 字号 评论关闭

1、描述了整个数据库的物理结构信息,每个数据库至少有一个控制文件:

2、控制文件的性质

控制文件是一个很小的二进制文件。

控制文件描述了整个数据库的结构。

在加载数据库时,实例必须首先通过初始化参数文件找到数据库的控制文件。

在数据库运行期间,控制文件始终在不断更新,以便记录数据文件和重做日志文件的变化

每个数据库至少拥有一个控制文件。一个数据库也可以同时拥有多个控制文件。

分配在不同的物理硬盘中,以免数据库或硬盘损坏时,能够利用备份的控制文件启动数据库实例,可以提高数据库的可靠性。

3、控制文件的内容

数据库名称和标识;

数据库创建的时间;

表空间名称;

数据文件和重做日志文件的名称和位置;

当前重做日志文件序列号;

数据库检查点的信息;

回退段的开始和结束;

重做日志的归档信息;

备份信息;

数据库恢复所需要的同步信息。

4、控制文件中的最大化参数包括:

MAXLOGFILES:最大重做日志文件组数量;

MAXLOGMEMBERS:重做日志文件组中最大成员数量;

MAXLOGHISTORY:最大历史重做日志文件数量;

MAXDATAFILES:最大数据文件数量;

MAXINSTANCES:可同时访问的数据库最大实例个数。

5、  控制文件管理策略

Oracle建议最少有两个控制文件,通过多路镜像技术,将多个控制文件分散到不同的磁盘中。在数据库运行过程中,始终读取CONTROL_FILES参数指定的第一个控制文件,并同时写CONTROL_FILES参数指定的所有控制文件。如果其中一个控制文件不可用,则必须关闭数据库并进行恢复。

每次对数据库结构进行修改后(添加、修改、删除数据文件、重做日志文件),应该及时备份控制文件。

6、控制文件的管理

(1)创建控制文件

1)创建控制文件的情形:控制文件全部丢失或损坏; 需要修改数据库名称; 在Oracle 10.2.0之前的版本中,需要修改某个最大化参数。

         2)创建控制文件的语句:

CREATE CONTROLFILE [REUSE]

[SET] DATABASE database

[LOGFILE logfile_clause]

RESETLOGS|NORESETLOGS

[DATAFILE file_specification]

[MAXLOGFILES]

[MAXLOGMEMBERS]

[MAXLOGHISTORY]

[MAXDATAFILES]

[MAXINSTANCES]

[ARCHIVELOG|NOARCHIVELOG]

[FORCE LOGGING]

[CHARACTER SET character_set]

1)  创建控制文件的基本步骤

a)        制作数据库中所有的数据文件和重做日志文件列表

SQL>SELECT MEMBER FROM V$LOGFILE;//找到所有的日志文件

SQL>SELECT NAME FROM V$DATAFILE;//找到所有的数据文件

SQL>SELECT VALUE FROM V$PARAMETER WHERE NAME = 'CONTROL_FILES';

//找到所有的控制文件

b)        如果数据库仍然处于运行状态,则关闭数据库:

SQL>SHUTDOWN

c)        在操作系统级别备份所有的数据文件和联机重做日志文件

d)        启动实例到NOMOUNT状态:

SQL>STARTUPNOMOUNT

e)        利用前面得到的文件列表,执行CREATECONTROLFILE创建一个新控制文件。

f)         在操作系统级别对新建的控制文件进行备份

g)        如果数据库重命名,则编辑DB_NAME参数来指定新的数据库名称

h)        如果数据库需要恢复,则进行恢复数据库操作:

如果创建控制文件时指定了NORESETLOGS,可以完全恢复数据库:

SQL>RECOVER DATABASE ;

如果创建控制文件时指定了RESETLOGS,则必须在恢复时指定USING BACKUP CONTROLFILE。

SQL>RECOVER DATABASE USING BACKUP CONTROLFILE;

i)          打开数据库

如果数据库不需要恢复或已经对数据库进行了完全恢复,则可以正常打开数据库:

SQL>ALTER DATABASE OPEN;

如果在创建控制文件时使用了RESETLOGS参数,则必须指定以RESETLOGS方式打开数据库。

SQL>ALTER DATABASE OPEN RESETLOGS;

 

(2)实现多路镜像控制文件

为保证数据文件的可用性,可创建多个镜像控制文件。可以创建数据库时直接通过编辑初始化参数创建多路镜像控制文件。

若是在创建数据库后再创建多路镜像控制文件步骤如下:

a)      编辑初始化参数CONTROL_FILES

ALTER SYSTEM SET CONTROL_FILES=…,…SCOPE=SPFILE;

b)      关闭数据库

SHUTDOWN IMMEDIATE;

c)      拷贝一个原有的控制文件到新的位置,并重新命名

d)      重新启动数据库

STARTUP

         举例:

a)      编辑初始化参数CONTROL_FILES。

SQL>ALTER SYSTEM SET CONTROL_FILES=                                 

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL',

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL',

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL',

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\CONTROL04.CTL'

SCOPE=SPFILE;

注意:前3个控制文件是原有的控制文件,最后一个控制文件是将要添加的。

b)      关闭数据库

SQL>SHUTDOWN IMMEDIATE;

c)      拷贝一个原有的控制文件到新的位置,并重新命名。

拷贝D:\ORACLE\ORADATA\CONTROL01.CTL到D:\ORACLE\ORADATA目录下,并重命名为CONTROL04.CTL。

d)      重新启动数据库

SQL>STARTUP

(3)备份控制文件

为了避免由于控制文件的损坏或丢失而导致数据库系统崩溃,要经常对控制文件进行备份。特别是对数据库物理存储结构修改之后。

1)将控制文件备份为二进制文件

ALTER DATABASE BACKUP  CONTROLFILE TO …

如:将控制文件备份为二进制文件。

SQL>ALTERDATABASE BACKUP CONTROLFILE TO 'D:\ORACLE\CONTROL.BKP';

2)将控制文件备份为文本文件

ALTER DATABASE BACKUP CONTROLFILE TO TRACE

此时将控制文件备份到<ORACLE_BASE>\admin\<SID>\bdump目录下的跟踪文件中

如:将控制文件备份为文本文件。

SQL>ALTERDATABASE BACKUP CONTROLFILE TO TRACE;

(4)删除控制文件

        某个控制文件位置不合适或损坏时可删除。步骤如下:

a)       编辑CONTROL_FILES初始化参数,使其不包含要删除的控制文件;

ALTER SYSTEMSET CONTROL_FILES=…,…SCOPE=SPFILE;

b)    关闭数据库;

c)    在操作系统中删除控制文件;

d)    重新启动数据库。

(5)查询控制文件的信息

       控制文件信息可通过查询与控制文件相关的数据字典视图:

V$DATABASE:从控制文件中获取的数据库信息;

V$CONTROLFILE:包含所有控制文件名称与状态信息;

V$CONTROLFILE_RECORD_SECTION:包含控制文件中各记录文档段信息;

V$PARAMETER:可以获取初始化参数CONTROL_FILES的值。

抱歉!评论已关闭.