陣列櫃故障造成控制檔案損壞,資料檔案損壞

tonykorn97發表於2007-11-22

啟動資料庫的時候報控制檔案版本不一致,用其中一個控制檔案啟動的時候報錯。

重新建立一個配置檔案,修改control_files為其中的一個。


tonykorn97.__db_cache_size=3019898880
tonykorn97.__java_pool_size=16777216
tonykorn97.__large_pool_size=16777216
tonykorn97.__shared_pool_size=234881024
tonykorn97.__streams_pool_size=0
*.audit_file_dest='/opt/oracle//admin/tonykorn97/adump'
*.background_dump_dest='/opt/oracle//admin/tonykorn97/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/opt/oracle/oradata/tonykorn97/control02.ctl'
*.core_dump_dest='/opt/oracle//admin/tonykorn97/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='tonykorn97'
*.db_recovery_file_dest='/opt/oracle//flash_recovery_area'
*.db_recovery_file_dest_size=42949672960
*.dispatchers='(PROTOCOL=TCP) (SERVICE=tonykorn97XDB)'
*.job_queue_processes=10
*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=1237319680
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=3294625792
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
#undo_management=MANUAL
#undo_retention=10800
#undo_tablespace=UNDOTBS01
#rollback_segments='SYSTEM'
*.user_dump_dest='/opt/oracle//admin/tonykorn97/udump'
~

啟動可以Mount ,不能Open


修改配置檔案為
#*.undo_management='AUTO'
#*.undo_tablespace='UNDOTBS1'
undo_management=MANUAL
undo_retention=10800
undo_tablespace=UNDOTBS01
rollback_segments='SYSTEM'


啟動。啟動前刪除undotbs01.dbf
:~> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Nov 20 19:30:47 2007

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

Connected to an idle instance.

SQL> startup pfile=/opt/oracle/inittonykorn97.ora mount
ORACLE instance started.

Total System Global Area 3305111552 bytes
Fixed Size 1998008 bytes
Variable Size 268436296 bytes
Database Buffers 3019898880 bytes
Redo Buffers 14778368 bytes
Database mounted.
SQL> alter database datafile '/opt/oracle/oradata/tonykorn97/undotbs01.dbf' offline drop;

Database altered.

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced


SQL>


alter日至裡面報同樣的錯誤

Tue Nov 20 19:33:47 2007
Errors in file /opt/oracle/admin/tonykorn97/udump/tonykorn97_ora_6495.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/opt/oracle/oradata/tonykorn97/undotbs01.dbf'
Error 604 happened during db open, shutting down database
USER: terminating instance due to error 604
Instance terminated by USER, pid = 6495
ORA-1092 signalled during: alter database open...
db:~ #

下面語句查得CHECKPOINT最後的scn不一致。
SQL> SELECT TS#,FILE#,CHECKPOINT_CHANGE# FROM V$DATAFILE;

TS# FILE# CHECKPOINT_CHANGE#
---------- ---------- ------------------
0 1 24631928
1 2 24451612
2 3 24382059
4 4 24631928
6 5 24631928
7 6 24631928
8 7 24631928
9 8 24631928
10 9 24631928
11 10 24631928
12 11 24631928

TS# FILE# CHECKPOINT_CHANGE#
---------- ---------- ------------------
13 12 24631928

12 rows selected.

SQL>


下面語句察看知道datafile 3需要恢復
SQL> select FILE#,CHECKPOINT_CHANGE#,STATUS from v$datafile ;

FILE# CHECKPOINT_CHANGE# STATUS
---------- ------------------ -------
1 25405236 SYSTEM
2 25343437 RECOVER
3 25343437 RECOVER
4 25405236 ONLINE
5 25343437 RECOVER
6 25405236 ONLINE
7 25343437 RECOVER
8 25343437 RECOVER
9 25405236 ONLINE
10 25343437 RECOVER
11 25405236 ONLINE

FILE# CHECKPOINT_CHANGE# STATUS
---------- ------------------ -------
12 25405236 ONLINE

12 rows selected.

SQL>


然後開始rman恢復
restore datafile 2,3,5,7,8,10;
recover datafile 2,3,5,7,8,10;


alter database datafile '/opt/oracle/oradata/tonykorn97/sysaux.dbf' online;
用datafile的datafile號也可以!

alter database datafile 2,3,5,7,8,10 online;

啟動資料庫
alter database open;
可以啟動資料庫

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245807/,如需轉載,請註明出處,否則將追究法律責任。

相關文章