以下内容摘自oracle 权威指南
控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新,比如,当在数据库中添加或重命名数据文件时。控制文件被不断更新,并且在任何时候都要保证控制文件时可用的。只有oracle进程才能更新控制文件的内容,所以任何时候,都不要试图编辑控制文件。
==================================================
查询控制文件信息,使用 v$controfile试图
select * from v$controfile
还可以使用 v$parameter 视图中查找。
select name,value from v$parameter where name='control_files';
===================================================
创建控制文件
准备工作
(1)控制文件必须包括数据文件和日志文件的路径和文件名,所以必须先查询除数据文件(查dab_data_files数据字典)和日志文件(查 v$logfile数据字典)的详细信息。
select member from v$logfile;
select name from v$datafile;
select value from v$parameter where name='control_files';
(2)关闭数据库
connect as sysdba
shutdown immediate;
(3)备份所有数据文件和重做日志文件
(4)用nomount选项启动数据库实例(以mount(安装)启动数据库时,oracle需要打开控制文件,但是不打开数据文件和日志文件)
start nomount;
(5)用 create controlfile 建立控制文件
只有得到数据文件和日志文件的路径和文件名后,才能用下面的命令来创建控制文件。
create controlfile
reuse database "demo" noresetlogs noarchivelog
maxlogfiles 32
maxlogmembers 2
maxdatafiles 32
maxinstance 1
maxloghistory 449
logfile
group 1 '/path/oracle/dbs/t_log1.f' size 500k,
group 2 '/path/oracle/dbs/t_log2.f' size 500k;
#standby logfile
datafile
'/path/oracle/dbs/t_db1.f',
'/path/oracle/dbs/dbu19i.dbf',
.....
character set we8dec
=================================
demo 表示数据库实例的名字
norestlogs 表示非同步
maxlogfiles 32 表示最大日志文件个数32
maxlogmember 2 表示日志文件组的成员数 2个
maxdatafiles 32 表示最大数据文件个数32个
maxinstance 1 表示最大实例数1个
maxloghistory 449 表示最大历史日志文件个数 449个。
(6) 以脱机方式将新的控制文件复制到设备中。
(7)修改服务参数文件路径spfile
控制文件创建完毕后,要设置control_files参数使新建的控制文件有效,例如:
alter system set control_files=
'c:\oracle\product\10.2.0\oradata\db11g\control01.ctl',
'c:\oracle\product\10.2.0\oradata\db11g\control02.ctl',
'c:\oracle\product\10.2.0\oradata\db11g\control03.ctl',
scope=spfile;
(8)如果丢失联机或归档日志及数据文件,则恢复数据库,否则,转到第9步