SQL> startup
ORACLE instance started.
Total System Global Area 2505338880 bytes
Fixed Size 2215944 bytes
Variable Size 1392513016 bytes
Database Buffers 1107296256 bytes
Redo Buffers 3313664 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3:
'/u01/app/oracle/oradata/EISOO/datafile/o1_mf_undotbs1_cnq9gsym_.dbf'
在mount状态下查看数据文件信息,发现数据文件3位UNDO回滚段表空间
解决思路:由于undo表空间数据文件损坏,所以决定使用SYSTEM表空间作为临时undo,将数据库open,然后删除原来的undotbs1表空间,重建undotbs2表空
间,并修改参数文件,重新启动数据库。
具体步骤:
1、修改参数文件
*.undo_management='manual'
*.undo_tablespace='SYSTEM'
#_allow_resetlogs_corruption=true
#_corrupted_rollback_segments=
(_SYSSMU1_3780397527$,_SYSSMU2_2232571081$,_SYSSMU3_2097677531$,_SYSSMU4_1152005954$,_SYSSMU5_1527469038$,_SYSSMU6_2443381498$,_SYSSMU7_3
286610060$,_SYSSMU8_2012382730$,_SYSSMU9_1424341975$,_SYSSMU10_3550978943$)
备注:上面的undo回归段是在原来数据库open时查询V$rollname视图得到的。
2、启动数据库到mount状态
SQL> startup mount;
SQL> alter database datafile 3 offline;
SQL> alter database open;
SQL> drop tablespace undotbs1 including contents and datafiles;
SQL> create undo tablespace undotbs2 datafile '/u01/app/oracle/oradata/EISOO/datafile/undo02.dbf' size 100M;
3、关闭数据库,重新更改参数文件如下:
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS2'
4、重新启动数据库
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS2
ORACLE instance started.
Total System Global Area 2505338880 bytes
Fixed Size 2215944 bytes
Variable Size 1392513016 bytes
Database Buffers 1107296256 bytes
Redo Buffers 3313664 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3:
'/u01/app/oracle/oradata/EISOO/datafile/o1_mf_undotbs1_cnq9gsym_.dbf'
在mount状态下查看数据文件信息,发现数据文件3位UNDO回滚段表空间
解决思路:由于undo表空间数据文件损坏,所以决定使用SYSTEM表空间作为临时undo,将数据库open,然后删除原来的undotbs1表空间,重建undotbs2表空
间,并修改参数文件,重新启动数据库。
具体步骤:
1、修改参数文件
*.undo_management='manual'
*.undo_tablespace='SYSTEM'
#_allow_resetlogs_corruption=true
#_corrupted_rollback_segments=
(_SYSSMU1_3780397527$,_SYSSMU2_2232571081$,_SYSSMU3_2097677531$,_SYSSMU4_1152005954$,_SYSSMU5_1527469038$,_SYSSMU6_2443381498$,_SYSSMU7_3
286610060$,_SYSSMU8_2012382730$,_SYSSMU9_1424341975$,_SYSSMU10_3550978943$)
备注:上面的undo回归段是在原来数据库open时查询V$rollname视图得到的。
2、启动数据库到mount状态
SQL> startup mount;
SQL> alter database datafile 3 offline;
SQL> alter database open;
SQL> drop tablespace undotbs1 including contents and datafiles;
SQL> create undo tablespace undotbs2 datafile '/u01/app/oracle/oradata/EISOO/datafile/undo02.dbf' size 100M;
3、关闭数据库,重新更改参数文件如下:
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS2'
4、重新启动数据库
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS2
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30373263/viewspace-2109202/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30373263/viewspace-2109202/
本文介绍了一种解决Oracle数据库中损坏的UNDO表空间的方法。通过将SYSTEM表空间设置为临时UNDO表空间,使数据库能够启动,并随后创建新的UNDO表空间。文章详细记录了每一步的操作命令。

180

被折叠的 条评论
为什么被折叠?



