11 Replies Latest reply: Sep 17, 2013 5:49 PM by PARC RSS

    Installing and migrating Oracle 10g x86 to x64 under SUSE 11 x64


      Hello all,


      I'm trying to accomplish a proof-of-concept for migrating a legacy x86 environment running Oracle 10g into an x64 environment, then upgrading the Oracle instance to 11g. The first step in doing this is installing Oracle 10g in the target environment, which is SLES 11 SP2.


      I have gone though the standard installation procedure; from what I can discern, I've installed all of the dependent packages, including orarun to prepare the environment. I sourced an install package after some minor headaches (unfortunate that Oracle don't offer them anymore, as I'm sure there are others out there having to do similar projects) and began the installation process as the oracle user.


      For the installation, I've elected to keep things as simple as possible, and have gone with all oracle defaults, although I elected not to create a starter database. The only difference is that I have the database home/storage mapped via iSCSI to /opt/oracle/product/. After mounting, I was sure to change the ownership to oracle:oinstall.


      The first phase of the installation runs without issue. I have made the necessary changes to the system so that the installer happily hums through the prerequisites and completes the first installation phase. However, during the Linking phase, I run into an error:


      "Error in invoking target 'client_sharedlib' of makefile '/opt/oracle/product/10gR2/db/network/lib/ins_net_client.mk'. See <the log> for details."


      In that log, I am directed to examine the make log, as per


      "INFO: The output of this make operation is also available at: '/opt/oracle/product/10gR2/db/install/make.log'


      Okay. So, here's the relevant excerpt from that:


      Building 32bit version of nnfgt.o

      /bin/sh: line 2: /opt/oracle/product/10gR2/db/bin/gennfgt: Permission denied

      r - /opt/oracle/product/10gR2/db/lib32/nnfgt.o

      /bin/sh: line 8: /opt/oracle/product/10gR2/db/bin/gennfgt: Permission denied

      Building 64bit version of nnfgt.o

      r - /opt/oracle/product/10gR2/db/lib/nnfgt.o

      (if [ "compile" = "assemble" ] ; then \

      /opt/oracle/product/10gR2/db/bin/gennfgt > nnfgt.s

      /usr/bin/as -o nnfgt.o nnfgt.s

      rm -f /opt/oracle/product/10gR2/db/lib/nnfgt.o

      mv nnfgt.o /opt/oracle/product/10gR2/db/lib/

        /usr/bin/ar rv /opt/oracle/product/10gR2/db/lib/libn10.a /opt/oracle/product/10gR2/db/lib/nnfgt.o ; fi)

      (if [ "compile" = "oratmp" ] ; then \

      /opt/oracle/product/10gR2/db/bin/gennfgt > nnfgt.c

      /lib/idcpp nnfgt.c oratmp.c

      -i oratmp.c -o oratmp.s -f nnfgt.c

      /usr/bin/as -o nnfgt.o oratmp.s

      rm -f oratmp.c oratmp.s

      rm -f /opt/oracle/product/10gR2/db/lib/nnfgt.o

      mv nnfgt.o /opt/oracle/product/10gR2/db/lib/

        /usr/bin/ar rv /opt/oracle/product/10gR2/db/lib/libn10.a /opt/oracle/product/10gR2/db/lib/nnfgt.o ; fi)

      (if [ "compile" = "binary" ] ; then \

      /opt/oracle/product/10gR2/db/bin/gennfgt > nnfgt.c



      gcc -c nnfgt.c

      -rm -f /opt/oracle/product/10gR2/db/lib/nnfgt.o

      -mv nnfgt.o /opt/oracle/product/10gR2/db/lib/

        /usr/bin/ar rv /opt/oracle/product/10gR2/db/lib/libn10.a /opt/oracle/product/10gR2/db/lib/nnfgt.o ; fi)

      /usr/bin/make -f ins_net_client.mk client_sharedlib ORACLE_HOME=/opt/oracle/product/10gR2/db//opt/oracle/product/10gR2/db/bin/genclntsh

      make: execvp: /opt/oracle/product/10gR2/db/bin/genclntsh: Permission denied

      make: *** [client_sharedlib] Error 127


      I'm not sure what to make of these permissions issues:

      ls -al /opt/oracle/product/10gR2/db/bin/gennfgt

      -rwxr-xr-x 1 oracle oinstall 2983 Oct 20  2005 /opt/oracle/product/10gR2/db/bin/gennfgt


      Some additional information, as I thought the ORACLE_HOME in the output was odd (concatenated?):

      echo $ORACLE_HOME



      What might I be missing here? Any help is greatly appreciated, let me know if there are any additional details I can provide.




        • 1. Re: Oracle 10g on SUSE 11 x64
          Srini Chavali-Oracle

          How big is the database ? How much downtime can you afford ? You could possibly get away with not having to install the 10g software on the target server



          • 2. Re: Oracle 10g on SUSE 11 x64

            I suggest to verify you have SELinux disabled or set to permissive. You can check the syslog for any related messages. You will certainly need to install x86 development libraries and probably tell the gcc compiler to use 32-bit using the -m32 parameter.


            Note the following: 32-bit Oracle on 64-bit Linux is not supported. You can check document ID 62290.1 on Oracle Support for details. The document also shows how to switch between 32-bit and 64-bit database installations.


            It is probably the best to install Oracle database x64 in your new x64 environment and then use Oracle export/import or transportable tablespace to migrate your existing data. You can also copy the datafiles since the hardware is the same endian and convert the wordsize by running several scripts to rebuild existing procedures in upgrade mode, but the procedure is more complex.


            Please change your subject to "Installing and migrating Oracle 10g x86 to x64 under SUSE 11 x64".

            • 3. Re: Oracle 10g on SUSE 11 x64

              Hi Srini,


              Thanks for the response.


              The environment we are trying to migrate is a development environment. Essentially, the client needs to migrate their current production x86 environment into a virtualized x64 environment, and we want to perform a proof-of-concept and provide them with a recipe for doing so. So sadly, I will need to get a x64 instance of 10g up and running in this new environment, migrate the data there, and then build out the rest of the tools for their application's environment.

              • 4. Re: Oracle 10g on SUSE 11 x64

                Thank you for abiding a reply, Dude.


                I was sure to source an x64 based version of the installer (notably 10201_database_lunux_x86_64.cpio) so I'm not trying to install a 32bit instance on an x64 platform . I saw in a number of installation guides that it was important to disable SELinux, but there was no /etc/selinux directory in my installation so I didn't spend any additional time on this. I'll do some more research to see if this is handled in some other way in SLES.


                That said I'm fairly certain your suggestions on the compiler may hold the answer to this issue. I have installed all of the x86 development libraries under the SLES "32-Bit Runtime Environment" Pattern in YaST2. However, the check beside the group itself isn't checked, and when I try to apply this, YaST crashes. I'm not too familiar with compiler settings in SLES but I'll do some more research on that and post the results here.


                As for the data migration, that's a ringer we'll throw off the bridge when we come to it. I'll also update the subject of this thread in a few moments, as requested.




                • 5. Re: Oracle 10g on SUSE 11 x64



                  Error likely Kernel settings issue, I hope u have gon through kernel setup ,




                  • 6. Re: Oracle 10g on SUSE 11 x64

                    Hi PRaju,


                    I added the following line to my /etc/sysctl.conf file in order to satisfy the installer's kernel settings check:

                    net.ipv4.ip_local_port_range = 1024 65000

                    If there are other specific settings that you could suggest that might resolve the issue and not be checked by the installer, I'd be more than happy to try them.


                    Just a general thread update, in regards to the 32 bit runtime environment

                    zypper install -t patter 32bit

                    Results in

                    The following NEW pattern is going to be installed:



                    Nothing to do.

                    I can't find any trace of selinux settings on the machine, but to be certain I performed

                    echo 0 > /selinux/enforce

                    Just to be sure. Next up will be compiler settings.

                    • 7. Re: Oracle 10g on SUSE 11 x64

                      If you do not have a SELinux configuration files you do not have SELinux installed. Oracle 10g for x86_64 requires 32-bit and 64-bit libraries. Some binaries are still 32-bit. Oracle 10g is also quite old, and SLES 11 did not exist yet when the 10g installer was made.



                      Did you install the orarun pacakge?


                      Did you check http://ftp.novell.com/partners/oracle/docs/10gR2_sles11_install.pdf

                      • 8. Re: Oracle 10g on SUSE 11 x64

                        This is our concern Dude: that is the guide I have been following.


                        I did install the orarun package, and ran the script via

                        /usr/sbin/rcoracle start

                        I believe this helped with the kernel settings PRaju brought up in his post. The setting I added as per my earlier post was not included in the script, so I added it manually to satisfy the installer.

                        The version of the installer I'm using must support SLES 11 SP2 as it hums along happily through that part of the installation, so there was no need to modify the oraparam.ini as the guide suggested.

                        I was curious, as the guide mentions to ignore the linker error that appears, so I tried to proceed with the install by hitting "Ignore" and continuing along. There were 19 failures. At the next step the "Oracle Net Configuration Assistant" portion fails due to failed commands, so I aborted the install at that point. Obviously there is still a systemic issue to resolve.

                        I created and exported a $CFLAGS variable with the "-m32" option as suggested:

                        export CFLAGS="-m32"

                        but it had no effect on the installer as I am still running into the same linking permissions issues and the use of the switch does not show up in the make logs. It seems that the installer calls gcc explicitly, so at this point, I'm not sure what to try next. I guess you could say this thread is dead in the water.

                        Thanks again for your assistance Dude, and the other members of the community to have contributed to this thread.


                        • 9. Re: Oracle 10g on SUSE 11 x64

                          Another thing you could verify are correct permissions and oracle ownership on all the directories involved in /opt/oracle/product/10gR2/db. Also, what is your output of the "mount" command?

                          • 10. Re: Oracle 10g on SUSE 11 x64

                            Hello again Dude.


                            The shared storage is configured fairly benignly. The iSCSI volume is configured via YaST and, after establishing a connection, the device shows up as a drive in the system i.e. /dev/sdx.


                            The storage was formatted as an ext3 filesystem using fdisk. Afterward, it was mounted to /opt/oracle/product using the following command:

                            mount /dev/sdb1 /opt/oracle/product

                            To ensure the database, once installed, would be available, a corresponding entry was added to /etc/fstab .


                            Before I began the Oracle installation, I was sure to perform the following as root after the mount:

                            chown -R oracle:oinstall /opt/oracle/product

                            chmod -R 775 /opt/oracle/product


                            Checking the ownership and permissions were the first thing I did after noticing the permissions issues during the linking phase.


                            I understand what you are getting at here Dude- to eliminate the possibility of write failures on the shared storage, I unmounted the /opt/oracle/product directory, reverting back to local. After unmounting, I verified that the permissions on the product folder were drwr-xr-x and the owner was oracle:oinstall.


                            The next attempt at installation was successful. The issue was due to the shared storage permissions. Dude, you've earned yourself a Caucasian!


                            Thanks for the help: I am off to determine why the linking phase fails when installing to the shared storage.




                            • 11. Re: Oracle 10g on SUSE 11 x64

                              Just a follow up on this thread...


                              As previously mentioned, I mounted my storage to


                              in an attempt to streamline the installation process. This was a mistake, and is what caused the permissions issues during the linking phase.


                              Alternately, I mounted my storage to


                              and created subdirectories for the install using the following commands:

                              mkdir -p /u01/app /u01/app/oracle /u01/oradata

                              chown oracle:oinstall /u01/app /u01/app/oracle /u01/oradata

                              chmod 775 /u01/app /u01/app/oracle

                              chmod 750 /u01/oradata


                              I modified my ORACLE_HOME prior to starting the install in the /etc/profile.d/oracle.sh file, logged out and back in as the oracle use, and performed the install without issue: things are now running on the shared storage as intended.


                              Thanks again to all who read and contributed to this thread, I'm very impressed with the community.