noarchivelog模式下冷备时没有备份联机重做日志文件

--整理以前的学习笔记

先更改数据库为noarchivelog模式
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/arch
Oldest online log sequence     12
Next log sequence to archive   15
Current log sequence           15
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             373294984 bytes
Database Buffers          117440512 bytes
Redo Buffers                5922816 bytes
Database mounted.
SQL> alter database noarchivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/arch
Oldest online log sequence     12
Current log sequence           15

下面shutdown immediate进行冷备
[oracle@mylinux ~]$ cd /u01/oradata/orcl/
[oracle@mylinux orcl]$ ll
total 1918688
-rw-r----- 1 oracle oinstall   9814016 Oct 21 21:37 control01.ctl
-rw-r----- 1 oracle oinstall   9814016 Oct 21 21:37 control02.ctl
-rw-r----- 1 oracle oinstall 104865792 Oct 21 21:37 example01.dbf
drwxr-x--- 4 oracle oinstall      4096 Sep  5 20:32 ORCL
-rw-r----- 1 oracle oinstall  52429312 Oct 21 21:36 redo01.log
-rw-r----- 1 oracle oinstall  52429312 Oct 21 21:37 redo02.log
-rw-r----- 1 oracle oinstall  52429312 Oct 21 21:36 redo03.log
-rw-r----- 1 oracle oinstall   5243392 Oct 21 21:36 redo04b.log
-rw-r----- 1 oracle oinstall   5243392 Oct 21 21:36 redo04.log
-rw-r----- 1 oracle oinstall 629153792 Oct 21 21:37 sysaux01.dbf
-rw-r----- 1 oracle oinstall 754982912 Oct 21 21:37 system01.dbf
-rw-r----- 1 oracle oinstall  20979712 Oct 21 21:37 tbsmn01.dbf
-rw-r----- 1 oracle oinstall  55582720 Oct 21 21:37 tbsmn02.dbf
drwxr-xr-x 2 oracle oinstall      4096 Oct 18 21:07 test
-rw-r----- 1 oracle oinstall 204480512 Oct 21 21:37 undotbs01.dbf
-rw-r----- 1 oracle oinstall   5251072 Oct 17 20:01 users01.dbf
[oracle@mylinux orcl]$ cp *.ctl /u01/backup/coldbackup/
[oracle@mylinux orcl]$ cp *.dbf /u01/backup/coldbackup/
[oracle@mylinux orcl]$ cp *.log /u01/backup/coldbackup/

然后对数据库做一些更改
SQL> create table rec(id number,name varchar2(10));

Table created.

SQL> insert into rec values(1,'a');

1 row created.

SQL> insert into rec values(2,'b');

1 row created.

SQL> insert into rec values(3,'c');

1 row created.

SQL> insert into rec values(4,'d');

1 row created.

SQL> insert into rec values(5,'e');

1 row created.

SQL> commit;

SQL> create table rec1(id1 number,name1 varchar2(10));

Table created.

SQL> insert into rec1 values(11,'aa');

1 row created.

SQL> insert into rec1 values(22,'bb');

1 row created.

SQL> commit;

Commit complete.

下面shutdown immediate将数据库的数据文件、控制文件和联机重做日志文件都删除掉,并将冷备的数据文件和控制文件替换进去,但不复制联机重做日

志文件
[oracle@mylinux orcl]$ rm -f *.ctl
[oracle@mylinux orcl]$ rm -f *.dbf
[oracle@mylinux orcl]$ rm -f *.log
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/*.ctl .
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/*.dbf .

然后startup
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             373294984 bytes
Database Buffers          117440512 bytes
Redo Buffers                5922816 bytes
Database mounted.
ORA-01122: database file 4 failed verification check
ORA-01110: data file 4: '/u01/oradata/users01.dbf'
ORA-01207: file is more recent than control file - old control file
--为什么我提示这个错误呢?我把联机重做日志拷贝回去或者不拷贝回去,都是报这个错?为什么?
此时的数据文件和控制文件是我一起冷备的,为什么会提示控制文件是旧的?


我真是手贱啊,竟然把刚才备份的东西给删除了
然后手忙脚乱的
recover database until cancel using backup controlfile;
alter database open resetlogs;就乱来了,后来也不知道为什么会整出下面这个错误

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01152: file 4 was not restored from a sufficiently old backup--重点是这句
ORA-01110: data file 4: '/u01/oradata/users01.dbf'


后来想嘛,实在不行,就把数据库删了重新建个
但是进去dbca也提示一堆的错误,删除数据库也要在数据库打开的情况下删除的,Oracle可能要查询数据字典的,哎,实在没辙了,网上搜“ORA-01152:

file 4 was not restored from a sufficiently old backup”
还真被我搜到一篇
http://zionw.blog.163.com/blog/static/9985959200911111181377/


startup force;

alter system set "_allow_resetlogs_corruption"=true scope=spfile;

recover database using backup controlfile until cancel;--要输入cancel

alter databse open resetlogs;


一次不行再试一次,反正死马当活马医,最后终归是好了
以后要记住:保护现场最重要,方法终归是有的,哎,我真是手贱啊


下面我再来一次
[oracle@mylinux ~]$ cd /u01/backup/coldbackup/
[oracle@mylinux coldbackup]$ mkdir 20121022
[oracle@mylinux coldbackup]$ cd /u01/oradata/orcl
[oracle@mylinux orcl]$ cp *.ctl /u01/backup/coldbackup/20121022/
[oracle@mylinux orcl]$ cp *.dbf /u01/backup/coldbackup/20121022/
[oracle@mylinux orcl]$ cp *.log /u01/backup/coldbackup/20121022/
然后对数据库做一些更改
SQL> create table abc(id number);
Table created.
SQL> insert into abc values(1);
1 row created.
SQL> insert into abc values(2);
1 row created.
SQL> insert into abc values(3);
1 row created.
SQL> commit;
Commit complete.
SQL> create table def(id number);
Table created.
SQL> insert into def values(4);
1 row created.
SQL> insert into def values(5);
1 row created.
SQL> insert into def values(6);
1 row created.
SQL> commit;
Commit complete.


关闭数据库,删除数据文件、控制文件和联机重做日志文件
[oracle@mylinux orcl]$ rm *.ctl
[oracle@mylinux orcl]$ rm *.dbf
[oracle@mylinux orcl]$ rm *.log


现在把旧的数据文件、控制文件和联机重做日志文件拷贝回去
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/20121022/* .


启动数据库试试
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             373294984 bytes
Database Buffers          117440512 bytes
Redo Buffers                5922816 bytes
Database mounted.
ORA-01122: database file 4 failed verification check
ORA-01110: data file 4: '/u01/oradata/users01.dbf'
ORA-01207: file is more recent than control file - old control file
为什么这样也会提示错误呢?数据文件、控制文件、联机重做日志文件不是在关闭数据库时一致的备份吗?百思不得其解


SQL> col name for a40
SQL> select name,checkpoint_change# from v$datafile;

NAME                                     CHECKPOINT_CHANGE#
---------------------------------------- ------------------
/u01/oradata/orcl/system01.dbf                      2232609
/u01/oradata/orcl/sysaux01.dbf                      2232609
/u01/oradata/orcl/undotbs01.dbf                     2232609
/u01/oradata/users01.dbf                            2232609
/u01/oradata/orcl/example01.dbf                     2232609
/u01/oradata/orcl/tbsmn01.dbf                       2232609
/u01/oradata/orcl/tbsmn02.dbf                       2232609
/u01/oradata/manualsegs01.dbf                       2232609
/u01/oradata/autosegs01.dbf                         2232609
/u01/oradata/rman01.dbf                             2232609
/u01/oradata/hello.dbf                              2232609

11 rows selected.

SQL> select name,checkpoint_change# from v$datafile_header;

NAME                                     CHECKPOINT_CHANGE#
---------------------------------------- ------------------
/u01/oradata/orcl/system01.dbf                      2232609
/u01/oradata/orcl/sysaux01.dbf                      2232609
/u01/oradata/orcl/undotbs01.dbf                     2232609
/u01/oradata/users01.dbf                            2233382
/u01/oradata/orcl/example01.dbf                     2232609
/u01/oradata/orcl/tbsmn01.dbf                       2232609
/u01/oradata/orcl/tbsmn02.dbf                       2232609
/u01/oradata/manualsegs01.dbf                       2233382
/u01/oradata/autosegs01.dbf                         2233382
/u01/oradata/rman01.dbf                             2233382
/u01/oradata/hello.dbf                              2233382

11 rows selected.
--查询v$datafile_header和v$datafile发现,确实数据文件头中记录的users01.dbf(2233382)比控制文件(2232609)中记录的要新


下面解决这个错误,使用重新创建控制文件的方式
alter database backup controlfile to trace as '/u01/oradata/orcl/ctl.sql';
打开/u01/oradata/orcl/ctl.sql将其中一段复制出来,保存为create_controlfile.sql


CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/oradata/orcl/redo01.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 '/u01/oradata/orcl/redo02.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '/u01/oradata/orcl/redo03.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 4 (
    '/u01/oradata/orcl/redo04.log',
    '/u01/oradata/orcl/redo04b.log'
  ) SIZE 5M BLOCKSIZE 512
-- STANDBY LOGFILE

DATAFILE
  '/u01/oradata/orcl/system01.dbf',
  '/u01/oradata/orcl/sysaux01.dbf',
  '/u01/oradata/orcl/undotbs01.dbf',
  '/u01/oradata/users01.dbf',
  '/u01/oradata/orcl/example01.dbf',
  '/u01/oradata/orcl/tbsmn01.dbf',
  '/u01/oradata/orcl/tbsmn02.dbf',
  '/u01/oradata/manualsegs01.dbf',
  '/u01/oradata/autosegs01.dbf',
  '/u01/oradata/rman01.dbf',
  '/u01/oradata/hello.dbf'
CHARACTER SET AL32UTF8
;


其中-- STANDBY LOGFILE去掉,否则会影响脚本的执行
先将数据库关闭
执行这个脚本
SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> @/u01/oradata/orcl/create_controlfile.sql
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             373294984 bytes
Database Buffers          117440512 bytes
Redo Buffers                5922816 bytes
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01229: data file 11 is inconsistent with logs
ORA-01110: data file 11: '/u01/oradata/hello.dbf'


--现在我终于明白为什么会提示控制文件与数据文件不一致的情况了,因为manualsegs01.dbf、autosegs01.dbf、rman01.dbf、hello.dbf这几个数据文件

与其他数据文件在不同的路径下,那么我原先做的冷备只是备份其中的一些数据文件,还原也只还原了一部分,所以最后我还原的其实部分是新的,部分

是旧的,郁闷哪,难怪创建控制文件不成功了,所以把数据文件放在统一的路径下很重要,而且在备份前要查询v$datafile数据文件的位置,否则就出现

了我现在这样的状况


然后现在因为我控制文件创建不成功,然后数据库都mount不了了
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01079: ORACLE database was not properly created, operation aborted


现在我把/u01/oradata/orcl下面的数据文件、控制文件、联机重做日志文件全部删除掉,再重新拷贝一份备份试试看
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             373294984 bytes
Database Buffers          117440512 bytes
Redo Buffers                5922816 bytes
Database mounted.
ORA-01122: database file 4 failed verification check
ORA-01110: data file 4: '/u01/oradata/users01.dbf'
ORA-01207: file is more recent than control file - old control file


下面使用终极法宝,当然只是在测试库上用用,正式库上哪敢啊,数据很容易损坏
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;

System altered.

SQL>
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 2232609 generated at 10/22/2012 20:57:21 needed for thread 1
ORA-00289: suggestion : /u01/arch/1_1_797294724.dbf
ORA-00280: change 2232609 for thread 1 is in sequence #1


Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 4 was not restored from a sufficiently old backup
ORA-01110: data file 4: '/u01/oradata/users01.dbf'

ORA-01112: media recovery not started

SQL> alter databse open resetlogs;
alter databse open resetlogs
      *
ERROR at line 1:
ORA-00940: invalid ALTER command


SQL> alter database open resetlogs;

Database altered.
--竟然打开了


下面要将那些数据文件都统一放到/u01/oradata/orcl下
shutdown immediate先在操作系统上移动
再startup mount使用alter database rename file '' to '';
select name from v$tempfile;
select name from v$datafile;--确认数据文件已经移动到我们想要的位置
再打开数据库alter database open;


好吧,下次再来一次冷备,真是折腾啊,但也总算长了教训
shutdown immediate
[oracle@mylinux coldbackup]$ mkdir 20121023
[oracle@mylinux coldbackup]$ cd 20121023
[oracle@mylinux 20121023]$ ll
total 0
[oracle@mylinux 20121023]$ cp /u01/oradata/orcl/*.ctl .
[oracle@mylinux 20121023]$ cp /u01/oradata/orcl/*.dbf .
[oracle@mylinux 20121023]$ cp /u01/oradata/orcl/*.log .


下面对数据库做一些更改
conn hr/hr
SQL> create table abc(id number);
Table created.
SQL> insert into abc values(1);
1 row created.
SQL> insert into abc values(2);
1 row created.
SQL> insert into abc values(3);
1 row created.
SQL> commit;
Commit complete.
SQL> create table def(id number);
Table created.
SQL> insert into def values(4);
1 row created.
SQL> insert into def values(5);
1 row created.
SQL> insert into def values(6);
1 row created.
SQL> commit;
Commit complete.


关闭数据库,删除控制文件、数据文件和联机重做日志文件
oracle@mylinux orcl]$ rm *.dbf
[oracle@mylinux orcl]$ rm *.log
[oracle@mylinux orcl]$ rm *.ctl
重新把备份里面的控制文件、数据文件和联机重做日志文件拷贝过来
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/20121023/* .


SQL> startup--启动试试
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             364906376 bytes
Database Buffers          125829120 bytes
Redo Buffers                5922816 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 5968
Session ID: 1 Serial number: 5
--小插曲,查看了日志,ps -ef发现后台进程全部关闭了
退出sqlplus重新进下就好了
startup成功
这时候hr用户下abc和def两张表是没有的,因为是过去的冷备份


下面模拟一种情形,假如我当时备份的时候没有备份联机重做日志文件,会发生什么情况
shutdown immediate将控制文件、数据文件、联机重做日志文件全部删除掉
再从冷备处拷贝控制文件和数据文件,不拷贝联机重做日志文件
[oracle@mylinux orcl]$ rm *.ctl
[oracle@mylinux orcl]$ rm *.dbf
[oracle@mylinux orcl]$ rm *.log
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/20121023/*.ctl .
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/20121023/*.dbf .


看下startup会发生什么情况
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             364906376 bytes
Database Buffers          125829120 bytes
Redo Buffers                5922816 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 7075
Session ID: 1 Serial number: 5


查询alert.log发现记录了如下日志
Errors in file /u01/diag/rdbms/orcl/orcl/trace/orcl_lgwr_7030.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/oradata/orcl/redo01.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Errors in file /u01/diag/rdbms/orcl/orcl/trace/orcl_lgwr_7030.trc:


下面尝试下使用alter database clear logfile group 1;重建日志文件试试看
SQL> startup mount;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             364906376 bytes
Database Buffers          125829120 bytes
Redo Buffers                5922816 bytes
Database mounted.
SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         4 UNUSED
         3 UNUSED
         2 UNUSED

SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR at line 1:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/oradata/orcl/redo02.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


SQL> alter database clear logfile group 2;

Database altered.

SQL> alter database clear logfile group 3;

Database altered.

SQL> alter database clear logfile group 4;

Database altered.

SQL> alter database clear logfile group 1;

Database altered.

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 7393
Session ID: 1 Serial number: 5

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@mylinux ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 23 21:45:21 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             364906376 bytes
Database Buffers          125829120 bytes
Redo Buffers                5922816 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 7647
Session ID: 1 Serial number: 5

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@mylinux ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 23 21:46:38 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             364906376 bytes
Database Buffers          125829120 bytes
Redo Buffers                5922816 bytes
Database mounted.
SQL> select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1          3 CURRENT
         4          0 UNUSED
         3          0 UNUSED
         2          2 INACTIVE

SQL> alter database open;

Database altered.


--好像出现这些个错之后
ORA-03113: end-of-file on communication channel
Process ID: 7647
Session ID: 1 Serial number: 5
不能使用startup直接打开数据库,需要先startup mount,再alter database open才可以


下面使用小布老师说的方法:
关闭数据库,删除控制文件、数据文件、联机重做日志文件
从冷备处拷贝控制文件、数据文件
[oracle@mylinux orcl]$ rm *.ctl
[oracle@mylinux orcl]$ rm *.dbf
[oracle@mylinux orcl]$ rm *.log
[oracle@mylinux orcl]$ ll
total 8
drwxr-x--- 4 oracle oinstall 4096 Sep  5 20:32 ORCL
drwxr-xr-x 2 oracle oinstall 4096 Oct 23 20:57 test
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/20121023/*.ctl .
[oracle@mylinux orcl]$ cp /u01/backup/coldbackup/20121023/*.dbf .

[oracle@mylinux ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 23 22:00:25 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             364906376 bytes
Database Buffers          125829120 bytes
Redo Buffers                5922816 bytes
Database mounted.
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 2236227 generated at 10/23/2012 20:56:49 needed for thread 1
ORA-00289: suggestion : /u01/arch/1_1_797380909.dbf
ORA-00280: change 2236227 for thread 1 is in sequence #1

Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database resetlogs;
alter database resetlogs
                       *
ERROR at line 1:
ORA-02231: missing or invalid option to ALTER DATABASE

SQL> alter database open resetlogs;
Database altered.
--这样日志文件就重新创建好了,通过不完全恢复之后resetlogs方式来重新创建日志文件


但是如果不recover using backup controlfile直接alter database open resetlogs就会提示错误如下
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery


下面我再试一种,在没有备份联机重做日志的情况下,我不用
recover database until cancel using backup controlfile;
而是用recover database until cancel;

SQL> startup mount;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area  497995776 bytes
Fixed Size                  1337464 bytes
Variable Size             364906376 bytes
Database Buffers          125829120 bytes
Redo Buffers                5922816 bytes
Database mounted.
SQL> recover database until cancel;--成功
Media recovery complete.
SQL> alter database open resetlogs;--成功,/u01/oradata/orcl发现联机重做日志已经重新建成
Database altered.
SQL> select group#,sequence#,status from v$log;
    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1          1 CURRENT
         2          0 UNUSED
         3          0 UNUSED
         4          0 UNUSED


参考资料:http://zionw.blog.163.com/blog/static/9985959200911111181377/
ORA-01152错误解决方法(转) 

2009-12-11 11:08:01|  分类: 数据库-oracle |字号 订阅
SQL> startup;

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

Total System Global Area 293601280 bytes

Fixed Size 1248600 bytes

Variable Size 96469672 bytes

Database Buffers 188743680 bytes

Redo Buffers 7139328 bytes

Database mounted.

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: 'L:\ORACLE\PRODUCT\10.2.0\ORADATA\ORC2\SYSTEM01.DBF'

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

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

           4532411

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#

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

           4532411

           4532411

           4532411

           4532411

           4532411

           4532411

           4532411

           4532411

           4664735

9 rows selected.

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#

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

           4711164

           4711164

           4711164

           4711164

           4711164

           4711164

           4711164

           4711164

           4664735

9 rows selected.

SQL> recover database using backup controlfile until cancel;

ORA-00279: change 4697108 generated at 12/24/2007 11:48:57 needed for thread 1

ORA-00289: suggestion :

L:\ORACLE\PRODUCT\10.2.0\ORADATA\ORC2\ARCHIVEARC00007_0641832494.001

ORA-00280: change 4697108 for thread 1 is in sequence #7

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

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

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: 'L:\ORACLE\PRODUCT\10.2.0\ORADATA\ORC2\SYSTEM01.DBF'

ORA-01112: media recovery not started

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: 'L:\ORACLE\PRODUCT\10.2.0\ORADATA\ORC2\SYSTEM01.DBF'

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;

System altered.

SQL> recover database using backup controlfile until cancel;

ORA-00279: change 4697108 generated at 12/24/2007 11:48:57 needed for thread 1

ORA-00289: suggestion :

L:\ORACLE\PRODUCT\10.2.0\ORADATA\ORC2\ARCHIVEARC00007_0641832494.001

ORA-00280: change 4697108 for thread 1 is in sequence #7

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

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

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: 'L:\ORACLE\PRODUCT\10.2.0\ORADATA\ORC2\SYSTEM01.DBF'

ORA-01112: media recovery not started

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

SQL> startup force;

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

Total System Global Area 293601280 bytes

Fixed Size 1248600 bytes

Variable Size 96469672 bytes

Database Buffers 188743680 bytes

Redo Buffers 7139328 bytes

Database mounted.

Database opened.

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

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

           4717118

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#

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

           4717118

           4717118

           4717118

           4717118

           4717118

           4717118

           4717118

           4717118

           4664735

9 rows selected.

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#

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

           4717118

           4717118

           4717118

           4717118

           4717118

           4717118

           4717118

           4717118

                 0

9 rows selected.

SQL> select last_change# from v$datafile;

LAST_CHANGE#

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

     4664735

9 rows selected.

具体步骤如下:

startup force;

alter system set "_allow_resetlogs_corruption"=true scope=spfile;

recover database using backup controlfile until cancel;

alter database open resetlogs;

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

转载于:http://blog.itpub.net/26524307/viewspace-1061615/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值