1.问题描述
Oracle服务器断电重启以后无法数据库无法正常连接,使用sqlplus envision/envision连接报错。常见的错误有以下这些:
ORA-12518: TNS:listener could not hand off client connection
ORA-12560: TNS:protocol adapter error
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
ORA-12514: TNS:listener does not currently know of service requested in
connect descriptor
ORA-00600:[4194]
2.基本处理
上述这些ORA报错,基本可以归类为一下几种:
环境变量ORACLE_SID是否为prjdb,如果不是就设置环境变量
TNSListener服务是否启动,如果没有启动就重新启动一下。
prjdb这个oracle服务是否启动,如果没有启动就启动一下
使用dba身份能否连接oralce。
3.查看日志确认问题
将上面的这些问题都过一遍,并且都操作一遍以后发现问题还是没有解决,此时我们可以查看oracle 的alert log。我的alert
log的路径为:
D:\app\oracle\diag\rdbms\prjdb\prjdb\trace\alert_prjdb.txt
打开alert
log文件,找到日志的最后一行,发现行号是1003417,如下图所示:
接着尝试重启oracle服务,
重启完毕以后再次查看log文件,看看日志有什么错误。当我们找到ora-00600[4194]的时候,就定位到undo表空间文件损坏这个问题。最后解决方法就是重建undo表空间。
4.问题处理步骤:重建undo表空间
4.1思路:
在INITprjdb.ora这个配置文件中将undo表空间指向系统表空间system,然后删除undo表空间,最后在创建undo表空间,最后再在INITprjdb.ora这个配置文件中将undo表空间指向刚刚创建的undo表空间。
4.2查看表空间
select * from v$tablespace;
4.3查看undo表空间
show parameter undo
4.4管理员身份登陆:
sqlplus / as sysdba
4.5创建pfile
create pfile from spfile;
关闭实例
shutdown immediate
修改INITprjdb.ora参数
undo_management=MANUAL
undo_tablespace= SYSTEM
启动数据库
在修改INITprjdb.ora以后,以INITprjdb.ora这个参数文件中的配置启动oracle实例
$SQL> startup pfile=D:\app\oracle\product\11.2.0\dbhome_1\database\INITprjdb.ora
ORACLE instance started.
Total System Global Area857903104bytes
Fixed Size1377952bytes
Variable Size503318880bytesDatabase Buffers 348127232bytes
Redo Buffers5079040bytesDatabasemounted.Database opened.
删除undo表空间
因为重新指定了undo表空间,所以我们可以将undotbs1这个表空间删除
SQL> drop tablespace undotbs1 including CONTENTS;
重建表空间
CREATE SMALLFILE UNDO TABLESPACE UNDOTBS1 DATAFILE ‘D:\app\oracle\oradata\prjdb\UNDOTBS01.DBF‘ SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 8G;
重新创建pfile
create pfile from spfile;
重启oracle数据库
原文:http://www.cnblogs.com/xwdreamer/p/3778383.html