ITPub博客

首页 > Linux操作系统 > Linux操作系统 > UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决

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

原创 Linux操作系统 作者:wzhalal 时间:2013-09-30 17:13:01 0 删除 编辑
模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除

模拟启库

SQL> STARUP;

*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 2: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.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:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF'


SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------
undo_management                      string      MANUAL
undo_retention                       integer     900
undo_tablespace                      string      system
SQL>
SQL>
SQL> alter database datafile 2 offline;

数据库已更改。

SQL> alter database open;

数据库已更改。


SQL> create undo tablespace undotbs02 datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA
\ORCL\UNDOTBS02.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:\oracle\product\10.2.0\admin\interlib\bdump\interlib_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

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

上一篇: ORACLE 常用 函数
请登录后发表评论 登录
全部评论

注册时间:2013-06-06

  • 博文量
    60
  • 访问量
    249560