【问题标题】:Installing oracle 12c R2 on ubuntu 18.04在 ubuntu 18.04 上安装 oracle 12c R2
【发布时间】:2018-12-06 04:27:49
【问题描述】:

在 Ubuntu 上安装 Oracle 12c 第 2 版失败,因为它不是受支持的发行版。无论如何我该如何安装它?

【问题讨论】:

    标签: oracle ubuntu


    【解决方案1】:

    我在 ubuntu 18.04 中遇到了链接问题。 一个弹出窗口打开显示一些链接错误。我保持弹出窗口打开,并在执行以下步骤后单击重试。

    我检查了安装日志文件,发现找不到几个库。

    信息: /usr/bin/ld: 找不到 /usr/lib64/libpthread_nonshared.a

    然后我跑了:

    找到 libpthread_nonshared

    它显示了我的某个目录,其中存在相同的文件。但是 oracle 安装程序正在 /usr/lib64 文件夹中寻找这些文件。

    所以我使用以下命令为这些文件创建了软链接。

    cd /usr/lib64; ln -s /usr/lib/....../* /usr/lib64/

    然后点击重试按钮。

    【讨论】:

      【解决方案2】:

      检查$ORACLE_HOME/bin/oradism 是否属于root 并启用setuid:

      -rwsr-x--- 1 root dba 95844 may 24  2018 $ORACLE_HOME/bin/oradism
      

      【讨论】:

      • 虽然 oradism 确实具有上述所有者和 setuid 很重要,但这解决了另一个问题,而不是这个问题中提到的问题。因此,如果 oradism 具有不正确的权限,也可以添加出错的地方,即您收到什么样的错误消息。
      【解决方案3】:

      像往常一样下载安装文件并解压。

      创建 oracle、dba 和 oinstall 用户:

      sudo groupadd oinstall
      sudo groupadd dba
      sudo useradd -g oinstall -G dba,oinstall -s /bin/bash -m -d /home/oracle oracle
      

      将以下参数添加到/etc/sysctl.conf:

      fs.aio-max-nr = 1048576
      fs.file-max = 6815744
      kernel.shmall = 3355443
      kernel.shmmax = 17179869184
      kernel.shmmni = 4096
      
      # semaphores: semmsl, semmns, semopm, semmni
      kernel.sem = 250 32000 100 128
      net.ipv4.ip_local_port_range = 9000 65500
      net.core.rmem_default=262144
      net.core.rmem_max=4194304
      net.core.wmem_default=262144
      net.core.wmem_max=1048576
      

      以上是针对 32GB 机器的。如果您有不同的金额,请设置:

      • shmmax = (内存字节数/2)

      现在安装完成安装所需的一组软件包。首先更新你的包:

      sudo apt update
      

      然后安装以下:

      sudo apt install libc6-i386 \
      gcc-multilib g++-multilib libc6-dev-i386 libstdc++6:i386 \
      alien autoconf automake autotools-dev elfutils rpm rpm-common \
      build-essential debhelper expat gawk gsfonts-x11 html2text sysstat \
      unixodbc unixodbc-dev doxygen ksh openssh-server pax perl-doc rlwrap \
      lsb lsb-core zlibc \
      lib32z1-dev lib32ncurses5 libaio1 libaio-dev \
      libelf-dev libodbcinstq4-1 libpth-dev libpthread-stubs0-dev \
      libpthread-workqueue0 libpthread-workqueue-dev \
      libtiff5-dev libzthread-dev libqt4-opengl:i386 libodbcinstq4-1:i386 \
      libglu1-mesa:i386 libxtst6:i386 libxtst6
      
      sudo apt-get install -s cabextract
      sudo add-apt-repository ppa:nilarimogard/webupd8
      sudo apt update
      sudo apt install wimtools libwim-dev
      sudo apt install -s libbz2-dev:i386
      

      创建多个软链接,以便安装可以在它期望的位置找到所需的文件:

      sudo ln -s /usr/bin/basename /bin/basename
      sudo ln -s bin/bash /usr/bin/bash
      sudo ln -s /usr/bin/rpm /bin/rpm
      sudo ln -s /usr/bin/awk /bin/awk
      sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
      sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/libstdc++.so.6
      sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1
      sudo ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
      sudo ln -s /lib/lsb/init-functions /etc/init.d/functions
      sudo ln -sf /bin/bash /bin/sh
      

      现在启动在“oracle”账户下运行的Oracle安装程序,通常如下:

      xhost +
      sudo su - oracle
      cd /path/to/unzipped/files/database
      ./runInstaller
      

      安装数据库,但在安装过程中创建数据库!

      安装一段时间后会出现链接错误。将错误消息留在屏幕上,然后打开终端并编辑文件 $ORACLE_HOME/bin/orald。在开头找到阅读部分:

      if [ -z "$BASH_VERSION" -o -n "$ORALD_USE_GCC" ] ; then
        exec gcc "$@"
        exit 1
      fi
      

      并将 gcc 行更改为:

      exec gcc -no-pie "$@"
      

      (-no-pie 选项以单破折号开头)。

      然后将以下脚本复制到一个文件中,例如 /tmp/fixora:

      #!/bin/bash
      
      # Change the path below to point to your installation
      export ORACLE_HOME=/opt/oracle/12cr2
      
      sudo ln -s $ORACLE_HOME/lib/libclntshcore.so.12.1 /usr/lib
      sudo ln -s $ORACLE_HOME/lib/libclntsh.so.12.1 /usr/lib
      
      cp $ORACLE_HOME/rdbms/lib/ins_rdbms.mk $ORACLE_HOME/rdbms/lib/ins_rdbms.bkp
      cp $ORACLE_HOME/rdbms/lib/env_rdbms.mk $ORACLE_HOME/rdbms/lib/env_rdbms.bkp
      
      sed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz12/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
      sed -i 's/\$(HSOTS_LINKLINE)/\$(HSOTS_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
      sed -i 's/\$(EXTPROC_LINKLINE)/\$(EXTPROC_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
      sed -i 's/\$(OPT) \$(HSOTSMAI)/\$(OPT) -Wl,--no-as-needed \$(HSOTSMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/\$(OPT) \$(HSDEPMAI)/\$(OPT) -Wl,--no-as-needed \$(HSDEPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/\$(OPT) \$(EXTPMAI)/\$(OPT) -Wl,--no-as-needed \$(EXTPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
      sed -i 's/\$(SPOBJS) \$(LLIBSERVER)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBSERVER)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/\$(S0MAIN) \$(SSKFEDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFEDED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/\$(S0MAIN) \$(SSKFODED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFODED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/\$(S0MAIN) \$(SSKFNDGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFNDGED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/\$(S0MAIN) \$(SSKFMUED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFMUED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/\$LD \$LD_RUNTIME/$LD -Wl,--no-as-needed \$LD_RUNTIME/' $ORACLE_HOME/bin/genorasdksh
      sed -i 's/\$(GETCRSHOME_OBJ1) \$(OCRLIBS_DEFAULT)/\$(GETCRSHOME_OBJ1) -Wl,--no-as-needed \$(OCRLIBS_DEFAULT)/' $ORACLE_HOME/srvm/lib/env_srvm.mk
      
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/crs/lib/env_has.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/odbc/lib/env_odbc.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/precomp/lib/env_precomp.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/srvm/lib/env_srvm.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/network/lib/env_network.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ldap/lib/env_ldap.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ord/im/lib/env_ordim.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/plsql/lib/env_plsql.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ctx/lib/env_ctx.mk;
      sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/sqlplus/lib/env_sqlplus.mk;
      

      将脚本中的 ORACLE_HOME 行更改为指向您的 Oracle 安装目录。使脚本可执行并以 oracle 用户身份运行:

      chmod a+x /tmp/fixora
      sudo su - oracle
      /tmp/fixora
      

      现在返回安装程序并按错误对话框上的“重试”按钮。安装现在应该完成,没有其他问题。

      生成的安装不起作用,但是:创建数据库将在“启动挂载”命令中挂起,oracle BEQ 进程在本地时间内死锁。要解决此问题,请再次以用户 oracle 的身份执行以下操作:

      cd $ORACLE_HOME/lib/stubs
      rm libc*
      cd ../../bin
      ./relink all
      

      重新链接后创建数据库应该可以工作;您可以使用以下方法创建一个:

      dbca -silent -createDatabase \
      -templateName General_Purpose.dbc \
      -gdbname $DBNAME -sid $DBNAME -responseFile NO_VALUE \
      -characterSet AL32UTF8 \
      -sysPassword REPLACE_WITH_PASSWORD \
      -systemPassword REPLACE_WITH_PASSWORD \
      -createAsContainerDatabase false \
      -databaseType MULTIPURPOSE \
      -automaticMemoryManagement false \
      -totalMemory 2048 \
      -storageType FS \
      -datafileDestination "/opt/oracle/oradata/" \
      -redoLogFileSize 500 \
      -emConfiguration NONE \
      -ignorePreReqs
      

      【讨论】:

      • 如果无法安装某些软件包,请运行“sudo add-apt-repository Universe”和“sudo apt-get update”。另外,如果您不能安装 libstdc++6:i386,请参阅:digitalocean.com/community/questions/…
      • 顺便说一句,你在 ln -sf /bin/bash /bin/sh 中缺少 sudo
      • 必须在运行安装程序之前添加 $ sudo apt-get install libxtst6:i386 而不是 $ sudo apt-get update $ sudo apt-get install libxtst6
      • 谢谢,这很好,但是我需要纠正一些小问题才能使这项工作正常进行。首先,正确的二进制位置是:“$ORACLE_HOME/bin/orald”,而不是“lib”。其次,我必须删除“export ORACLE_HOME=/opt/oracle/12cr2”上的“$”。
      • +1!这真的很有帮助 - 谢谢。结合来自this youtube video 和旧debian wiki 的信息,我成功地在我的debian 笔记本电脑上安装了12.2(准确地说是MX Linux 18.3)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2019-06-18
      • 1970-01-01
      • 2021-12-01
      • 2019-04-03
      • 2019-10-20
      • 1970-01-01
      相关资源
      最近更新 更多