在 ubuntu 18.04 上安装 oracle 12c R2

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/51060012/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 03:31:36  来源:igfitidea点击:

Installing oracle 12c R2 on ubuntu 18.04

oracleubuntu

提问by fjalvingh

Installing Oracle 12c Release 2 on Ubuntu fails because it is not a supported distribution. How can I install it anyway?

在 Ubuntu 上安装 Oracle 12c 第 2 版失败,因为它不是受支持的发行版。我怎样才能安装它?

回答by fjalvingh

Download the installation files and unzip them as usual.

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

Create the oracle, dba and oinstall users:

创建 oracle、dba 和 oinstall 用户:

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

Add the following parameters to /etc/sysctl.conf:

将以下参数添加到 /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

The above is for a 32GB machine. If you have a different amount then set:

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

  • shmmax = (memory in bytes / 2)
  • shmmax =(以字节为单位的内存/2)

Now install a set of packages needed for the install to complete. Start by updating your packages:

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

sudo apt update

Then install the following:

然后安装以下内容:

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

Create a number of soft links so that the installation can find the files it needs at the places it expects them to be:

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

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

Now start the Oracle installer running under account "oracle", usually as follows:

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

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

Install the database but do notcreate a database during the installation!

安装数据库但不能在安装过程中创建一个数据库!

After a while the installation will give an error on linking. Leave the error message on-screen, then open a terminal and edit the file $ORACLE_HOME/bin/orald. Find, at the start, the part reading:

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

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

and change the gcc line to read:

并将 gcc 行更改为:

exec gcc -no-pie "$@"

(the -no-pie option starts with a single dash).

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

Then copy the following script into a file, for instance /tmp/fixora:

然后将以下脚本复制到一个文件中,例如 /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)\)/ -Wl,--no-as-needed /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)\)/ -Wl,--no-as-needed /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;

Change the ORACLE_HOME line in the script to point to your installation directory for Oracle. Make the script executable and run it as the oracle user:

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

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

Now return to the installer and press the "retry" button on the error dialog. The installation should now finish without further issues.

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

The resulting installation does not work, however: creating a database will hang in the "startup mount" command, with an oracle BEQ process deadlocked inside localtime. To fix that do the following, again as the user oracle:

然而,结果安装不起作用:创建数据库将挂在“启动挂载”命令中,oracle BEQ 进程在本地时间内死锁。要修复该问题,请再次以 oracle 用户身份执行以下操作:

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

After the relink creating a database should work; you can create one using:

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

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

回答by manu

Check that $ORACLE_HOME/bin/oradismbelong to root and as setuid enabled:

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

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

回答by user1965911

I faced the linking issue in ubuntu 18.04. One pop up opened showing some linking error. I kept the popup open and after performing the below steps I clicked retry.

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

I checked the install log file and found it is not able to find few libraries.

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

INFO: /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a

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

Then I ran :

然后我跑了:

locate libpthread_nonshared

找到 libpthread_nonshared

It showed my some directory where the same file was present. But oracle installer was looking for those files in /usr/lib64 folder.

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

So I created the soft links for those files using below command.

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

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

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

Then clicked on retry button.

然后点击重试按钮。