之前做了多路复用控制文件,出现了错误:
ORA-00214: control file '/opt/ora10/oradata/ora1/control01.ctl' version 596
inconsistent with file '/opt/ora10/oradata/ora1/control02.ctl' version 576
这里说的控制文件版本不同,估计是文件不一致,更改控制文件将导致数据库一致性无法保障。
因为发生错误,数据库无法启动,所以先把SPFILE改回去
SQL>alter system set control_files='/opt/ora10/oradata/ora1/' scope=spfile;
重新启动数据库 发现,居然还可以用control01.ctl启动
最后只能重做控制文件了
重做控制文件需要注意几点,首先要查看数据库是否处于归档模式,因为要用到的脚本是不同的。
查看数据库是否处于归档模式
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 6
Current log sequence 8
非归档模式
用trace 生成脚本
SQL>alter database backup controlfile to trace;
找到用 @gettrcname 脚本找出生成的控制文件脚本, @gettrcname 脚本网上有几个版本,搜索下就有了
SQL> @ /opt/ora10/bin/gettrcname
TRACE_FILE
--------------------------------------------------------------------------------
/opt/ora10/admin/ora1/udump/ora1_ora_5926.trc
打开 ora1_ora_5926.trc 脚本文件,里面有两个case ,如果用非归档就用 #1. NORESETLOGS case 下面的脚本
如果是归档模式就用#2,这里我是用非归档模式
SQL>STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA1" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/opt/ora10/oradata/ora1/redo01.log' SIZE 50M,
GROUP 2 '/opt/ora10/oradata/ora1/redo02.log' SIZE 50M,
GROUP 3 '/opt/ora10/oradata/ora1/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/opt/ora10/oradata/ora1/system01.dbf',
'/opt/ora10/oradata/ora1/undotbs01.dbf',
'/opt/ora10/oradata/ora1/sysaux01.dbf',
'/opt/ora10/oradata/ora1/users01.dbf',
'/opt/ora10/oradata/ora1/example01.dbf'
CHARACTER SET WE8ISO8859P1
;
Control file created.
SQL> recover database using backup controlfile until cancel;
auto 就可以了
然后用 用alter database open resetlogs打开了数据库就可以了。
在用之前写的多路复用方法,就可以是实现控制文件的多路复用