今天安装oracle的服务器宕机了,重启了一下系统(linux环境),之后重启oracle时,发现有一个实例一直启动失败,错误如下:
ORA-00604:递归SQL级别1出现错误
ORA-00376:此时无法读取文件2
ORA-01110:数据文件2:'/oradata/SGDCODS/SGDCODS/undotbs01.dbf'
在网上查找了一下,是undo表空间出现了问题,根据网上的经验,在/oradata/SGDCODS/SGDCODS目录下重新创建了一个名为undotbs02.dbf的表空间,使用alter system set undo_tablespace=undotbs02语句更改了默认的undo表空间位置,之后重新启动数据库,提示数据库启动成功 Database opened。但是,当我使用PL/SQL登录数据库时,仍然提示上面那三个错误,无法通过PL/SQL登录数据库,请教各位高手,帮忙看看这是什么原因,该如何解决?
ORA-00604:递归SQL级别1出现错误
ORA-00376:此时无法读取文件2
ORA-01110:数据文件2:'/oradata/SGDCODS/SGDCODS/undotbs01.dbf'
在网上查找了一下,是undo表空间出现了问题,根据网上的经验,在/oradata/SGDCODS/SGDCODS目录下重新创建了一个名为undotbs02.dbf的表空间,使用alter system set undo_tablespace=undotbs02语句更改了默认的undo表空间位置,之后重新启动数据库,提示数据库启动成功 Database opened。但是,当我使用PL/SQL登录数据库时,仍然提示上面那三个错误,无法通过PL/SQL登录数据库,请教各位高手,帮忙看看这是什么原因,该如何解决?
alter database datafile '/oradata/SGDCODS/SGDCODS/undotbs01.dbf' offline;
2.2.2 切换UNDO 表空间1、建立新的表空间UNDOTBS2
SQL> CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'F:\backup\undo03.dbf' size 100M reuse;
表空间已创建。2、切换到新建的UNOD表空间上来,操作如下
SQL> alter system set undo_tablespace=UNDOTBS2 scope=both;
系统已更改。3、将原来的UNDO表空间,置为脱机:
SQL> alter tablespace UNDO offline;表空间已更改。4、删除原来的UNDO表空间:
SQL> drop tablespace UNDO including contents AND DATAFILES CASCADE CONSTRAINTS ;
表空间已删除。如果只是drop tablespace UNDO ,则只会在删除控制文件里的记录,并不会物理删除文件。
Drop undo表空间的时候必须是在未使用的情况下才能进行。如果undo表空间正在使用(例如事务失败,但是还没有恢复成功),那么drop表空间命令将失败。在drop表空间的时候可以使用including contents。
参考:
Oracle undo 表空间管理:
http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5689558.aspx
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977(满)
DBA3 群:62697850 DBA 超级群:63306533;
聊天 群:40132017
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
1、启动sqlplus,使用sys登录系统
sqlplus /nolog
connect /as sysdba
startup
此时会出现上面的几个错误
2、创建一个新的表空间
create undo tablespace undotbs02 datafile '/oradata/SGDCODS/SGDCODS/UNDOTBS02.dbf' size 1000m autoextend on next 800m maxsize unlimited;
3、alter system set undo_tablespace=UNDOTBS02 scope=both
4、使用show parameter undo语句查看,undo表空间已经是UNDOTBS02了,重启数据库
但是使用plsql登录时还是报那几个错误
查查dba_rollback_segs,最好把你的错误的信息给详细一些。以便判断。
目前的错误信息就是在数据库启动时提示:
ORA-00604:递归SQL级别1出现错误
ORA-00376:此时无法读取文件2
ORA-01110:数据文件2:'/oradata/SGDCODS/SGDCODS/undotbs01.dbf'
alter database create datafile '/oradata/SGDCODS/SGDCODS/undotbs01.dbf';
set autorevovery on;
recover datafile '/oradata/SGDCODS/SGDCODS/undotbs01.dbf';
alter database datafile '/oradata/SGDCODS/SGDCODS/undotbs01.dbf' online;
shutdown immediate;
startup;