控制文件相关
一、控制文件(.CTL)管理
1. 控制文件主要包含了:数据库名称SID标识,该数据库下DBF文件和日志文件的所在路径,数据库创建时间,表空间信息,重做日志文件序列号,归档日志信息,回滚段的起始和结束,备份数据文件信息。一旦损坏,数据库将无法启动。
2. 多路复用:Oracle本身会为每个数据库配备两个完全相同的的CTL文件、以降低风险。但这两个文件通常都被放在同一个磁盘上,因此有必要为其在其他磁盘路径下再配置若干个CTL文件,方法如下:
*注:为数据库配置好CTL文件后,Oracle自己回去维护他们。
(1)查看当前数据库使用的CTL文件有哪些:
show parameter control_files;
(2)可以看到目前该数据库只用到两个CTL文件,现在再为其配一个CTL文件:
alter system set control_files=
'C:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL',
'C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL',
'C:\APP\ADMINISTRATOR\CONTROL03Add.CTL'
scope=spfile;
*注:前两个已存在的文件也要加上。因为虚拟机里只有一个盘,所以第三个ctl我只能也放到C盘了,实际运用中应该将其配到其他盘符下。
(3)关闭数据库:shutdown immediate;
复制第一个控制文件到新增目录下并重命名为CONTROL03Add.CTL
(4)启动数据库:startup;
再输一遍show parameter control_files; 以确定控制文件复用成功;
3. 创建控制文件:如果所有的控制文件都损坏了,则可以手动为当前数据库新增一个控制文件、看是否能让数据库启动;此外,DBA如果想改变数据库某个永久性参数,则必须重新创建控制文件。
(1)查看DBF文件、重做日志文件、控制文件的位置:
select name from v$datafile;
select member from v$logfile;
show parameter control_files;
关闭数据库之后将上述文件统统备份,以防创建新的CTL文件时损坏这些数据;
(2)启动数据库实例:startup nomount;
(3)创建新的控制文件:
create controlfile
reuse database "orcl"
logfile
group 1 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG',
group 2 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG',
group 3 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG'
datafile
'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF'
maxlogfiles 50
maxlogmembers 3
maxinstances 6
maxdatafiles 200
noresetlogs
noarchivelog;
*注:group 1,2,3...要和后面的重做日志编号对应,也就是说不能写成:
group 1 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG',
group 2 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG',
group 3 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG'
否则会报ORA-01224。
参数说明:
maxlogfiles 50 //最大重做日志文件数,永久参数
orcl //替换成当前数据库对应的实例名
maxlogmembers 3 //最大重做日志组成员数,永久参数
maxinstances 6 //最大实