Generally you should look at two post that help you manage this problem:
Oracle Forum how-to
Links on this topic available in one place
I used first link and it worked for me. I used other blog to resolve common problem with
ORA-00845: MEMORY_TARGET not supported on this system that can look pretty
scary.
Here are repeated steps that I did:
Before installing Oracle 11g you should preinstall packages:
sudo apt-get install alien libaio1 unixodbcUbuntu does not have swap memory installed so I need to install it.
To install a 1 GB swapfile named swapfile in /, for example:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
(this may take a while)
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.orig
sudo echo '/swapfile swap swap defaults 0 0' >> /etc/fstabI used gparted for it and create separate partition as ext3. Currently Ubuntu 12.04 uses
filesystem ext4 as default and it can be not compatible with Oracle database.
You need to remember to modify fstab when you add swap space and add new partition.
Backup is also recommended.
Modify /etc/fstab to automatically mount the volume at system startup:
sudo cp /etc/fstab /etc/fstab.original
sudo nano /etc/fstab
(Add the following, using determined UUID, for example)
UUID=d19a2d8f-da43-4802-8bdb-0703c855e23a /u01 ext3 defaults,errors=remount-ro 0 1
(Save the file)
Create the mount-point, mount the new volume and set ownership and privileges:
sudo mkdir /u01
sudo mount -a
sudo chown root:root /u01
sudo chmod 755 /u01I use /opt/oracle-xe for my installation directory
Create a symbolic link to store the installation into an existing directory, for instance:
sudo mkdir /opt/oracle-xe
sudo ln -s /opt/oracle-xe /u01
Oracle Download Page
Here is what you need to type to convert it to Debian installation package.
sudo unzip linux.x64_11gR2_OracleXE.zip
sudo alien --to-deb --scripts oracle-xe-11.2.0-0.5.x86_64.rpm
(This may take a while)There are 2 config file that is good to create with pico or nano as you can paste to them
from graphical terminal unlike in vim.
sudo nano /etc/sysctl.d/60-oracle.conf(Enter the following) # Oracle 11g XE kernel parameters fs.file-max=6815744 net.ipv4.ip_local_port_range=9000 65000 kernel.sem=250 32000 100 128 kernel.shmmax=536870912 (Save the file) Note: kernel.shmmax = max possible value, e.g. size of physical RAM. Verify: sudo cat /etc/sysctl.d/60-oracle.conf Load new kernel parameters: sudo service procps startVerify: sudo sysctl -q fs.file-max -> fs.file-max = 6815744
sudo pico /sbin/chkconfig(Cut and paste the following)
#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Debian by Dude
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
   echo >> $file
   echo '### BEGIN INIT INFO' >> $file
   echo '# Provides:             OracleXE' >> $file
   echo '# Required-Start:       $remote_fs $syslog' >> $file
   echo '# Required-Stop:        $remote_fs $syslog' >> $file
   echo '# Default-Start:        2 3 4 5' >> $file
   echo '# Default-Stop:         0 1 6' >> $file
   echo '# Short-Description:    Oracle 11g Express Edition' >> $file
   echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01
(Save the file)
Set appropriate execute privileges:
chmod 755 /sbin/chkconfig
Now that you have swapfile, partition for oracle Database and 2 config files and converted install package you can make final installation procedures:
sudo dpkg --install ./oracle-xe_11.2.0-2_amd64.deb
/etc/init.d/oracle-xe configure
(This will take a while)
Remove the /sbin/chkconfig script, which is no longer needed.
sudo rm /sbin/chkconfigThen you need to setup your sqlplus client by coping it to your bash shell script:
sudo echo '. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh' >> /home/oracle/.bashrc
This are recommended package that you unpack into one folder directory:
instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip
oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.2.0.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm
After that you need to update path so we know where to look for sqlplus.
export PATH=<Your Oracle Home Path>/instantclient_11_2:$PATH
You can also create user dba and add it to oracle group, however I am not sure if it is essential:
sudo userdel oracle
sudo useradd -s /bin/bash -G dba -g dba -m oracle
sudo passwd oracleYou can start and stop service like this:
sudo service oracle-xe start|stopBut before that there is one more bug to fix:
I took this from this page Hardly readable fix
sudo rm -rf /dev/shm sudo mkdir /dev/shm sudo mount -t tmpfs shmfs -o size=2048m /dev/shm
The reason of doing all this is that on a Ubuntu system /dev/shm is just a link to /run/shm but Oracle requires to have a seperate /dev/shm mount point.
And finally
sudo service oracle-xe start|stop
Here is permanent fix this error:
To make the change permanent do the following :a) create a file named S01shm_load in /etc/rc2.d :
sudo vim /etc/rc2.d/S01shm_load
Now copy and paste following lines into the file :
#!/bin/sh
case "$1" in
start) mkdir /var/lock/subsys 2>/dev/null
touch /var/lock/subsys/listener
rm /dev/shm 2>/dev/null
mkdir /dev/shm 2>/dev/null
mount -t tmpfs shmfs -o size=2048m /dev/shm ;;
*) echo error
exit 1 ;;esac
b) Save the file and provide execute permissions :
chmod 755 /etc/rc2.d/S01shm_load
However I prefer first method as messing with shm can be dangerous
for your encrypted filesystem.
So you could put this 4 lines in script like config_oracle.sh and run
it every time you want to experiment with Oracle 11g database.
