oracle 8i資料庫ORA-01092的診斷

myownstars發表於2012-05-02
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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章