Oracle数据库故障处理方法

Posted 枫哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库故障处理方法相关的知识,希望对你有一定的参考价值。

1.启动数据库报错:ORA-01102:cannot mount database in EXCLUSIVE mode

给客户处理oracle故障,遇到如下报错:

以sys登录至数据库,执行shutdown immediate; startup;命令报错如下:

技术图片

数据库默认以独占(EXCLUSIVE)方式启动,发生ORA-01102错误可能有如下因素

(1)在"ORACLE_HOME/dbs"的目录下是否存在sgadef.dbf文件

(2)在"ORACLE_HOME/dbs"的目录下是否存在文件lk<实体名>

解决方法

(1)以oracle用户的身份登录至系统或使用其它身份登录至系统切换至oracle用户

#xshell方法登录:ssh oracle@IP地址
#如果是已经使用其它用户登录,请切换至oracle
[admin@maple ~]$ su - oracle   #如是普通用户登录切换,需要输入oracle的密码

(2)查看数据库有几个实例

[oracle@maple ~]$ ps -ef|grep lgwr

(3)使用sys登录至数据库

[oracle@maple ~]$ sqlplus / as sysdba
SQL> show parameter name;
SQL> select open_mode from v$database;

技术图片

(4)如果"ORACLE_HOME/dbs"的目录下存在sgadef.dbf文件,请先备份,再将此文件删除。待问题解决后,再建议将此文件的备份给删除

#ORACLE_HOME=/ora/oracle/produce/11.2.0/db_1
[oracle@maple ~]$ ls /ora/oracle/produce/11.2.0/db_1/dbs/sgadef*    #查看是否有sgadef<sid>.dbf文件
#如果查询到有此文件,请先备份,再删除,或者直接使用mv命令改名
[oracle@maple ~]$ cd /ora/oracle/produce/11.2.0/db_1/dbs
[oracle@maple ~]$ mv sgadef<sid>.dbf sgadef<sid>.dbf.bak

(5)如果"ORACLE_HOME/dbs"的目录下存在文件lk<实体名>,则需要如下操作

#ORACLE_HOME=/ora/oracle/produce/11.2.0/db_1
[oracle@maple ~]$ ls /ora/oracle/produce/11.2.0/db_1/dbs/lk*    #查看是否有lk<实体名>文件
#如果存在此文件,则使用如下方法
[oracle@maple ~]$ fuser -u lk<实体名>    #查看lk<实体名>文件是否是oracle用户启动
[oracle@maple ~]$ fuser -k lk<实体名>    #结束掉lk<实体名>

(6)在oracle用户下,启动监听,再使用sysplus登录,启动数据库服务

[oracle@maple ~]$ lsnrctl start
[oracle@maple ~]$ sqlplus / as sysdba
SQL>startup

技术图片

技术图片

以上是关于Oracle数据库故障处理方法的主要内容,如果未能解决你的问题,请参考以下文章

Oracle数据库无响应故障处理方式

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

有关Oracle数据库的备份情况

Oracle数据库监听非常慢,基本hang住故障处理

Oracle--OEM与常见故障处理

Oracle(OEM与常见故障处理)