RMAN异机恢复步骤及故障处理(九)

2014-11-24 14:36:06 · 作者: · 浏览: 2
file时并没有指定group xxx,默认就会从未使用的组号开始命名,所以这里对应的就是group 4,group 5,group 6,因此只要把之前3组的语句删除,再重建一下控制文件即可
SQL> shutdown immediate
ORA-01109: database not open

Database dismounted. ORACLE instance shut down. SQL> startup nomount ORACLE instance started.
Total System Global Area 1073741824 bytes Fixed Size 1223512 bytes Variable Size 264242344 bytes Database Buffers 805306368 bytes Redo Buffers 2969600 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "ORA10G" RESETLOGS ARCHIVELOG DATAFILE MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100
MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 4 '/oradata/ora10g/redo01.log' SIZE 50M, GROUP 5 '/oradata/ora10g/redo02.log' SIZE 50M, GROUP 6 '/oradata/ora10g/redo03.log' SIZE 50M -- STANDBY LOGFILE DATAFILE '/oradata/ora10g/system01.dbf', '/oradata/ora10g/undotbs01.dbf', '/oradata/ora10g/sysaux01.dbf', '/oradata/ora10g/users01.dbf', '/oradata/ora10g/example01.dbf', '/oradata/ora10g/zlm01.dbf' CHARACTER SET ZHS16GBK ;

Control file created.

SQL> alter database mount;
alter database mount * ERROR at line 1: ORA-01100: database already mounted

SQL> alter database open resetlogs;
Database altered.
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE ---------- ---------------- READ WRITE PRIMARY
SQL> select group#,sequence#,(bytes/1024/1024) "SIZE(MB)",archived,status from v$log;
GROUP# SEQUENCE# SIZE(MB) ARC STATUS ---------- ---------- ---------- --- ---------------- 4 0 50 YES UNUSED 5 0 50 YES UNUSED 6 1 50 NO CURRENT
至此,数据库已经顺利恢复完毕,当然,如果觉得redo logfile从group 4开始有点不顺眼,那么可以再做一下调整
SQL> shutdown immediate
ORA-01507: database not mounted

ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1073741824 bytes Fixed Size 1223512 bytes Variable Size 264242344 bytes Database Buffers 805306368 bytes Redo Buffers 2969600 bytes Database mounted.
SQL> alter database drop logfile '/oradata/ora10g/redo01.log';

Database altered.
SQL> alter database drop logfile '/oradata/ora10g/redo02.log';
alter database drop logfile '/oradata/ora10g/redo02.log' * ERROR at line 1: ORA-01567: dropping log 5 would leave less than 2 log files for instance ora10g (thread 1) ORA-00312: online log 5 thread 1: '/oradata/ora10g/redo02.log'
oralce要求1个数据库实例至少要有2组日志,因此不允许删除剩余2组日志
SQL> alter database drop logfile '/oradata/ora10g/redo03.log'; alter database drop logfile '/oradata/ora10g/redo03.log' * ERROR at line 1: ORA-01623: log 6 is current log for instance ora10g (thread 1) - cannot drop ORA-00312: online log 6 thread 1: '/oradata/ora10g/redo03.log'
无法删除日志组6,是因为它是当前使用的日志文件。当然了,即使不是当前日志也无法删除,因为同样要遵循至少剩余2组日志的必要条件
SQL> alter database add logfile group 1 '/oradata/ora10g/redo01.log' size 50m; alter database add logfile group 1 '/oradata/ora10g/redo01.log' size 50m * ERROR at line 1: ORA-00301: error in adding log file '/oradata/ora10g/redo01.log' - file cannot be created ORA-27038: created file already exists Additional information: 1
由于只是从控制文件中删除,而在OS物理级别该文件依然存在,所以提示无法创建
SQL> ! [oracle@bak ~]$ ll /oradata/ora10g total 1349168 -rw-r----- 1 oracle oinstall 7389184 Oct 12 19:55 control01.ctl -rw-r----- 1 oracle oinstall 7389184 Oct 12 19:55 control02.ctl -rw-r----- 1 oracle oinstall 7389184 Oct 12 19:55 control03.ctl -rw-r----- 1 oracle oinstall 104865792 Oct 12 19:49 example01.dbf -rw-r----- 1 oracle oinstall 52429312 Oct 12 19:36 redo01.log -rw-r----- 1 orac