一次資料庫無法啟動問題的處理-ORA-00845
問題描述:
虛擬機器上的兩個例項都連線不上。現象如下。
我嘗試將listener.ora、tnsnames.ora備份後,用netca重建兩個檔案以及sqlnet.ora,但沒有任何效果。
現象為:
[oracle@localhost ~]$ set oracle_sid=testdb
[oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 2 04:39:40 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup nomount
ORA-00845: MEMORY_TARGET not supported on this system
SQL> exit
Disconnected
[oracle@localhost ~]$ pwd
/u01/oracle
[oracle@localhost ~]$ cd network/admin
[oracle@localhost admin]$ ll
total 88
-rw-r--r-- 1 oracle oinstall 293 Oct 27 11:35 listener12102711AM3507.bak
-rw-r--r-- 1 oracle oinstall 293 Oct 27 05:59 listener1210275AM5907.bak
-rw-r--r-- 1 oracle oinstall 293 Oct 27 09:00 listener1210279AM0036.bak
-rw-r--r-- 1 oracle oinstall 420 Nov 2 03:53 listener1211023AM5358.bak
-rw-r--r-- 1 oracle oinstall 293 Nov 2 04:24 listener1211024AM2452.bak
-rw-r--r-- 1 oracle oinstall 293 Nov 2 04:27 listener.ora
-rw-r--r-- 1 oracle oinstall 489 Oct 27 09:51 listener.ora-tianleibak
drwxr-xr-x 2 oracle oinstall 4096 Oct 26 18:45 samples
-rw-r--r-- 1 oracle oinstall 187 May 9 2007 shrept.lst
-rw-r--r-- 1 oracle oinstall 212 Oct 27 11:35 sqlnet12102711AM3507.bak
-rw-r--r-- 1 oracle oinstall 212 Oct 27 09:52 sqlnet1210279AM5215.bak
-rw-r--r-- 1 oracle oinstall 213 Nov 2 03:53 sqlnet1211023AM5358.bak
-rw-r--r-- 1 oracle oinstall 213 Nov 2 04:24 sqlnet1211024AM2452.bak
-rw-r--r-- 1 oracle oinstall 212 Oct 28 16:33 sqlnet.orabak-tl
-rw-r--r-- 1 oracle oinstall 213 Nov 2 04:27 sqlnet.orabak-tl-2
-rw-r--r-- 1 oracle oinstall 316 Oct 27 11:35 tnsnames12102711AM3507.bak
-rw-r--r-- 1 oracle oinstall 312 Oct 27 05:59 tnsnames1210275AM5907.bak
-rw-r--r-- 1 oracle oinstall 312 Oct 27 09:00 tnsnames1210279AM0036.bak
-rw-r--r-- 1 oracle oinstall 580 Nov 2 03:53 tnsnames1211023AM5358.bak
-rw-r--r-- 1 oracle oinstall 580 Nov 2 04:24 tnsnames1211024AM2452.bak
-rw-r--r-- 1 oracle oinstall 490 Nov 2 04:27 tnsnames.ora
-rw-r----- 1 oracle oinstall 312 Oct 27 09:51 tnsnames.ora-tianleibak
[oracle@localhost admin]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 02-NOV-2012 04:41:44
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
[oracle@localhost admin]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 02-NOV-2012 04:42:00
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /u01/oracle/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/oracle/network/admin/listener.ora
Log messages written to /u01/diag/tnslsnr/localhost/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 02-NOV-2012 04:42:01
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
The listener supports no services
The command completed successfully
由於報出的問題是連線方面的,因此一直在幾個檔案上查詢原因。但可以確定,並未手工進行檔案的修改。
又進行了一遍分析,覺得這個操作比較可疑:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
[oracle@localhost alert]$ oerr ora 00845
00845, 00000, "MEMORY_TARGET not supported on this system"
// *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was
not sized correctly on Linux.
// *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to
be at least the SGA_MAX_SIZE on each Oracle instance running on the system.
[oracle@localhost admin]$ df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
17824 14033 2872 84% /
/dev/sda1 99 12 82 13% /boot
tmpfs 484 232 252 48% /dev/shm
/dev/hdc 2875 2875 0 100% /media/RHEL_5.3 i386 DVD
[oracle@localhost dbs]$ strings spfiletestdb.ora |grep memory
*.memory_target=403701760
/dev/shm中的可用空間時252M,而引數檔案中配置的大小是近400M,看來問題出在這裡。
因此想到將memory_target引數暫時改小一點,但又不知道如何生效。
網上查詢了一下,一篇很有幫助的部落格:http://ibmcn.blog.51cto.com/510174/766996
按其方法嘗試:
[root@localhost ~]# umount /dev/shm
[root@localhost ~]# mount /dev/shm
[root@localhost ~]# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
17824 14036 2868 84% /
/dev/sda1 99 12 82 13% /boot
tmpfs 1024 0 1024 0% /dev/shm
[root@localhost ~]# su - oracle
[oracle@localhost ~]$ set oracle_sid=testdb
[oracle@localhost ~]$ sqlplus /nolog
conn /as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 2 07:02:03 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL>
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 405929984 bytes
Fixed Size 1336848 bytes
Variable Size 310381040 bytes
Database Buffers 88080384 bytes
Redo Buffers 6131712 bytes
SQL> alter database mount
2 ;
Database altered.
SQL> alter database open;
Database altered.
終於成功了
=========================================
那麼剛才想到的修改引數的方法怎麼做呢?
我們用該虛擬機器上的另一個資料庫來實驗。(故障現象是一樣的,db_name=succ)
[root@localhost dbs]# pwd
/u01/oracle/dbs
[root@localhost dbs]# strings spfilesucc.ora >pfilesucc.ora
[root@localhost dbs]# cat pfilesucc.ora |grep mem
//結果為空
[root@localhost dbs]# su - oracle
[oracle@localhost ~]$ set oracle_sid=succ
[oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 2 08:04:03 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 405929984 bytes
Fixed Size 1336848 bytes
Variable Size 310381040 bytes
Database Buffers 88080384 bytes
Redo Buffers 6131712 bytes
Database mounted.
Database opened.
很遺憾,另一個資料庫中沒有引數memory_target。
而我想到的方法:通過spfile生成pfile,再對其修改然後用其啟動資料庫的方法 無法驗證。感覺上可能會有問題,不過也算是一種思路,記錄下來吧!
另外查了一下/dev/shm,這是一個類似虛擬磁碟的掛載點,成為tmpfs,可以使用RAM,也可以使用交換分割槽來儲存,系統重啟後將釋放,處理速度很快。
=======================================
然後說說我對這三個檔案的認識,供拍磚。
listener.ora
監聽檔案,告訴oracle需要在哪臺伺服器的哪個埠上用什麼協議監聽,通過netca/listener configuration配置
tnsnames.ora
網路服務名配置檔案,將完整的連線名稱轉化為一個別名,從而方便使用者呼叫,通過netca/Local Net Service Name Configuration配置
sqlnet.ora
11g中可以不存在此物理檔案。儲存了密碼驗證方式、資料錢包等資訊,主要是安全性方面的配置,通過netca/Naming Method Configuration新增
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-748540/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- Windows 下處理資料庫無法啟動問題Windows資料庫
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- 資料庫異常關閉後無法啟動問題處理一例資料庫
- 資料庫shutdown之後無法啟動的問題資料庫
- 【問題處理】因ASM磁碟組空間不足導致資料庫例項無法啟動的故障處理ASM資料庫
- 歸檔問題導致的資料庫無法啟動資料庫
- Oracle日常問題-資料庫無法啟動(案例二)Oracle資料庫
- 掉電無法啟動資料庫問題解決資料庫
- 一次OWB資料庫效能問題處理資料庫
- Oracle資料庫無效物件問題處理Oracle資料庫物件
- 一次資料庫不能歸檔問題的處理資料庫
- 記一次AR無法拋GL問題處理
- 記一次NM無法拋GL問題處理
- 一次資料庫無法登陸的問題及排查資料庫
- 一次資料庫無法登陸的"問題"及排查資料庫
- 【轉】 一次資料庫不能歸檔問題的處理資料庫
- 由於目錄變更引起的資料服務無法啟動的問題處理記錄
- 加大memory_max_target後,資料庫啟動報ora-00845錯誤處理資料庫
- 處理Oracle 11gR2 RAC資料庫資源不能自動啟動的問題Oracle資料庫
- 資料庫主機重啟卡住問題處理分享資料庫
- 資料庫啟動問題資料庫
- ORA-00845 : MEMORY_TARGET not supported on this system(調大資料庫記憶體無法啟動)大資料資料庫記憶體
- 資料庫無響應問題的緊急處理和分析資料庫
- Oracle啟動問題處理Oracle
- memory_target設定不當導致資料庫無法啟動的問題資料庫
- 處理Oracle 11gR2 RAC資料庫資源不能自動啟動的問題 (轉)Oracle資料庫
- 記一次 Ubuntu 服務 Nginx 無法啟動問題UbuntuNginx
- MYSQL資料庫服務無法啟動MySql資料庫
- 某省ORACLE10G RAC資料庫CRS啟動失敗問題處理Oracle資料庫
- 一次資料庫hang的處理資料庫
- 記一次 Ubuntu 伺服器 Nginx 無法啟動問題Ubuntu伺服器Nginx
- 資料庫響應慢問題處理資料庫
- ASM無法啟動的問題分析(一)ASM
- ASM無法啟動的問題分析(二)ASM
- Dede呼叫資料庫失敗,無法實現資料處理資料庫
- undo壞塊引起資料庫無法啟動資料庫
- 一次資料庫HANG處理資料庫