from :http://blog.csdn.net/idber/article/details/9039857
这两天在Ubuntu上安装Oracle把人折腾毁了,即使照着网上的教程来,还是出了很多问题。好在最后终于搞定了。写出来总结一下,免得以后忘了。
标题注明32位是因为网上教程几乎全是以64位安装为例的,32位系统下照着做是绝对会安装失败的。
出现的问题主要有两方面,一个是安装过程中出现的,另一个是安装完成后出现的。
安装过程(主要过程就直接copy别人的教程了)及问题:
1.将系统更新到最新:
sudo apt-get update
sudo apt-get dist-upgrade
2.如果使用的Ubuntu不是桌面版(如Ubuntu server),由于Oracle安装需要用到图形界面,所以需要安装桌面程序:
sudo apt-get install gnome-core
相信很多都是使用的桌面版,那么这个步骤就不需要了。
3. 安装Oracle所需的依赖包:
sudo apt-get install automake
sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install bzip2
sudo apt-get install elfutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install libstdc++5
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibc
很多都是Ubuntu自带的了,谨慎6起见都执行一遍吧。
4.创建用户(此步可省略,直接使用当前的用户即可,下面的安装过程都是以不执行这一步为准的)
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba -d /opt/oracle -s /bin/bash oracle
sudo passwd oracle
5.检查系统变量
/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中增加对应数据,比如:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152kernel.shmmax = 536870912
kernel.shmmni = 4096kernel.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
6.添加对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是在第四步中创建的用户,跳过第四步的话就写当前用户
7.查看/etc/pam.d/login,增加以下行(有了就不用增加了):
session required pam_limits.so
同样检查/etc/pam.d/su,没有以下行就自己加上:
session required pam_limits.so
7.创建需要的文件夹(用于安装oracle)并设置其所有权:
mkdir -p /opt/oracle
mkdir -p /opt/oraInventory
chown -R oracle:oinstall /opt/oracle
chown -R oracle:oinstall /opt/oraInventory
同样,如果跳过了第四步,那就将所有权设置命令中的用户oracle和组oinstall改为自己当前用户和组(通常二者是一样的),当然这时也可以不执行这两个chown命令,本来目录创建者就是所有者了。另外,需要root权限执行这些命令(sudo,下同)
8.如果Ubuntu上没安装JRE的话,需要安装JRE(我这里直接安装了JDK,以JDK为例):
到Oracle官网下载JDK6(最新为7,考虑到兼容性问题,安装6):
http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
下载jdk-6u45-linux-i586.bin这个文件。放到主文件夹(home目录)下,进入终端:
$sudo chmod 777 jdk-6u37-linux-x64.bin // 将文件赋予运行权限
$sudo -s ./jdk-6u37-linux-x64.bin /usr/lib/jdk //将JDK安装到/usr/lib/jdk 目录下。
注意:最后安装完成后可能安装到了主文件夹下了,这是使用命令将其全部复制到/usr/lib/jdk目录下即可。(如果没有权限,就使用sudo chmod 777获取权限再复制)
配置JDK的环境变量,使用编辑器打开主文件夹下的.bashrc配置文件(隐藏),向其中加入如下内容:
#JDK
JAVA_HOME=/usr/lib/jdk/jdk1.6.0_45
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
注意核对一下目录结构是不是正确的。
最后验证JDK是否安装正确:
java -version
出现了JDK版本信息就表示正确了。
9.为Oracle配置环境变量。同样在主文件夹下的.bashrc配置文件中加入如下内容:
#Oracle
#这个写刚刚创建的文件夹
export ORACLE_BASE=/opt/oracle
#这个后面可以随便填写
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
#数据库的sid
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
#默认字符集
export NLS_LANG=.AL32UTF8
#环境变量
export PATH=${PATH}:${ORACLE_HOME}/bin/;
10.oracle本身并不支持ubuntu来安装,所以要进行欺骗oracle的安装程序(sudo执行):
ln -s /etc /etc/rc.d
ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib/
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/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib/libc_nonshared.a
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /lib/
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.5 /lib/
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.5 /usr/lib/
echo ‘Red Hat Linux release 5’ > /etc/redhat-release
注意:以上命令是对应于32位Ubuntu安装32位Oracle的,如果是64位Ubuntu安装64位Oracle,上面的i386-linux-gnu就都要改成x86_64-linux-gnu,目标目录的lib也要改成lib64.(没有lib64就新建一个)
因为Ubuntu将某些库文件根据32位系统和64位系统分别存放了,但Oracle只认/usr/lib和/lib目录,所以需要进行上面的软链接。
11.下载Oracle安装程序:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
下载Linux x86的那两个文件(64位系统就下Linux x86-64),解压后得到database文件夹。
12.正式安装Oracle,为database文件夹下的runInstaller文件赋予可执行权限:
chmod 777 runInstaller
跳转到database目录,在终端下执行:
./runInstaller
此时可能会出现database目录下部分文件的权限不足,导致安装程序无法启动的问题,根据提示,对那些文件使用chmod 777进行授权就行了(貌似一共3个文件)。
启动安装图形界面后,可能会发现文字乱码,全是口口口:
这时可以关闭该界面,先在终端输入:
export LANG=en_US
或者
export LANG=zh_CN.gbk
然后再执行:
./runInstaller
就可以在全英文界面下进行安装了。
13.安装前进行swap空间检查时可能出现swap空间太小的问题,这一般是由于系统安装时没有创建swap分区,解决办法是创建swap文件来开辟swap空间:
通过下面方法建立swap文件:
#dd if=/dev/zero of=/tmp/swapfree bs=32k count=65515 (count是分区数量,swap大小=bs*count,增加2G)
#mkswap /tmp/swapfree (格式化交换分区文件)
#swapon /tmp/swapfree (启用交换分区文件)
#swapon –s (显示swap状态)
修改/etc/fstab,让系统每次启动都把/tmp/swapfree作为swap使用,增加下面一行:
/tmp/swapfree swap swap defaults 0 0
14.图形安装界面的第一步是填写电子邮件,但是填完可能会出错:Unexpected error occurred while validating inputs at state 'getOCMDetails'。这是由于缺少pdksh依赖包,简单的解决办法是不填写邮件地址,不勾选下面的复选框,直接下一步,弹出提示后点 ‘Yes’就能直接进入下一步了。完美的解决办法可以到网上去看。
15.剩下的过程基本上很顺利了,只需要设置一下密码就行了,其他的设置都在启动安装程序前完成了,不要进行改动!
16.图形界面下进行依赖检查的时候会列出很多依赖检查失败了,无法进入下一步了,此时选中右上角的‘忽略所有’就可以进入下一步了。
17.如果没有严格按照前面的要求做,安装过程中可能弹出错误,此时不要关闭界面,根据给出的日志位置,在日志中查看错误出现的原因,一般都是指定 位置找不到相应的文件导致的,此时打开一个新的终端窗口,找到这些文件并将文件复制到对应的位置或者创建软链接即可。(通常是/usr/lib目录下找不 到库文件,这些库文件都位于/usr/lib/i386-linux-gnu目录下了)然后在图形界面点击“Retry‘即可继续安装。
比如:“error in invoking target 'client_sharedlib' of makefile '/opt/oracle11g/server/rdbms/lib/ins_rdbms.mk''这个错误就是没有执行:
ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib/libc_nonshared.a
这两个命令导致的(针对32位安装的情况)。
如果严格按照前面的要求做了,上面这种错误是不会出现的。另外,如果32位系统安装64位Oracle或者64位系统安装32位Oracle也是会弹出错误的,错误提示是这样的:
Error in invoking target 'client_sharedlib' of makefile '/opt/app/oracle/product/10.2.0/db_1/network/lib/ins_net_client.mk'
这种错误就只能重新下载正确的Oracle版本再进行安装了。
18.即使严格按照要求做了,还是会出现两个错误:
a.
解决办法:
打开一个新的终端,输入如下命令:
sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
然后在图形界面点击‘Retry’就能继续安装了。
b.
解决办法:
打开一个新的终端,输入如下四个命令:
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
然后在图形界面点击‘Retry’就能继续安装了。
下面的安装过程就没有什么问题了。
19.最后应该就顺利完成了,按照安装程序提示最后执行两个脚本:
sudo /opt/oracle/oraInventory/orainstRoot.sh
sudo /opt/oracle/Oracle11gee/product/11.2.0/dbhome_1/root.sh
就完成了全部的安装。可以通过https://localhost:1158/em进行网络访问了。
安装后的问题
a.终端下使用“emctl start dbcontrol”命令启动em控制台时出现:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.的问题,解决办法是设置一个UNQNAME :export ORACLE_UNQNAME=xxxx.
b.设置完成后
在终端使用emctl命令关闭或启动dbcontrol(emctl stop dbcontrol , emctl start dbcontrol)的时候还可能出错:
OC4J Configuration issue. /opt/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_pavilion_orcl not found.
EM Configuration issue. /opt/oracle/product/11.2.0/dbhome_1/pavilion_orcl not found.
出现这种错误的原因是Oracle会根据获取到的系统主机名来选择使用相应的EM资料库关闭或启动em控制器,比如Ubuntu系统安装时给主机起 了个pavilion的名称,Oracle获取到的主机名就是pavilion,然后会寻找OC4J_DBConsole_pavilion_orcl 和pavilion_orcl这两个资料库完成关闭或启动em控制器的任务。但是Oracle本身只会根据$ORACLE_HOME/NETWORK /ADMIN/listener.ora文件中的主机名创建资料库。listener.ora中的HOST默认是localhost,所以Oracle默 认创建的资料库是OC4J_DBConsole_localhost_orcl 和localhost_orcl。因此才出现上述找不到资料库的问题。
解决此问题的办法是:
将$ORACLE_HOME/NETWORK/ADMIN/listener.ora文件中的HOST=localhost改为 HOST=pavilion(paviliion为你的主机名),然后在相应位置完整复制OC4J_DBConsole_localhost_orcl 和localhost_orcl并重命名为OC4J_DBConsole_pavilion_orcl 和pavilion_orcl:
cp -rp /opt/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_localhost_orcl /opt/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_pavilion_orcl
cp -rp /opt/oracle/product/11.2.0/dbhome_1/localhost_orcl /opt/oracle/product/11.2.0/dbhome_1/pavilion_orcl
如此就能正常启动和关闭dbcontrol了。
或者可以直接使用
emca -config dbcontrol db
命令重新配置一下资料库也可以解决。
另外,修改了Ubuntu主机名或IP地址后同样会导致这样的问题,解决办法也是一样的。
另附EM资料库配置教程:http://ginaduxuefang.iteye.com/blog/1545144
c.EM控制台中的按钮都是口口乱码,其他正常。这是由于Java字体缺失导致的,因为EM的按钮都是Java生成的。解决办法是:
在JDK(或JRE)的字体文件夹下新建中文字体目录fallback,并将Windows系统下的simsun.ttc字体文件复制到fallback下,然后将其改名为simsun.ttf并授予恰当权限:
$ mkdir $ORACLE_HOME/jdk/jre/lib/fonts/fallback
$ cp simsun.ttc $ORACLE_HOME/jdk/jre/lib/fonts/fallback/
$mv $ORACLE_HOME/jdk/jre/lib/fonts/fallback/simsun.ttc $ORACLE_HOME/jdk/jre/lib/fonts/fallback/simsun.ttf
$chmod 444 $ORACLE_HOME/jdk/jre/lib/fonts/fallback/simsun.ttf
后需要清理一下Cache,重启EM即可:
$ rm $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/*.gif
$ emctl stop dbconsole
$ emctl start dbconsole
登陆Web页面查看,EM显示就可以正常显示中文了.
d.在终端运行sqlplus / as sysdba命令进入SQLPlus工具时可能出现错误:
sqlplus: error while loading shared libraries: /u01/app/oracle/product/11.1.0/db_1/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied
这是由于SELinux导致的,解决办法是禁用SELinux:
更改
/etc/sysconfig/selinux
文件的内容为
SELINUX=disabled
,然后重启
更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled,然后重启。
或者使用chcon命令:
chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
e.启动Linstener时可能出现错误:
TNS-12555: TNS:permission denied
原因是无法访问/var/tmp/.oracle文件夹,解决办法是进行授权:
sudo chmod 777 /var/tmp/.oracle
f.系统关机后每次开机都必须手动启动Oracle,可以编写一个自启动脚本实现每次开机自动启动Oracle,附Oracle启动/关闭方法以及开机自启动脚本:
http://www.cnblogs.com/mchina/archive/2012/11/27/2782993.html
g.卸载Oracle的方法:
1. 运行 $ORACLE_HOME/bin/localconfig delete
2. rm -rf $ORACLE_BASE/*
3. rm -f /etc/oraInst.loc /etc/oratab
4. rm -rf /etc/oracle
5. rm -f /etc/inittab.cssd
6. rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv
7. rm -rf $ORCLE_HOME
相关推荐
。。。
。。。
如何在Ubuntu 12.04中安装Oracle Express 11g R2
在ubuntu上安装oracle解决方案
Ubuntu12.04(64bit) server Oracle 11G(最新问题解决)
ubuntu12.04安装及配置过程详解
Ubuntu12.04 nginx python uwsgi Django安装步骤
Ubuntu 12.04下如何安装MySQL ,我按照这文档,已经成功在ubuntu 12.04安装成功mysql!
声明!本人只在ubuntu 12.04 32位下进行过安装 包括安装需要的包,安装文档
实战安装,附带详细步骤,还有一些后期需要的小插件
使用ubuntu 12.04 64位环境安装 adb fastboot,.de文件即可使用。 将android设备连接至电脑,通过lsusb查看usb设备,如下红色部分对应的就是android设备。 重启adb服务,adb devices有设备说明adb安装成功 $adb kill-...
用 VMware 安装 Ubuntu 12.04详细过程图解
zabbix2.03在ubuntu12.04上的安装(最新)
Ubuntu Server 12.04安装图解,附件中为安装过程中全部截图,可按照图中所选择部分安装
Ubuntu12.04下Eclipse安装配置
Ubuntu12.04下的JDK安装,首先到官网上下载jdk-7u51-linux-x64.tar.gz。
用VMware 8安装Ubuntu 12.04详细过程详细
VMWare8.0安装Ubuntu12.04教程,傻瓜式安装教程,很详细
64 位 Ubuntu 12.04.4 安装 Oracle 11g 及问题解决
ubuntu12.04安装与桌面配置过程详解