Saturday, March 21, 2015

Oracle XE 11g on Oracle Linux 7 installation issues

We were installing Oracle XE (following proper instructions) on a fresh Oracle Linux 7.1 installation and were running into weird issues like this:

# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:oracle-xe-11.2.0-1.0             ################################# [100%]
Executing post-install steps...
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `echo ~(unknown)'
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

So, we couldn't finish the installation process properly. I did what anybody would do these days: GOOGLE "oracle rpm syntax error near unexpected token" (maybe now you'll get a link to this post?).

Nothing useful came up (it was March 21st 2015).

So we had to do some fixing ourselves. We extracted the installation scripts from the RPM file like this:
# rpm -qp --scripts oracle-xe-11.2.0-1.0.x86_64.rpm
And we tracked down the culprit to these two lines:

loginuser=`who | cut -d' ' -f1 | uniq | sed -n '1p'`
homedir=`sh -c "echo ~$loginuser"`

It turned out that when you issue a who command in this version of Linux, you will get something like this:

# who
(unknown) :0           2015-03-20 17:04 (:0)
root     pts/0        2015-03-21 08:33 (192.168.16.225)
And that explained the "echo ~(unknown)" error we were getting before.

So, what causes the (unknown) user to appear on the who list? It's the graphical interface that's brought up upon boot. So, in order to be able to install Oracle properly all we needed to do was:

# systemctl set-default multi-user.target
Which is equivalent to the good old runlevel 3 we used to set on /etc/inittab.

After that, reboot the system and you will be able to install Oracle XE without further issues.

When you're done, you can go back to get GUI for login on your server by issuing:
# systemctl set-default graphical.target
And rebooting your linux again.

A little bonus track to this post. Create a file called /etc/profile.d/oracle.sh and put this content on it:
 # /etc/profile.d/oracle.sh - set oracle stuff
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe
ORACLE_SID=xe
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME ORACLE_BASE ORACLE_SID PATH

13 comments:

  1. Nice post. Oracle is a relational database management system produced by oracle corporation. Nowadays most of the multinational companies used this oracle database for storing and managing their data's and programs. So learning Best Oracle Training in Chennai is one of the best idea to make a bright career.

    ReplyDelete
  2. Very good post how to implement oracle in linux OS. Good one.Oracle Training in Chennai

    ReplyDelete
  3. Nice post. This is very useful, Thanks for sharing.

    IELTS classes in Kuwait

    ReplyDelete
  4. This article is something that will help me with my class assignment. It helped me to better understand another aspect of this topic. Thanks.
    limo service va

    ReplyDelete
  5. I would like to thank you for your nicely written post, its informative and your writing style encouraged me to read it till end. Thanks. limo dc

    ReplyDelete
  6. You need to take part in a contest for one of the finest websites online. I’m going to recommend this web site! Medical scheduling software

    ReplyDelete
  7. This blog is very interesting and too informative. I enjoyed to visiting your blog. You have done a really nice job. Keep it up! Baltimore party bus limo rentals cheap

    ReplyDelete
  8. It is an extremely useful blog for learning AngularJS. Much obliged to you for sharing this brilliant blog.
    AngularJS Training in Chennai | AngularJS Course in Chennai | AngularJS Training Institute in Chennai | Angular 2 Training in Chennai

    ReplyDelete
  9. Its a wonderful post and very helpful, thanks for all this information. You are including better information regarding this topic in an effective way. T hank you so much.
    amazon web services aws training in chennai

    microsoft azure training in chennai

    workday training in chennai

    android-training-in chennai

    ios training in chennai

    ReplyDelete