3

Whilst installing Oracle 11gR2 Express Edition on Ubuntu 12.04 by following the Oracle 11gR2 Express Edition on Linux Ubuntu 11.10 howto and have encountered the Oracle memory target problem with /dev/shm (as documented in section 7. of that guide) since /dev/shm is now implemented by default as a symbolic link as noted in the Ubuntu 11.10 release notes from /dev/shm to /run/shm. The symbolic link is incompatible with what Oracle expects and this results in an Oracle error (ORA-00845: MEMORY_TARGET) on database startup.

Section 7) of the 'Oracle 11gR2 Express Edition on Linux Ubuntu 11.10 howto' documents a startup script /etc/init.d/oracle-shm that is meant to configure /dev/shm to use Ubuntu’s /run/shm, however this does not appear to have the desired effect on Ubuntu 12.04 and /dev/shm is not mounted as expected - presumably it did work on 11.10. Although this has already been noted and various solutions proposed I chose to work around the problem in a slightly different way by adding an entry to /etc/fstab and modifying the /etc/init.d/oracle-shm script as follows:

  1. Adding an entry for the shared memory temporary file system to /etc/fstab, say (for a 2 gigabyte file)

    shm /dev/shm    tmpfs   size=2g 0   0
    
  2. Changing the mount line in /etc/init.d/oracle-shm from:

    rm -f /dev/shm  
    mkdir /dev/shm
    mount -B /run/shm /dev/shm
    

    to simply

    rm -f /dev/shm
    mkdir /dev/shm 
    mount /dev/shm
    

Regardless, all the proposed solutions involve undoing the default Ubuntu behaviour at bootup, by first removing the symbolic link and then implementing the desired behaviour.

I would like to be able to setup the shared memory file system once and for all by:

  1. Adding an entry for the shared memory temporary file system to /etc/fstab, say (for a 2 gigabyte file)

    shm /dev/shm    tmpfs   size=2g 0   0
    
  2. Remove the existing symbolic link to /dev/shm and create as a directory, as sudo.

    rm –f /dev/shm
    mkdir /dev/shm
    
  3. Mounting the shared memory temporary file system

    mount /dev/shm
    

This all works fine until you reboot, at which point the symbolic link from /dev/shm to /run/shm re-appears instead of /dev/shm being mounted as a shared memory temporary file system.

Here’s the question then.

How can I modify the default behaviour of Ubuntu 12.04 (& 12.10) to prevent a symbolic link from /dev/shm to /run/shm ever being created in the first place on boot up?

action=show&redirect=OneiricOcelot/TechnicalOverview#Upgrades

bender
  • 1,854

1 Answers1

5

In /etc/init/mounted-dev.conf remove the line

 [ -e /dev/shm ] || ln -s /run/shm /dev/shm