一、如何创建控制文件(若控制文件丢失或损坏)
1、以sysdba权限登录:
2、得到文件列表
得到联机日志文件列表 :select group#,member from v$logfile order by group#;
得到数据文件列表:select file#,name from v$datafile;
得到控制文件列表:select value from v$parameter where name ='control_files';
3、关闭数据库:SHUTDOWN IMMEDIATE;
4、备份所有的数据文件及联机日志文件
5、编辑初始化参数文件PFILE,加入以下内容:
*.control_files='/export/home/nbodata/nbo/control01.ctl','/wxxrdb/control02.ctl'
6、使用PFILE启动数据库到NOMOUNT状态
STARTUP NOMOUNT PFILE='/oracle/app/oracle/product/10.1.0/db_1/dbs/initnbo.ora';
7、创建控制文件
CREATE CONTROLFILE REUSE
SET DATABASE "NBO" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCE 8
MAXLOGHISTORY 454
LOGFILE
GROUP 1 (
'/export/home/nbodata/nbo/redo12.log',
'/export/home/nbodata/nbo/redo11.log'
) SIZE 20M,
GROUP 2 (
'............',
'............'
) SIZE 10M,
GROUP 3 (
'............',
'............'
) SIZE 10M,
GROUP 4 (
'............',
'............'
) SIZE 4M
DATAFILE
'/export/home/nbodata/nbo/system01.dbf',
'/export/home/nbodata/nbo/undotbs01.dbf',
'/export/home/nbodata/nbo/sysaux01.dbf',
'/export/home/nbodata/nbo/users01.dbf'
CHARACTER SET ZHS16GBK;
8、如果修改了数据库的名字,则要修改PFILE中的参数DB_NAME的值
9、恢复数据库
10、打开数据库
11、检查警报文件
12、立即对数据库进行全备份
二、如何得到创建控制文件的脚本,将控制文件保存至跟踪文件中
1、得到跟踪文件的路径:SHOW PARAMETER user_dump_dest
name: user_dump_dest
type: string
value: /oracle/app/oracle/admin/nbo/udump
2、把控制文件备份到数据库的跟踪文件中
SQL>ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
3、至上述查询的跟踪文件目录/oracle/app/oracle/admin/nbo/udump查看跟踪文件,得到一个新的文件,如:nbo_ora_1011.trc
控制文件的脚本在此文件中。
三、如何镜像控制文件
1、SQL>SHUTDOWN IMMEDIATE;
2、生成镜像文件
$cp /export/home/nbodata/nbo/control01.ctl /wxxrdb/control02.ctl
注:控制文件应放在不同的物理磁盘
3、修改初化参数文件
进入初始化参数文件所在的默认路径:%oracle_home/dbs
修改PFILE文件initnbo.ora的控制文件:
*.control_files='/export/home/nbodata/nbo/control01.ctl','/wxxrdb/control02.ctl'
4、根据PFILE生成SPFILE
CREATE SPFILE='/ORACLE/APP/ORACLE/PRODUCT/10.1.0/DB_1/DBS/SPFILENOB.ORA' FROM PFILE='/ORACLE/APP/ORACLE/PRODUCT/10.1.0/DB_1/DBS/INITNBO.ORA'
5、重新启动数据库
SQL>STARTUP
注:删除、移动控制文件,方式与镜像控制文件类似
四、查看控制文件名称及路径:
SQL>SELECT * FROM V$CONTROLFILE;
SQL>SHOW PARAMETER CONTROL_FILES;