博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Oracle 控制文件

Posted on 2012-12-06 13:32  奥客  阅读(194)  评论(0编辑  收藏  举报

Oracle 控制文件呢,是数据库中最小的文件,是一个二进制文件,其中包括了数据库的结构信息,

同时也包括了数据文件和日志文件的一些信息,控制文件虽小,但可以说是 Oracle 中最重要的文件,

只有 Oracle 进程才能够更新控制文件中的内容,

控制文件中呢主要包括数据库名称,位置,联机或者脱机状态,Redo Log File 的位置和名称,

表空间名称, Archive Log File 信息,CheckPoint 信息,Undo 信息,RMAN 信息等等,

从上面对控制文件中包含的内容也可以看出控制文件在整个 Oracle 中的重要性。

 

Oracle添加控制文件 

 

 

一、Oracle 11g新创建的数据库缺省只有一个控制文件,如下所示:

D:\>sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 12月 2 15:45:53 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

SQL> conn / as sysdba
已连接。
SQL> select * from v$controlfile;

STATUS
-------
NAME
--------------------------------------------------------------------------------

IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------

D:\ORACLE\ORADATA\EYGLE\CONTROLFILE\O1_MF_5JQ2364D_.CTL
NO       16384            608


D:\ORACLE\FLASH_RECOVERY_AREA\EYGLE\CONTROLFILE\O1_MF_5JQ236WS_.CTL
YES      16384            608

二、增加步骤:

1、SQL> create pfile='d:\init.ora' from spfile;

文件已创建。


修改d:\init.ora文件中下面一行的内容,将路径更改为要储存的目录和文件名:
*.control_files='D:\ORACLE\CONTROL01.CTL','D:\ORACLE\CONTROL02.CTL''D:\ORACLE\CONTROL03.CTL'


2、SQL>shutdown immediate;

数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

3、将原控制文件拷贝到'D:\ORACLE\CONTROL01.CTL'、'D:\ORACLE\CONTROL02.CTL'、'D:\ORACLE\CONTROL03.CTL'

4、SQL> startup pfile='d:\init.ora'
ORACLE 例程已经启动。

Total System Global Area 422670336 bytes
Fixed Size                  1333620 bytes
Variable Size             297797260 bytes
Database Buffers          117440512 bytes
Redo Buffers                6098944 bytes
数据库装载完毕。
数据库已经打开。

5、SQL> create spfile from pfile='d:\init.ora';

文件已创建。

6、SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

7、SQL> startup force
ORACLE 例程已经启动。

Total System Global Area 422670336 bytes
Fixed Size                  1333620 bytes
Variable Size             297797260 bytes
Database Buffers          117440512 bytes
Redo Buffers                6098944 bytes
数据库装载完毕。
数据库已经打开。

三、验证结果

SQL> select * from v$controlfile;

STATUS
-------
NAME
--------------------------------------------------------------------------------

IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------

D:\ORACLE\CONTROL01.CTL
NO       16384            608


D:\ORACLE\ORADATA\EYGLE\CONTROLFILE\CONTROL02.CTL
NO       16384            608

STATUS
-------
NAME
--------------------------------------------------------------------------------

IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------


D:\ORACLE\ORADATA\EYGLE\CONTROLFILE\CONTROL03.CTL
NO       16384            608