ORACLE控制文件的管理
1. 控制文件: 一个记录数据库物理结构的二进制文件。
2. 控制文件主要包含:
数据库名(DB_NAME)
数据文件名,与位置, REDOLOG文件名与位置
数据库创建时间
当前日志SCN
CHECKPOINT号
3. 控制文件在打开状态下能够写入。如果不能写入控制文件,则数据库不能被挂载和不能恢复。
4. 控制文件会在创建数据库时同时创建。 ORACLE建议COPY两份或者多份,在不同的磁盘上。 以防丢失。
5. 可以在参数文件中设置CONTROL_FILES的位置。如果没有设置:
如果没有启用OMF, 数据库创建的控制文件将使用系统指定的名字命名。
如果启用OMF, 在参数文件中开启这个特性,由OMF来定义控制文件名字和位置。
如果使用ASM,由初始化参数DB_CREATE_FILE_DEST和DB_RECOVERY_FILE_DEST参数设定。
6.在以下情况时需要备份控制文件:
创建,删除,或重命名数据文件时。
创建,删除表空间,或更改表空间为READ/WRITE 状态。
创建,删除REDO LOG或者日志组。
7. creating additional copies, renaming, and relocating controlfiles
shutdown the database.
使用操作系统命令复制已存在的控制文件到新的位置。
修改CONTROLE_FILES 参数,增加新控制文件名,或者改变已存大的控制文件名。
重新启动数据库。
8. 创建控制文件
(1)查询数据文件和REDO文件。
[sql]
select member from v$logfile;
select name from v$datafile;
(2) 关闭数据库。
(3) 备份所有数据件各REDO LOGFILES。
(4) 启动数据库到NOMOUNT状态。
(5) CREATE NEW CONTROLFILE.
[sql]
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;
(6) 打开数据库。
[sql]
alter database open resetlogs;
9. 当查询数据文件为MISSINGnnnn时, 此数据文件为只读或者以OFFLINE关闭掉了, 不能以重命名的方式来解决问题, 而应使用介技恢复, 最后以RESETLOGS方式打开数据库。
10. 控制文件备份方法。
[sql]
(1) alter database backup controlfile to '/home/oracle/control.bkp';
(2) alter database backup controlfile to trace;
此文件可以以普通文本打开。
11. 利用COPY方式还原控制文件, 当单个控制文件损坏时可以利用以下方法解决。
[sql]
cp control01.tl control02.tl;
startup;
12. 移动控制文件。
[sql]
cp olde_location new_loction;
修改初始化参数: CONTROL_FILES
启动数据库。
13. 删除控制文件。
关闭数据库。
修改参数文件,去掉所要删除的控制文件。
启动数据库。
14. 数据库相关视图。
v$database 显示数据库信息。
v$controlfile 可查询控制文件名字。
v$controlfile_reord_section 可查询控制文件所记录信息。
v$parameter 可显示控制文件位置从参数文件里(CONTROL_FILES)参数