1.删除redo log
rm -f redo*
2.验证
alter database checkpoint;
alter system switch logfile;
3.关闭数据库,启动到mount状态,生成控制文件
SQL> alter database backup controlfile to trace;
查看id号码
ps -ef
oracle 7569 7505 2 20:49 ? 00:00:01 oracledemo1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
找到admin下的udump中文件demo1_ora_7569.trc
4.生成控制文件的脚本
vi ctl.sql
拷贝demo1_ora_7569.trc中的Set #2, RESETLOG case的内容到ctl.sql中
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DEMO1" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/demo1/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/demo1/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/demo1/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/demo1/system01.dbf',
'/u01/app/oracle/oradata/demo1/undotbs01.dbf',
'/u01/app/oracle/oradata/demo1/sysaux01.dbf',
'/u01/app/oracle/oradata/demo1/users01.dbf'
CHARACTER SET WE8ISO8859P1
;
5.执行ctl.sql
SQL> @ctlsql.sql
6.生成redo log及打开数据库
SQL> alter database open resetlogs;
7.要点:
数据关闭时,一定要用shutdown immediate,为了保持数据文件里的scn号码
同生成的控制文件里的scn号码一致。