控制文件包含的信息:
1、数据库的名字
2、联机重做日志文件和数据文件的名字和位置
3、数据库创建的时间戳
4、当前日志的序列号
5、检查点信息
6、备份信息
TIP:数据库启动到mount状态需要控制文件,一旦控制文件丢失,数据库的恢复将会十分困难,所以需要多重备份控制文件
control_files
参数指定控制文件的名字
TIP:数据库启动需要所有的控制文件可用,当某个控制文件不可用,数据库将不能启动
控制文件的大小主要由以下参数值决定:
MAXDATAFILES
MAXLOGFILES
MAXLOGMEMBERS
MAXLOGHISTORY
MAXINSTANCES
控制文件在建库时创建【create
database】
例如:
CONTROL_FILES =
(/u01/oracle/prod/control01.ctl,
/u02/oracle/prod/control02.ctl,
/u03/oracle/prod/control03.ctl)
增加或者重命名控制文件
1、shutdown
the database
2、复制一个存在的控制文件到一个新的位置,使用操作系统的指令指令
3、编辑参数文件,将其中的control_files参数后添加新增加的控制文件的绝对路径【新的控制文件可以重新命名,只要心命名的控制文件名称与参数文件中指定的名称相符合就可以】
4、startup
database
创建控制文件步骤:
1、列出数据库的所有的datafiles和redo
log files
TIP:如果新建的控制文件么有包含之前数据库的所有日志文件和数据文件的位置,将不能恢复数据库
2、如果数据库没自动关闭,先关闭数据库,使用shutdown
immediate or shutdown abort
3、备份所有的数据文件和重做日志文件
4、将实例开启到nomount状态
5、创建一个新的控制文件,如:
CREATE
CONTROLFILE
SET DATABASE
prod
LOGFILE GROUP 1
(‘/u01/oracle/prod/redo01_01.log‘,
‘/u01/oracle/prod/redo01_02.log‘),
GROUP 2
(‘/u01/oracle/prod/redo02_01.log‘,
‘/u01/oracle/prod/redo02_02.log‘),
GROUP 3
(‘/u01/oracle/prod/redo03_01.log‘,
‘/u01/oracle/prod/redo03_02.log‘)
RESETLOGS
DATAFILE
‘/u01/oracle/prod/system01.dbf‘ SIZE 3M,
‘/u01/oracle/prod/rbs01.dbs‘ SIZE
5M,
‘/u01/oracle/prod/users01.dbs‘ SIZE
5M,
‘/u01/oracle/prod/temp01.dbs‘ SIZE
5M
MAXLOGFILES
50
MAXLOGMEMBERS
3
MAXLOGHISTORY
400
MAXDATAFILES
200
MAXINSTANCES
6
ARCHIVELOG;
TIP:
If the database had forced logging
enabled before creating the new control file, and you want it to continue
to be enabled, then you must specify
the FORCE
LOGGING clause in
the CREATE
CONTROLFILE statement.【如果数据库在新建控制文件之前是处于强制记日志模式,当创建控制文件后仍然想强制记日志,需要在创建时加入force
logging 子句】
TIP:如果重新命名的数据库的名字,必须加resetlogs子句。或者联机重做日志文件丢失了,也需要加resetlogs子句。
|
|
6、Store
a backup of the new control file on an offline storage
device. |
|
7、编辑control_files参数文件,指定新的控制文件的位置,如果数据库的名字修改了,也需要修改参数文件中指定的DB_NAME参数
8、recovery数据库,如果使用的noresetlogs,将不需要使用recovery恢复数据库。
如果 使用了resetlogs子句,将必须指定USING BACKUP CONTROL FILE,
9、打开数据库
1、如果没自信恢复,或者恢复完成,可以用正常方式打开数据库
ALTER DATABASE OPEN;
2、如果在创建控制文件时指定了resetlogs子句,需要用下面的方式打开数据库
ALTER DATABASE OPEN RESETLOGS;
Troubleshooting
After Creating Control Files
检查时候丢失了数据文件,如果控制文件中没有包含某个数据文件,需要手动rename数据文件到,然后再将数据文件置为活跃状态。
如果数据文件已经丢失,必须要DROP包含这个数据文件的表空间。
如果在创建控制文件时报错,大部分原因是由于包含的控制文件或者重做日志文件不全或者包含的文件不对造成的。
备份控制文件的两种方法:
1、ALTER
DATABASE BACKUP CONTROLFILE TO ‘/home/oracle/backup/control.bkp‘;
2、ALTER
DATABASE BACKUP CONTROLFILE TO TRACE;【SQL语句创建控制文件到trace】
控制文件数据字典视图:
View
|
Description
|
V$DATABASE
|
Displays
database information from the control file |
V$CONTROLFILE
|
Lists
the names of control files |
V$CONTROLFILE_RECORD_SECTION
|
Displays
information about control file record sections |
V$PARAMETER
|
Displays
the names of control files as specified in
the CONTROL_FILES initialization
parameter |