Oracle读写-只读表空间回复详解(三)

2014-11-24 12:27:13 · 作者: · 浏览: 2
日志文件

……

--在恢复的过程中又出现了如下警告

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'

SYS@ORCL>

13) 尝试再次resetlogs打开数据库

SYS@ORCL>alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'

SYS@ORCL>

14) 采用极端办法

注:此时只能采取极端手段:隐含参数_allow_resetlogs_corruption强制启动数据库,设置此参数之后,在数据库Open过程中,Oracle会跳过某些一致性检查,从而使数据库可能跳过不一致状态,Open打开:

--查看隐藏参数_allow_resetlogs_corruption,默认值为false

SYS@ORCL>SELECT ksppstvl, ksppdesc

2 FROM x$ksppi x, x$ksppcv y

3 WHERE x.indx = y.indx

4 AND ksppinm = '_allow_resetlogs_corruption';

KSPPSTVL KSPPDESC

---------- --------------------------------------------------

FALSE allow resetlogs even if it will cause corruption

SYS@ORCL>

--将隐藏参数设置为true

SYS@ORCL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;

System altered.

SYS@ORCL>

--由于是静态参数,重启数据库使其生效

SYS@ORCL>shutdown immediate;

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SYS@ORCL>

--数据库启动到mount状态

SYS@ORCL>startup mount;

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 83887696 bytes

Database Buffers 197132288 bytes

Redo Buffers 2973696 bytes

Database mounted.

SYS@ORCL>

15) 再次尝试open数据库,提示RESETLOGS方式open

SYS@ORCL>alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SYS@ORCL>

16) 数据库成功以resetlogs方式open

SYS@ORCL>alter database open resetlogs;

Database altered.

SYS@ORCL>

SYS@ORCL>select count(*) from scott.t;

COUNT(*)

----------

5

SYS@ORCL>select count(*) from scott.t1;

select count(*) from scott.t1

*

ERROR at line 1:

ORA-00942: table or view does not exist

SYS@ORCL>

17) 恢复参数,重启数据库

SYS@ORCL>alter system set "_allow_resetlogs_corruption"=false scope=spfile;

System altered.

SYS@ORCL>startup force;

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 88082000 bytes

Database Buffers 192937984 bytes

Redo Buffers 2973696 bytes

Database mounted.

Database opened.

SYS@ORCL>

5.1.1. 小结

如果在生产中使用了只读表空间,那么切记,在修改为只读以后,第一件事儿就是备份,这样会省去不必要的麻烦和损失。