您好,登錄后才能下訂單哦!
環境:RHEL6.6+11gR2RAC
由于虛擬環境搭建rac做測試,設置虛機內存為3G,打補丁導致pc機太慢,因此調整兩臺虛擬機內容為2534M內存,啟動虛擬后發現數據庫無法啟動,嘗試在單節點手工啟動報如下錯誤:
oracle@cluster2 ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Sat May 28 01:03:24 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
SQL>
查找資料后發現問題如下,見MOS ID 460506.1
在oracle 11g中新增的內存自動管理的參數MEMORY_TARGET,它能自動調整SGA和PGA,這個特性需要用到/dev/shm共享文件系統,而且要求/dev/shm必須大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就會報錯。
查看警告日志爆出如下信息:
Starting ORACLE instance (normal)
WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 1207959552 bytes. /dev/shm is either not mounted or is moun
ted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 1101058048 and used is 120430592 bytes. Ensure that the mount po
int is /dev/shm for this directory.
memory_target needs larger /dev/shm
解決方案
1.初始化參數MEMORY_TARGET或MEMORY_MAX_TARGET不能大于/dev/shm,為了解決這個問題,可以增大/dev/shm
如:
mount -t tmpfs shmfs -o size=3g /dev/shm
2.為了確保操作系統重啟之后能生效,需要修改/etc/fstab文件。
tmpfs /dev/shm tmpfs defaults,size=3g 0 0
3.如果/dev/shm沒有掛載也會報上面的錯,所以需要確保已經掛載。
修改后重啟服務器查看如下:
[grid@cluster2 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 71G 20G 48G 30% /
tmpfs 3.0G 412M 2.6G 14% /dev/shm
/dev/sda1 190M 29M 151M 16% /boot
[grid@cluster2 ~]$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 25 00:45:01 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=78a45723-e057-4055-a9b6-251acb2e6bb2 / ext4 defaults 1 1
UUID=29aae331-4dbe-4bf6-93d2-dc9eed0366f3 /boot ext4 defaults 1 2
UUID=68b77663-849b-4c80-891f-da37b671d992 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=3G 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
[grid@cluster2 ~]$
查看數據庫已經啟動。
[root@cluster2 ~]# su - grid
c[grid@cluster2 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE cluster1
ONLINE ONLINE cluster2
ora.FRA.dg
ONLINE ONLINE cluster1
ONLINE ONLINE cluster2
ora.LISTENER.lsnr
ONLINE ONLINE cluster1
ONLINE ONLINE cluster2
ora.OCR_VOTE.dg
ONLINE ONLINE cluster1
ONLINE ONLINE cluster2
ora.asm
ONLINE ONLINE cluster1 Started
ONLINE ONLINE cluster2 Started
ora.gsd
OFFLINE OFFLINE cluster1
OFFLINE OFFLINE cluster2
ora.net1.network
ONLINE ONLINE cluster1
ONLINE ONLINE cluster2
ora.ons
ONLINE ONLINE cluster1
ONLINE ONLINE cluster2
ora.registry.acfs
ONLINE ONLINE cluster1
ONLINE ONLINE cluster2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE cluster2
ora.cluster.db
1 ONLINE ONLINE cluster1 Open
2 ONLINE ONLINE cluster2 Open
ora.cluster1.vip
1 ONLINE ONLINE cluster1
ora.cluster2.vip
1 ONLINE ONLINE cluster2
ora.cvu
1 ONLINE ONLINE cluster1
ora.oc4j
1 ONLINE ONLINE cluster1
ora.scan1.vip
1 ONLINE ONLINE cluster2
以下信息摘自網絡:
一、/dev/shm理論
/dev/shm/是linux下一個非常有用的目錄,因為這個目錄不在硬盤上,而是在內存里。因此在linux下,就不需要大費周折去建ramdisk,直接使用/dev/shm/就可達到很好的優化效果。 /dev /shm/需要注意的一個是容量問題,在linux下,它默認最大為內存的一半大小,使用df -h命令可以看到。但它并不會真正的占用這塊內存,如果/dev/shm/下沒有任何文件,它占用的內存實際上就是0字節;如果它最大為1G,里頭放有 100M文件,那剩余的900M仍然可為其它應用程序所使用,但它所占用的100M內存,是絕不會被系統回收重新劃分的,否則誰還敢往里頭存文件呢?
默認系統就會加載/dev/shm ,它就是所謂的tmpfs,有人說跟ramdisk(虛擬磁盤),但不一樣。象虛擬磁盤一樣,tmpfs 可以使用您的 RAM,但它也可以使用您的交換分區來存儲。而且傳統的虛擬磁盤是個塊設備,并需要一個 mkfs 之類的命令才能真正地使用它,tmpfs 是一個文件系統,而不是塊設備;您只是安裝它,它就可以使用了。
tmpfs有以下優勢:
1,動態文件系統的大小。
2,tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 文件系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。
3,tmpfs 數據在重新啟動之后不會保留,因為虛擬內存本質上就是易失的。所以有必要做一些腳本做諸如加載,綁定的操作。
二、修改/dev/shm大小
默認的最大一半內存大小在某些場合可能不夠用,并且默認的inode數量很低一般都要調高些,這時可以用mount命令來管理它。
#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
在2G的機器上,將最大容量調到1.5G,并且inode數量調到1000000,這意味著大致可存入最多一百萬個小文件。
如果需要永久修改/dev/shm的值,需要修改/etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0
#mount -o remount /dev/shm
三、/dev/shm應用
首先在/dev/shm建個tmp文件夾,然后與實際/tmp綁定
#mkdir /dev/shm/tmp
#chmod 1777 /dev/shm/tmp
#mount –bind /dev/shm/tmp /tmp(–bind )
在使用mount –bind olderdir newerdir命令來掛載一個目錄到另一個目錄后,newerdir的權限和所有者等所有信息會發生變化。掛載后的目錄繼承了被掛載目錄的所有屬性,除了名稱。Oracle 11g的amm內存管理模式就是使用/dev/shm,所以有時候修改MEMORY_TARGET或者MEMORY_MAX_TARGET會出現ORA-00845的錯誤
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。