64位Ubuntu 16.04 安装64位ORACLE11G

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
djklhm
帖子: 57
注册时间: 2006-12-12 0:41

64位Ubuntu 16.04 安装64位ORACLE11G

#1

帖子 djklhm » 2016-09-26 13:00

安装环境:virtualbox虚拟机ubuntu 16.04
如果单独出现“#”或这“$”者表示使用root或普通用户执行以下命令
1、首先,将系统更新到最新
代码:
$
sudo apt-get update
sudo apt-get dist-upgrade

2、 安装依赖包和JRE环境
$
sudo apt-get install rpm   
sudo apt-get install alien binutils build-essential debhelper gawk gettext html2text intltool-debian ksh lib32z1-dev libaio-dev libaio1 libc6 libc6-dev libc6-dev-i386 libdb4.8 libelf-dev libelf1 libltdl-dev libltdl7 libodbcinstq4-1 libodbcinstq4-1:i386 libsqlite3-0 libstdc++5 libstdc++6 lsb lsb-core make odbcinst pax po-debconf rpm rpm-common sysstat unixodbc unixodbc-dev unzip

下载安装JRE:HTTP://WWW.JAVA.COM,要下载tar.gz包安装,不要使用rpm包转化安装,会出现问题。
$
tar -xzvf *.tar.gz
然后得到一个jre* 目录(具体版本根据实际情况),然后将这个目录拷贝到/usr/java目录下。
sudo mkdir /usr/java
sudo cp -dr ./jre1.8.0_101 /usr/java/
 接下来需要使用vim或gedit来修改/etc/environment配置文件,在这个文件中增加如下的环境变量:
JAVA_HOME=“/usr/java/jre1.8.0_101”
CLASSPATH=“$JAVA_HOME/lib”
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin" 
保存后,使用如下命令来进一步安装这个jre
sudo update-alternatives --install /usr/bin/java java /usr/java/jre1.8.0_101/bin/java 300
这样就安装好这个jre了,然而可能系统中有多个jre,那么系统究竟判断用那一个来作为默认的jre呢,就需要使用如下的命令来配置:
sudo update-alternatives --config java

下载安装JDK(可以不做) :
http://www.oracle.com/technetwork/java/ ... 33151.html

3、创建用户(可选,我就是用自己的账户安装成功的)
$
sudo groupadd oinstall
sudo groupadd dba
sudo mkdir -p /opt/oracle #目录修改为自己机器的实际目录,ORACLE_BASE
mkdir -p /opt/oracle/product/11.2.0 #ORACLE_HOME
sudo useradd -g oinstall -G dba -s /bin/bash oracle #新建oracle用户
sudo usermod -g oinstall -G dba -s /bin/bash oracle #为存在的oracle用户赋予权限
sudo passwd oracle
sudo chown -R oracle:oinstall /opt/oracle
sudo chown -R oracle:oinstall /opt
mkdir /opt/oradata
mkdir /opt/oraInventory

4、检查系统变量
代码:
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep aio-max
/sbin/sysctl -a | grep ip_local_port_range
/sbin/sysctl -a | grep rmem_default
/sbin/sysctl -a | grep rmem_max
/sbin/sysctl -a | grep wmem_default
/sbin/sysctl -a | grep wmem_max

然后根据结果在/etc/sysctl.conf中增加对应数据
代码: #我写的这些数值是通过以上语句查询的值,不符合oracle安装要求,但在安装中可以忽略
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
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 = 1048586

运行一下命令更新内核参数
代码:
$
sysctl -p

5、添加对oracle用户的内核限制
在 /etc/security/limits.conf 文件中增加以下数据
代码:
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240

其中oracle是在第三步中创建的用户,跳过第三步的话就写当前用户

查看/etc/pam.d/login,增加以下行(有了就不用增加了)
代码:
session required pam_limits.so

同样检查/etc/pam.d/su,没有以下行就自己加上
代码:
session required pam_limits.so

7.配置环境变量
在~/.bashrc中增加以下环境变量(最好把~替换成绝对路径)
代码:
#这个写刚刚创建的文件夹
export ORACLE_BASE=/opt/oracle
#安装目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0
#数据库的sid
export ORACLE_SID="djdba"
#默认字符集
export NLS_LANG=.AL32UTF8


5、欺骗oracle的安装程序
代码:使用root用户执行,sudo执行提示权限不够
$
sudo passwd root #为root设置密码
su
#
mkdir /usr/lib64
ln -s /etc /etc/rc.d
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/basename /bin/basename
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
echo 'Red Hat Linux release 5' > /etc/redhat-release

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

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

cd ~/database
sudo chmod +x runInstaller
# 修改为自己系统对应的jre路径
~$
#解压oracle安装包,请不要在win下解压后复制,会出现权限问题,导致无法安装。
unzip ./linux.x64_11gR2_database_1of2.zip
unzip ./linux.x64_11gR2_database_2of2.zip
安装
$
cd database
./runInstaller -jreloc /usr/java/jre1.8.0_101
在安装数据库是选择仅安装数据库软件,否则后续安装完软件建立本地数据库会显示乱码。
7、然后直接下一步就可以了。只是有几个地方需要注意
安装过程中报错处理
安装过程不会一帆风顺,一般都会有错误弹出。我的经验是,安装过程出现错误,不要急,也先别点确认取消或跳过(保持弹出框不要关闭),仔细查看错误提示,按提示的对应log文件找到具体的错误,再处理。
(1)开始时的安装目录问题,通过再选择一次目录来解决,一些限制性要求(内存大小,支持的软件包缺少等,可以忽略)
(2)找不到memcpy@GLIBC_2.14(libstdc++5)
解决办法是下载新libstdc++5的库。
下载:ftp://rpmfind.net/linux/Mandriva/offici ... x86_64.rpm
直接安压缩包打开提取,并提取到/usr/lib/x86_64-linux-gnu下覆盖掉旧文件(使用有sudo权限账户)。
$sudo dpkg -i libstdc++5_3.3.6-27.2ubuntu1_amd64.deb
(3)在执行’链接二进制文件’时如果遇到错误(一些makefile)
解决办法是,开个控制台,执行下面的脚本,可以根据弹出错误对就在.mk文件来执行对应的脚本,然后重试,也可第一次出现错误时一起执行,然后重试。
$
export ORACLE_HOME=/opt/oracle/product/11.2.0
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
安装完成
安装完成后,还要执行两个脚本(也可能是一个脚本,安装界面最后会有提示的),只要拿出来sudo执行即可。
# 执行第1个,如果安装界面有提示,就sudo它
# 执行第2个脚本,根据安装界面给出的路径
$
sudo /opt/oracle/product/11.2.0/root.sh
最后安装程序会执行建立监听(1521),创建样例库,启动em等,请耐心等待,界面有可能是乱码,不用管它,最后的弹出界面点最下面的按钮。
完善用户环境变量
完成对oracle环境变量的配置,在oracle主目录下执行:
$
cd /opt/oracle
gedit ./.profileexport
ORACLE_HOSTNAME=localhost;
export ORACLE_BASE=/opt/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0;
export ORACLE_SID=oral;
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
8、启动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
9、创建数据库
为解决乱码问题,需做如下修改
$
gedit dbca
将JRE_DIR=/opt/oracle/product/11.2.0/jdk/jre改为
JRE_DIR=/usr/java/jre1.8.0_101
#自己安装的java官方jre1.8.0目录。

/opt/oracle/product/11/2/0/bin/dbca

10、参考文章
1、64位 Ubuntu 安装 Oracle 11G  http://www.linuxidc.com/Linux/2011-09/43254.htm
2、http://www.makina-corpus.org/blog/howto ... lin-64bits
回复