oracle数据库释放资源,Oracle数据库案例整理-启动Oracle数据库失败-Oracle关闭时没有完全释放资源...

1.1       现象描述

启动Oracle失败,系统显示如下错误信息:

SQL> startup

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

Total System Global Area 2137886720 bytes

Fixed Size                  2122920 bytes

Variable Size            1191185240 bytes

Database Buffers          939524096 bytes

Redo Buffers                5054464 bytes

ORA-01102: cannot mount database in EXCLUSIVE mode

1.2       可能原因

异常关闭Oracle时,存在以下几种没有释放资源的可能原因:

Oracle的后台进程(如SMON、PMON、LWGW、DBWn等)没有关闭。

用于锁内存的文件“lk”和“sgadef.dbf”没有删除。

Oracle的共享内存段或信号量没有释放。

1.3       定位思路

如果是HA系统,检查其他节点是否已经启动实例。

检查Oracle进程是否存在,如果存在则删除进程。

检查锁内存文件“lk”和“sgadef.dbf”是否存在,如果存在,则删除锁内存文件。

检查共享内存段是否存在,如果存在,则清除共享内存段。

检查信号量是否存在,如果存在,则清除信号量。

1.4       处理步骤

以oracle用户登录数据库所在机器。

检查数据库在备节点上的状态。

确定备节点的实例处于关闭状态。

检查Oracle进程是否启动。

% ps -ef | grep pmon

如果进程启动,则关闭。

% kill -9Oracle进程ID

以sysdba用户连接数据库。

% sqlplus / as sysdba

以abort模式退出数据库。

SQL> shutdown abort;

重新启动数据库。

SQL> startup

如果数据库启动成功,则结束操作。

如果数据库启动失败,则执行7。

退出SQLPLUS。

SQL> quit

检查锁内存文件“lk”和“sgadef.dbf”是否被删除。

a.        进入“$ORACLE_HOME/dbs”目录。

% cd $ORACLE_HOME/dbs

b.       检查“sgadef.dbf”是否存在。

% ls sgadef*

§  如果“sgadef.dbf”文件不存在,系统提示如下信息:

sgadef* not found

§  如果“sgadef.dbf”文件存在,则删除此文件。

% rm sgadef*

c.        检查“lk”是否存在。

% ls lk*

§  如果“lk”不存在,系统提示如下信息:

lk* not found

§  如果“lk ”文件存在,则删除此文件。

% rm lk*

d.       重新启动数据库。

SQL> startup mount;

说明:

§  如果数据库启动成功,则结束操作。

§  如果数据库启动失败,则执行以下操作。

以root用户登录数据库所在机器。

栓查共享内存段是否存在。如果存在,则删除。

.         查看共享内存段。

# ipcs -map

系统显示如下信息时,表示Oracle共享内存段存在。

------ Shared Memory Creator/Last-op --------

shmid   owner  cpid    lpid

786444  root    6490   6438

819213  root    6549   6438

1409040 oracle   31502  16728

a.        根据ID号清除共享内存段。

# ipcrm –m 1409040

说明:

1409040是共享内存段ID,以系统实际查询值为准。

检查信号量是否存在。如果存在,则删除。

.         查看信号量。

# ipcs -s

系统显示如下信息时,表示Oracle信号量存在。

key       semid      owner   perms    nsems

0x17ff6454 360448     oracle    640     154

a.        清除oracle的信号量。

# ipcrm -s 360448

说明:

360448是信号量ID,以系统实际查询值为准。

b.       再次查询确认。

# ipcs -s

删除成功,系统显示如下信息:

------ Semaphore Arrays --------

key  semid  owner  perms   nsems

重新启动数据库。

SQL> startup

数据库启动成功,系统显示如下信息:

ORACLE instance started.

Total System Global Area 2137886720 bytes

Fixed Size                  2122920 bytes

Variable Size            1191185240 bytes

Database Buffers          939524096 bytes

Redo Buffers                5054464 bytes

Database mounted.

Database opened.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值