oracle 11g ORA-00845錯誤解決

今天,一同事問到了/dev/shm目錄下爲什麼會有很多以ora_開頭的文件,都有什麼用途。雖然經常在linux系統下看到shm設備,但卻從沒有太多的關心shm到底是幹什麼用的。爲此,特地在網上找了資料,下面作了個小整理:

(1)什麼是/dev/shm

它 就是所謂的tmpfs,從名字可以看出是一個臨時的文件系統,有人說跟ramdisk(虛擬磁盤),但不一樣。使用/dev/shm的好處就是讀取數據相 當快,因爲典型的 tmpfs 文件系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。同時,要注意的是,在/dev/shm中的文件在系統重啓後會被清除掉。

tmpfs默認大小一般爲物理內存的一半,當然可以修改tmpfs的大小。一般在fstab上可以看到

tmpfs /dev/shm tmpfs defaults 0 0

如果要將tmpfs的大小修改爲4G,可以對上面的做適當的修改即可,如:

tmpfs /dev/shm tmpfs defaults,size=4096M 0 0

(2)/dev/shm對oracle 11g的影響

ORACLE 從11g版本開始,引入了一個自動內存管理(Automatic Memory Management)特性,該特性需要更多的共享內存(/dev/shm),因此如果決定應用該特性的話, 必須要確保共享內存大於ORACLE 中初始化參數MEMORY_MAX_TARGET 和MEMORY_TARGET(特別提示,這兩個參數即自動內存管理特性對應的初始化參數)的值。
如果在初始化參數中設置了MEMORY_MAX_TARGET 和MEMORY_TARGET 兩參數爲非0 值,並且不符合系統共享內存,則ORACLE 數據庫啓動時,就會觸發ORA-00845:MEMORY_TARGET not supported on this system 錯誤。

下面的摘自yangtingkun的技術文檔:

http://yangtingkun.itpub.net/post/468/408235

Oracle 11gLinux版本在修改了MEMORY_TARGET或者SGA_TARGET後啓動可能會報錯:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system


這個問題是由於設置SGA的大小超過了操作系統/dev/shm的大小:

[root@enterprice64 ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 4089416 0 4089416 0% /dev/shm

Oraclemetalink的文檔:Doc ID:Note:460506.1中進行了說明。解決這個問題只有兩個方法,一種是修改初始化參數,使得初始化參數中SGA的設置小於/dev/shm的大小,另一種方法就是調整/dev/shm的大小。

修改/dev/shm的大小可以通過修改/etc/fstab來實現:

[root@enterprice64 ~]# vi /etc/fstab

LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
#tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=10240M 0 0
LABEL=/home /home ext3 defaults 1 2
LABEL=/opt /opt ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
LABEL=SWAP-sda8 swap swap defaults 0 0
~
~
"/etc/fstab" 13L, 965C written
[root@enterprice64 ~]# umount /dev/shm
[root@enterprice64 ~]# mount /dev/shm
[root@enterprice64 ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 10485760 0 10485760 0% /dev/shm
[root@enterprice64 ~]# su - oracle
[oracle@enterprice64 ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on Tue Oct 23 15:42:42 2007

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4743446528 bytes
Fixed Size 2143824 bytes
Variable Size 3892316592 bytes
Database Buffers 805306368 bytes
Redo Buffers 43679744 bytes
Database mounted.
Database opened.

修改/etc/fstab,重新mount /dev/shm,然後就可以啓動數據庫了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章