ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 8i数据库ORA-01092的诊断

oracle 8i数据库ORA-01092的诊断

原创 Linux操作系统 作者:myownstars 时间:2012-05-02 12:57:10 0 删除 编辑
OS: sun OS 5.8
DB: oracle 8.1.7
症状:登陆数据库总报告ORA-01092
 
$  uname -r
5.8
$ export ORACLE_HOME=/opt/oracle/u01/app/oracle/product/8.1.7
$ export ORACLE_SID=AAA
$ $ORACLE_HOME/bin/sqlplus "/ as sysdba"
SQL*Plus: Release 8.1.7.0.0 - Production on Wed May 2 03:39:51 2012
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
ERROR:
ORA-01092: ORACLE instance terminated. Disconnection forced

Enter user-name: ^C
$ truss -aefo login_AAA.log $ORACLE_HOME/bin/sqlplus "/ as sysdba"
SQL*Plus: Release 8.1.7.0.0 - Production on Wed May 2 03:55:02 2012
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
ERROR:
ORA-01092: ORACLE instance terminated. Disconnection forced

Enter user-name:
跟踪文件看不出个名堂,查看alertlog,发现已经很久没有更新信息
用ipcs检查系统中共享内存段的使用情况,发现好几个nattach=0的
$  ipcs -a | grep dba | grep m
m       2101   0x700a235c --rw-r-----   oracle      dba   oracle      dba     18  419438592 29224 20355  4:48:50  4:48:50  9:24:57
m       2802   0x124ee5c0 --rw-r-----   oracle      dba   oracle      dba     11  239075328 29408 20353  4:48:50  4:48:50  9:26:04
m       1503   0x89c085d8 --rw-r-----   oracle      dba   oracle      dba      8  140877824   698 20351  4:48:49  4:48:49  9:31:50
m       1804   0x97840f30 --rw-r-----   oracle      dba   oracle      dba     10  239075328 29826 19490  4:44:01  4:44:33  9:29:29
m        605   0x21f5182c --rw-r-----   oracle      dba   oracle      dba     15  507510784    35 20218  4:47:52  4:47:53  9:30:02
m          6   0x4f49bad8 --rw-r-----   oracle      dba   oracle      dba      0   35471360 11451 20344  4:48:45  4:48:45 13:43:12
m        407   0x7e9d7300 --rw-r-----   oracle      dba   oracle      dba     17  759169024   286 20139  4:46:14  4:46:57  9:30:39
m        608   0xd6cd3820 --rw-r-----   oracle      dba   oracle      dba      7   16375808  1214 18751  4:48:46  4:48:52  9:32:44
m        209   0x79000cad --rw-rw-rw-   oracle      dba   oracle      dba      0        404 12949 19487 16:01:01 16:01:20 15:20:23
m         10   0x79033087 --rw-rw-rw-   oracle      dba   oracle      dba      0        404 24986 25539 16:46:04 17:12:07 16:41:37
m         11   0x79623087 --rw-rw-rw-   oracle      dba   oracle      dba      0        404 21962 21987 15:25:01 15:25:01 15:25:00
m        112   0x79cd0087 --rw-rw-rw-   oracle      dba   oracle      dba      0        404  2243  2273  5:51:55  5:51:56  5:51:53
m        113   0x7923e087 --rw-rw-rw-   oracle      dba   oracle      dba      0        404 28770 28825 17:38:11 17:38:11 17:38:10
m         14   0x796f5087 --rw-rw-rw-   oracle      dba   oracle      dba      0        404 23509 23516  6:28:10  6:28:11  6:28:09
m       2815   0x5bbd08f0 --rw-r-----   oracle      dba   oracle      dba      8   35471360  1382 19190  4:40:58  4:41:44  9:33:22
采用ipcrm -m悉数清除nattach为0的共享内存段,此后可以通过sqlplus成功登陆
$ $ORACLE_HOME/bin/sqlplus "/ as sysdba"
SQL*Plus: Release 8.1.7.0.0 - Production on Wed May 2 04:50:22 2012
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
Connected to an idle instance.
SQL> startup nomount;  
ORACLE instance started.
Total System Global Area   34427040 bytes
Fixed Size                    73888 bytes
Variable Size              32624640 bytes
Database Buffers            1638400 bytes
Redo Buffers                  90112 bytes
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode
SQL> select status from v$instance;
STATUS
-------
STARTED
SQL> show parameter control
NAME                                 TYPE    VALUE
------------------------------------ ------- ------------------------------
control_file_record_keep_time        integer 7
control_files                        string  /opt/oracle/u06/AAA/control
                                             01.ctl, /opt/oracle/u07/AAA
                                             /control02.ctl
使用fuser查看哪些进程占用了控制文件
$ fuser control01.ctl
control01.ctl:     1399o    1391o    1389o    1387o
$ fuser control01.ctl
control01.ctl:     1399o    1391o    1389o    1387o
$ ps -ef | grep 1399
  oracle 21568 10804  0 04:55:23 pts/1    0:00 grep 1399
  oracle  1399     1  0   Apr 12 ?        0:00 ora_arc0_BBB
有的怪异,别的instance的arch进程居然在访问其控制文件。
几分钟后BBB莫名其妙的down了(alertlog显示DBWR异常退出导致数据库崩溃),AAA可以正常启动。
查看BBB的参数文件,发现和AAA的一样,只是文件以BBB命名而已;看来是有人复制了AAA的参数文件,将其以BBB的名义启动,所以客户端无法以SID=AAA模式连接数据库了.

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

请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3052250