使用RMAN异地恢复数据库试验(RAC恢复到单实例数(2)

1
2
3 SQL> alter database add logfile thread 1 group 7 '/app/oradata/wssdb/onlinelog_01_128M_001.log' size 128M;
SQL> alter database add logfile thread 1 group 8 '/app/oradata/wssdb/onlinelog_02_128M_001.log' size 128M;
SQL> alter database add logfile thread 1 group 9 '/app/oradata/wssdb/onlinelog_03_128M_001.log' size 128M;

删除原来的在线日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 SQL> alter database drop logfile group 5;
数据库已更改。
SQL> alter database drop logfile group 1;
alter database drop logfile group 1
*
第 1 行出现错误:
ORA-01624: 日志 1 是紧急恢复实例 wssdb (线程 1) 所必需的
ORA-00312: 联机日志 1 线程 1: '+DATA/wssdb/onlinelog/group_1.257.874510059'
ORA-00312: 联机日志 1 线程 1: '+DATA/wssdb/onlinelog/group_1.273.874523985'
SQL> alter database drop logfile group 2;
alter database drop logfile group 2
*
第 1 行出现错误:
ORA-01623: 日志 2 是实例 wssdb (线程 1) 的当前日志 - 无法删除
ORA-00312: 联机日志 2 线程 1: '+DATA/wssdb/onlinelog/group_2.258.874510061'
ORA-00312: 联机日志 2 线程 1: '+DATA/wssdb/onlinelog/group_2.274.874523987'
SQL> alter database drop logfile group 3;
alter database drop logfile group 3
*
第 1 行出现错误:
ORA-01624: 日志 3 是紧急恢复实例 wssdb (线程 1) 所必需的
ORA-00312: 联机日志 3 线程 1: '+DATA/wssdb/onlinelog/group_3.259.874510065'
ORA-00312: 联机日志 3 线程 1: '+DATA/wssdb/onlinelog/group_3.275.874523989'
SQL> alter database backup controlfile to trace;
数据库已更改。

发现删除报错,那么我们通过重建controlfile来删除这些在线日志,如下:

SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL>
SQL>
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area  334036992 bytes
Fixed Size    2253024 bytes
Variable Size  113250080 bytes
Database Buffers  213909504 bytes
Redo Buffers    4624384 bytes
SQL>
SQL>
SQL>
SQL> CREATE CONTROLFILE REUSE DATABASE "WSSDB"  RESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 8192
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 7 '/app/oradata/wssdb/onlinelog_01_128M_001.log'  SIZE 128M BLOCKSIZE 5  2    3    4    5    6    7    8  12,
  GROUP 8 '/app/oradata/wssdb/onlinelog_02_128M_001.log'  SIZE 128M BLOCKSIZE 512,
  GROUP 9 '/app/oradata/wssdb/onlinelog_03_128M_001.log'  SIZE 128M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/app/oradata/wssdb/system01.bdf',
  '/app/oradata/wssdb/  9  10  11  12  13  14  sysaux01.bdf',
  '/app/oradata/wssdb/undotbs1_01.bdf',
  '/app/oradata/wssdb/undotbs2_01.bdf',
  '/app/oradata/wssdb/users_01.bdf',
  '/app/oradata/wssdb/wss_01.bdf',
  '/app/oradata/wssdb/smicwrps_tablespace_01.bdf',
  '/app/oradata/wssdb/xm_db_portal.bdf 15  16  17  18  19  20  ',
  '/app/oradata/wssdb/xm_db_push.bdf',
  '/app/oradata/wssdb/xdbts.bdf'
CHARACTER SET ZHS16GBK
; 21  22  23  24 
控制文件已创建。

这个时候,我使用 alter database mount; 命令想将数据库改变到mount状态,却发现报错,这个因为重建控制文件以后,数据库会自动启动到mount状态。

通过alter database open resetlogs打开数据库:

SQL> alter database open resetlogs;

alter database open resetlogs

*

第 1 行出现错误:

ORA-01152: 文件 2 没有从过旧的备份中还原

ORA-01110: 数据文件 2: '/app/oradata/wssdb/sysaux01.bdf'

SQL> recover database until cancel;

ORA-00283: recovery session canceled due to errors

ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

依然报错,这个时候通过_allow_resetlogs_corruption=true参数强行开启数据库

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a52631134ff5abf9d10e3697c6769bba.html