请教一个resetlog的问题,请高手不吝赐教!

今天测试表空间offline immediate后用resetlogs的方式重建控制文件的时候发现一个问题,表空间offline immediate后,由于没有执行检查点,所以对应数据文件是需要恢复的,reset方式重建控制文件打开数据库后该数据文件不能恢复。报ora-19909错误。下面是详细过程

数据文件如下:

-rw-r-----  1 oracle oinstall 262152192  7月  9 17:17 sysaux01.dbf
-rw-r-----  1 oracle oinstall 524296192  7月  9 17:17 system01.dbf
-rw-r-----  1 oracle oinstall 125837312  7月  8 21:02 temp01.dbf
-rw-r-----  1 oracle oinstall 346038272  7月  9 17:17 undotbs01.dbf
-rw-r-----  1 oracle oinstall   5251072  7月  9 17:17 users01.dbf
sys@ORCL> create tablespace tbs01 datafile '/oracle/app/oradata/orcl/tbs01.dbf' size 1m;

Tablespace created.

sys@ORCL> alter tablespace tbs01 offline immediate;

Tablespace altered.

sys@ORCL> col name format a40
sys@ORCL> select file#, name, checkpoint_change#, last_change#, offline_change#, creation_change#,status, enabled from v$datafile;

     FILE# NAME                                     CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# CREATION_CHANGE# STATUS  ENABLED
---------- ---------------------------------------- ------------------ ------------ --------------- ---------------- ------- ----------
         1 /oracle/app/oradata/orcl/system01.dbf               2091192                      2091190                9 SYSTEM  READ WRITE
         2 /oracle/app/oradata/orcl/undotbs01.dbf              2091192                      2091190           444079 ONLINE  READ WRITE
         3 /oracle/app/oradata/orcl/sysaux01.dbf               2091192                      2091190             6609 ONLINE  READ WRITE
         4 /oracle/app/oradata/orcl/users01.dbf                2091192                      2091190            10566 ONLINE  DISABLED
         5 /oracle/app/oradata/orcl/example01.dbf              2091192                      2091190           467467 ONLINE  READ WRITE
         6 /oracle/app/oradata/orcl/tbs01.dbf                  2091572      2091606               0          2091571 RECOVER DISABLED

6 rows selected.

--这里last_change#为2091606。

sys@ORCL> alter system switch logfile;

System altered.

sys@ORCL> /

System altered.

sys@ORCL> /

System altered.

sys@ORCL> select file#, name, checkpoint_change#, last_change#, offline_change#, creation_change#,status, enabled from v$datafile;

     FILE# NAME                                     CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# CREATION_CHANGE# STATUS  ENABLED
---------- ---------------------------------------- ------------------ ------------ --------------- ---------------- ------- ----------
         1 /oracle/app/oradata/orcl/system01.dbf               2091633                      2091190                9 SYSTEM  READ WRITE
         2 /oracle/app/oradata/orcl/undotbs01.dbf              2091633                      2091190           444079 ONLINE  READ WRITE
         3 /oracle/app/oradata/orcl/sysaux01.dbf               2091633                      2091190             6609 ONLINE  READ WRITE
         4 /oracle/app/oradata/orcl/users01.dbf                2091633                      2091190            10566 ONLINE  DISABLED
         5 /oracle/app/oradata/orcl/example01.dbf              2091633                      2091190           467467 ONLINE  READ WRITE
         6 /oracle/app/oradata/orcl/tbs01.dbf                  2091572      2091606               0          2091571 RECOVER DISABLED

6 rows selected.

sys@ORCL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ORCL> startup nomount
ORACLE instance started.

Total System Global Area   83886080 bytes
Fixed Size                  1265912 bytes
Variable Size              62918408 bytes
Database Buffers           16777216 bytes
Redo Buffers                2924544 bytes
sys@ORCL> CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 4 '/oracle/app/oradata/orcl/redo04.log'  SIZE 10M,
  9    GROUP 5 '/oracle/app/oradata/orcl/reco05.log'  SIZE 10M
 10  -- STANDBY LOGFILE
 11  DATAFILE
 12    '/oracle/app/oradata/orcl/system01.dbf',
 13    '/oracle/app/oradata/orcl/undotbs01.dbf',
 14    '/oracle/app/oradata/orcl/sysaux01.dbf',
 15    '/oracle/app/oradata/orcl/users01.dbf',
 16    '/oracle/app/oradata/orcl/example01.dbf'
 17  CHARACTER SET ZHS16GBK
 18  ;

Control file created.

sys@ORCL> alter database open resetlogs;

Database altered.

sys@ORCL> select file#, name, checkpoint_change#, last_change#, offline_change#, creation_change#,status, enabled from v$datafile;

     FILE# NAME                                     CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# CREATION_CHANGE# STATUS  ENABLED
---------- ---------------------------------------- ------------------ ------------ --------------- ---------------- ------- ----------
         1 /oracle/app/oradata/orcl/system01.dbf               2091942                      2091940                9 SYSTEM  READ WRITE
         2 /oracle/app/oradata/orcl/undotbs01.dbf              2091942                      2091940           444079 ONLINE  READ WRITE
         3 /oracle/app/oradata/orcl/sysaux01.dbf               2091942                      2091940             6609 ONLINE  READ WRITE
         4 /oracle/app/oradata/orcl/users01.dbf                2091942                      2091940            10566 ONLINE  DISABLED
         5 /oracle/app/oradata/orcl/example01.dbf              2091942                      2091940           467467 ONLINE  READ WRITE
         6 /oracle/app/product/10.2.0/db_1/dbs/MISS                  0      2091981               0          2091571 RECOVER UNKNOWN
           ING00006


6 rows selected.

sys@ORCL> alter database rename file 'MISSING00006' to '/oracle/app/oradata/orcl/tbs01.dbf';

Database altered.

sys@ORCL> select file#, name, checkpoint_change#, last_change#, offline_change#, creation_change#,status, enabled from v$datafile;

     FILE# NAME                                     CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# CREATION_CHANGE# STATUS  ENABLED
---------- ---------------------------------------- ------------------ ------------ --------------- ---------------- ------- ----------
         1 /oracle/app/oradata/orcl/system01.dbf               2091942                      2091940                9 SYSTEM  READ WRITE
         2 /oracle/app/oradata/orcl/undotbs01.dbf              2091942                      2091940           444079 ONLINE  READ WRITE
         3 /oracle/app/oradata/orcl/sysaux01.dbf               2091942                      2091940             6609 ONLINE  READ WRITE
         4 /oracle/app/oradata/orcl/users01.dbf                2091942                      2091940            10566 ONLINE  DISABLED
         5 /oracle/app/oradata/orcl/example01.dbf              2091942                      2091940           467467 ONLINE  READ WRITE
         6 /oracle/app/product/10.2.0/db_1/dbs/MISS                  0      2091981               0          2091571 RECOVER UNKNOWN
           ING00006


6 rows selected.

--这里last_change#由2091606变为2091981,比当前数据库的检查点scn还大,

--这有个问题:为什么resetlog后该数据文件的last_change#(即stop scn)会改变。               

sys@ORCL> select * from v$datafile_header;

     FILE# STATUS  ERROR                                                                 FORMAT REC FUZ
---------- ------- ----------------------------------------------------------------- ---------- --- ---
         1 ONLINE                                                                             0 NO  YES
         2 ONLINE                                                                             0 NO  YES
         3 ONLINE                                                                             0 NO  YES
         4 ONLINE                                                                             0 NO  YES
         5 ONLINE                                                                             0 NO  YES
         6 OFFLINE WRONG RESETLOGS                                                            0     YES

已选择6行。

--查看数据库文件头信息,6号文件为OFFLINE WRONG RESETLOGS 

sys@ORCL> recover datafile 6
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 6 belongs to an orphan incarnation
ORA-01110: data file 6: '/oracle/app/oradata/orcl/tbs01.dbf'


sys@ORCL> drop tablespace tbs01 including contents and datafiles;

Tablespace dropped.

sys@ORCL> host oerr ora 19909
19909, 00000, "datafile %s belongs to an orphan incarnation"
// *Cause: Either the specified datafile was restored from a backup that was
//         taken during a period of time that has already been discarded by
//         a resetlogs operation, or Oracle cannot identify which database
//         incarnation the file belongs to.  The alert log contains more
//         information.
// *Action: Restore a backup of this file that belongs to either the current
//          or a prior incarnation of the database.  If you are using RMAN
//          to restore, RMAN will automatically select a correct backup.



问题:
按理说6号文件需要的日志都已经归档了,从日志来说是应该可以恢复的, 而通过resetlog打开数据库后却不能恢复呢。
是不是重建控制文件的时候丢失了该文件的stop scn信息,last_change#由2091606变为了2091981?请高手解释一下,谢谢!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25937377/viewspace-701766/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25937377/viewspace-701766/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值