ORA-00845: MEMORY_TARGET not supported on this system

ORA-00845: MEMORY_TARGET not supported on this system

Table of Contents

1 問題

Oracle 11G 中出現了memory_target 參數,用以實現自動 內存管理 。這個參數的實際使用 須要/dev/shm 空間的支持,若是/dev/shm的空間小於memory_target的值 ,就會遇到以下 錯誤:css

SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

alert 日誌中的信息相似以下:html

WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 53687091200 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 33619214336 and used is 26345472 bytes. Ensure that the mount point is /dev/shm for this directory.
memory_target needs larger /dev/shm

2 分析

  • 查看關於錯誤的描述 不少時候, Oracle 錯誤代碼後面的提示信息會給咱們充足的信息。可是有些時候的信息也會讓咱們有點兒懵圈。好比本次咱們須要瞭解的錯誤。 按照英文的意思,就是當前操做系統不支持使用memory_target參數。可是咱們知道, 在當前Linux操做系統中,這個參數是支持的。因此確定是有其餘緣由。關於ORACLE錯誤 更詳細的信息,可使用oerr ora errcode 。下面是本次相關錯誤的詳細信息提示:java

    [user@hostname ~]$ oerr ora 845
    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.
    

    根據提示Cause:/dev/shm was not sized correctly on Linux. 咱們知道了此錯誤的緣由,原來是由於/dev/shm 的大小有問題。 而根據提示Action: size /dev/shm to be at least the SGA_MAX_SIZE…. 這裏咱們知道了。/dev/shm 的大小至少應該大於 sga_max_size的值。node

  • 肯定相關信息python

    • 肯定/dev/shm 大小 /dev/shm 的大小,在普通Linux操做系統中默認爲系統總物理內存大小的一半。sql

      [oracle@RAS-DB ~]$ df -h
      Filesystem                      Size  Used Avail Use% Mounted on
      /dev/mapper/VolGroup-lvroot      50G   14G   34G  29% /
      tmpfs                            32G  356K   32G   1% /dev/shm
      /dev/mapper/VolGroup-lvapp       99G   39G   55G  42% /app
      /dev/sda1                       194M   35M  150M  19% /boot
      /dev/mapper/VolGroup-lvoradata  3.8T  7.5G  3.6T   1% /oradata
      /dev/sr0                        4.2G  4.2G     0 100% /media/CentOS_6.5_Final
      
    • 肯定sga_max_size大小 查看參數文件,發現文件中沒有SGA_MAX_SIZE參數值的顯示設置。而只有memory_target參數值的明確設置。shell

      *.memory_target=49152M
      

      那麼, 咱們只要讓/dev/shm 的avaliable部分的大小大於memory_target 就確定是大於sga_max_size的 ,爲啥這樣確定?Oracle基本知識不在這裏普及。數據庫

    從以上兩部份內容,咱們瞭解到當前/dev/shm多大,咱們要求shm多大。明確了咱們應該怎麼去調整/dev/shm的大小。 爲了保險起見,通常/dev/shm 大小設置爲與物理內存同樣大小便可。sass

3 解決

  • 調整/dev/shm

           mount -o size=64G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm 同時修改/etc/fstab以保證下次重啓主機後,不會出現相同的問題ruby

NOTE
有時候/dev/shm 對應的磁盤或者分區比較小,好比示例中咱們須要64G ,而實際只有32G. 有沒有想過: 空間不足呀,怎麼辦呢?其實這裏不須要關注/dev/shm對應的磁盤或者分區的 實際空間,只須要按照示例中的方法去修改,放心, 不會有問題。
tmpfs                   /dev/shm                tmpfs   default, size=64G       0 0
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lvroot      50G   14G   34G  29% /
tmpfs                            64G  4.5G   60G   8% /dev/shm
/dev/mapper/VolGroup-lvapp       99G   39G   55G  42% /app
/dev/sda1                       194M   35M  150M  19% /boot
/dev/mapper/VolGroup-lvoradata  3.8T  9.6G  3.6T   1% /oradata
/dev/sr0                        4.2G  4.2G     0 100% /media/CentOS_6.5_Final
  • 啓動數據庫

    SQL> startup
    ORACLE instance started.
    
    Total System Global Area 5.1310E+10 bytes
    Fixed Size                  2265224 bytes
    Variable Size            2.5904E+10 bytes
    Database Buffers         2.5367E+10 bytes
    Redo Buffers               36069376 bytes
    Database mounted.
    Database opened.
    

Author: halberd

Created: 2019-10-10 Thu 00:33

Validate

相關文章
相關標籤/搜索