Ubuntu14.04LTS64位安装Oracle11g

Oracle官方并未说明支持ubuntu安装,因此环境要调整准备,才能成功安装。Ps,本人重试多次但12c未安装成功,因此安装了11g。

环境准备

  • ubuntu14.04桌面64位
    我的desktop是gnome,中文版。
  • jdk准备(我的是jdk1.7.60)
  • 配置系统环境变量:
    (用于保证安装时一些脚本正常执行,在有sudo权限的用户下执行)
$sudo ln -s /usr/bin/awk /bin/awk    
$sudo ln -s /usr/bin/rpm /bin/rpm    
$sudo ln -s /usr/bin/basename /bin/basename
# 直接链接这个目录过来,不建议使用参考文章1的中链接多个文件的方式
$sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
$cd /lib64
$sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 .
  • 安装必要包
    请参看下面参考文章1和2中列出的安装包,也可以先跳过本步,需要时再装。
  • 建立oracle用户组及安装目录
    我还是使用参考文章2的方式,使用独立的oracle用户来安装oracle。
$sudo groupadd oinstall
$sudo groupadd dba
$sudo mkdir -p /opt/oracle #目录修改为自己机器的实际目录
$sudo useradd -g oinstall -G dba -s /bin/bash oracle
$sudo passwd oracle
$sudo chown -R oracle:oinstall /opt/oracle
  • 设置系统参数
    请参看下面参考文章1,主要是sysctl和limit的配置。
  • 设置用户环境变量
    根据oracle官方,不建议在安装前先配置.profile或.bashrc,这一点可不用效仿参考文章。可以在安装成功后再配置.profile或.bashrc以用来启用oracle。建议只配置以下变量:
$su - oracle
$vi .profile
# Oracle Settings
TMP=/tmp;
export TMP
TMPDIR=$TMP;
export TMPDIR
# 直接生效
$source .profile

下载oracle11gR2

到oracle官方下载oracle11g的linux64位版
共两个压缩包:

  • linux.x64_11gR2_database_1of2.zip
  • linux.x64_11gR2_database_2of2.zip

解压到某个目录如:/data/downloads/database下,赋予权限。

$cd /data/downloads/database/install
$chmod +x *.sh .oui unzip
$sudo chown -R oracle:oinstall /data/downloads/database

执行安装

我采用的参考文章1中,指定jre的方式(installer是java写的界面),不然安装界面是乱码,就算用export LANG=C等方式可以调出英文,但界面还是不友好。有两种方式可以打开安装界面,一是直接切换到oracle用户并登录到desktop,另一种是不切换当前界面,执行如下命令:

$xhost +
$su - oracle
$export DISPLAY=:0

然后再执行下面的命令,打开安装界面,开始安装。

$cd /data/downloads/database
$chmodx +x runInstaller
# 修改为自己系统对应的jre路径
$./runInstaller -jreloc /usr/lib/jvm/java-7-oracle/jre/

下一步下一步就可以了,我的建议是都使用默认选项安装,安装目录修改为自己机器上所在目录。

安装过程中报错处理

安装过程不会一帆风顺,一般都会有错误弹出。我的经验是,安装过程出现错误,不要急,也先别点确认取消或跳过(保持弹出框不要关闭),仔细查看错误提示,按提示的对应log文件找到具体的错误,再处理。
我遇到的错误,在参考文章2中都得到了解决,建议弹出错误重点参考文章2。下面我简单列示。

  • 问题1:找不到memcpy@GLIBC_2.14(libstdc++5)
    解决办法是下载新libstdc++5的库。
    这里下载,直接安压缩包打开提取,并提取到/usr/lib/x86_64-linux-gnu下覆盖掉旧文件(使用有sudo权限账户)。
    文章2中也介绍了一个下载链接,到下面找到64位版下载下来。然后切换到有sudo权限的账户执行安装:
$sudo dpkg -i libstdc++5_3.3.6-27.2ubuntu1_amd64.deb
  • 问题2:在执行’链接二进制文件’时如果遇到错误(一些makefile)
    解决办法是,开个控制台,执行下面的脚本,可以根据弹出错误对就在.mk文件来执行对应的脚本,然后重试,也可第一次出现错误时一起执行,然后重试。
$export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1
$sed -i ‘s/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g‘ $ORACLE_HOME/sysman/lib/ins_emagent.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/^\(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_OPT\)/\1 -Wl,--no-as-needed \2/g‘ $ORACLE_HOME/bin/genorasdksh
$sed -i ‘s/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g‘ $ORACLE_HOME/srvm/lib/ins_srvm.mk
  • 如果还有其它错误,请参见参考文章2。都处理好后,就可以安装完成。

安装完成

安装完成后,还要执行两个脚本(也可能是一个脚本,安装界面最后会有提示的),只要拿出来sudo执行即可。

# 执行第1个,如果安装界面有提示,就sudo它
# 执行第2个脚本,根据安装界面给出的路径
$sudo /opt/oracle/product/11.2.0/dbhome_1/root.sh
  • 最后安装程序会执行建立监听(1521),创建样例库,启动em等,请耐心等待,界面有可能是乱码,不用管它,最后的弹出界面点最下面的按钮。

完善用户环境变量

完成对oracle环境变量的配置,在oracle主目录下执行:

$vi .profile
export ORACLE_HOSTNAME=localhost;
export ORACLE_BASE=/opt/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;
export ORACLE_SID=orcl;
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="Simplified chinese_china.al32utf8"
# 配置直接生效
$source .profile

启动oracle

其实安装完成后,oracle数据已经启用成功。但重启服务器后,库未自动重启加载(自启动读者可自行配置),下面介绍一下手工操作。

  • 启动/停止监听
# 登录到oracle用户
$su - oracle
# 启动
# 可以使用netstat -lntp看一看1521商品是否打开
$lsnrctl start
# 停止
$lsnrctl stop
# 也可使用
$dbstart $ORACLE_HOME
$dbshut $ORACLE_HOME
# 可用以下命令配置监听,注意必须进入图形界面
$export LANG=C
# hostname处尽量填主机名称,不用IP,用IP也要更换端口
$netmgr
  • 开启/关闭库
$sqlplus / as sysdba
# 启动
SQL>startup;
# 停止
SQL>shutdown immediate;

启动/关闭em
EM可用web来管理数据库服务器,还算方便,如果需求也可启用。

# 前提是ORACLE_HOSTNAME要设置正确(命令中也有提示)
$emctl stop dbconsole

访问地址:
https://localhost:1158/em

参考文章

参考文章1
参考文章2

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。