UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决

模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除
模拟启库
SQL> STARUP;
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 2: 'C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF'

利用系统本身的默认手动管理 MANUAL UNDO 表空间 SYSTEM 启动库 
SQL> CREATE PFILE='C:PFILE20130930.ORA' FROM SPFILE;
SQL> SHUTDOWN IMMEDIATE;
编辑PFILE 文件 修改

*.undo_management='MANUAL'   
*.undo_tablespace='SYSTEM'
保存
SQL> startup  pfile='c:pfile1.ora'
ORACLE 例程已经启动。
Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              83887460 bytes
Database Buffers           79691776 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 2: 'C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF'
SQL> show parameter undo;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------
undo_management                      string      MANUAL
undo_retention                       integer     900
undo_tablespace                      string      system
SQL> alter database datafile 2 offline;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> create undo tablespace undotbs02 datafile 'C:ORACLEPRODUCT10.2.0ORADATA
ORCLUNDOTBS02.DBF' size 100M;
表空间已创建。
SQL> alter system set undo_tablespace='undotbs02' scope=spfile;
alter system set undo_tablespace='undotbs02' scope=spfile
*
第 1 行出现错误:
ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE

--因为我们是利用PFILE启动的 这个时候我们应该去修改PFILE 文件,再重新启库

*.undo_management='AUTO'   
*.undo_tablespace='UNDOTBS02'

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup  pfile='c:pfile1.ora'
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              83887460 bytes
Database Buffers           79691776 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL>
SQL>
SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS02
SQL>create spfile from pfile

文件已创建。
这里我们UNDO表空间恢复完毕

此方法还可以解决启动的时候出现ORA-600[4194]/[4193]错误
Tue Feb 14 09:34:11 2012
Errors in file d:oracleproduct10.2.0admininterlibdumpinterlib_smon_2784.trc:
ORA-01595: error freeing extent (2) of rollback segment (3))
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [6], [30], [], [], [], [], []
如果出现极端的情况可能需要做如下处理:
1.使用_offline_rollback_segments和_corrupted_rollback_segments屏蔽掉有问题的undo segment
2.继续可能出现ora-600[2662],需要推进scn


原文地址:https://www.cnblogs.com/james1207/p/3347809.html