这 几天在学 习 Oracle DBA 的内容,所以 尝试 在 Ubuntu9.10 上安装一个Oracle11g 企 业 版, 尝试 了 许 多次,在网上找了几天的 资 料,都没有找到 问题 的所在,很是郁 闷 。 现 在勉勉 强强 忽略了一个 错误 安装上了,安装完后修改了一些配置, 暂时 没有运行 错误 ,今天整理一下,留作 备查资 料。
以下是在 Ubuntu9.10 桌面版上安装Oracle11g 的 过 程:
1、 安装依 赖项
sudo apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5
经过测试,好像现在Ubuntu9.10 的源中libstdc 默认已经升级到libstdc++6 了,需要添加一个链接到libstdc++5 到libstdc++6
sudo ln -s libstdc++.so.6 libstdc++.so.5
2、 创 建 ORACLE 用 户
sudo addgroup oinstall
sudo addgroup dba
sudo addgroup nobody
sudo useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
sudo passwd oracle
sudo usermod -g nobody nobody
第一次安装的时候有一点小误解,以为必须创建一个名为oracle 的用户,并且使用该用户才可以安装,经过实际的操作以后发现,任何用户只要都是可以正常安装的,这里创建的几个组只是为更好地控制oracle 所有者的权限,我们把这个安装oracle 的用户称作“oracle 用户”。比如:dba 组是管理权限,oinstall 是安装权限,通常学习用的话,可以不创建专门的oracle 用户了,只要增加这几个组,并把当前使用的用户增加到这几个组中就可以了。
3、 创 建 ORACLE 安装目 录
sudo mkdir -p /opt/oracle
sudo chown -R oracle:oinstall /opt/oracle
sudo chmod -R 775 /opt/oracle
创建oracle 的安装目录,这个目录的位置没有要求,不过安装oracle 用户需要有对该目录的所有权和操作权。
4、 配置系 统环 境
sudo gedit /etc/sysctl.conf
在该文件最后添加以下内容:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
这些内容是修改linux 内核参数,在oui 启动后会检查,从我的安装过程中没有一个提示通过的,不知道网上的文章中为什么都这么设置,总之安装没有问题。
sudo gedit /etc/security/limits.conf
在该文件最后添加以下内容:
oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535
不知道是作什么用的,大家都那么说,就这么做了,反正设了没有坏处。
sudo gedit /etc/pam.d/login
在该文件最后添加以下内容:
session required /lib/security/pam_limits.so
session required pam_limits.so
强制以上内容修改生效。
sudo gedit /etc/redhat-release
在该文件最后添加以下内容:
Red Hat Linux release 4.1
因为Oracle 默认Linux 系统是Red Hat 的,这里需要小骗oui 一下,不过不能理解的是现在Ubuntu 也挺火,为什么Oracle 没有对Ubuntu 提供更好的支持呢。
sudo sysctl -p
使当前的修改内容全部生效。
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/basename /bin/basename
sudo mkdir /etc/rc.d
sudo ln -s /etc/rc0.d /etc/rc.d/rc0.d
sudo ln -s /etc/rc2.d /etc/rc.d/rc2.d
sudo ln -s /etc/rc3.d /etc/rc.d/rc3.d
sudo ln -s /etc/rc4.d /etc/rc.d/rc4.d
sudo ln -s /etc/rc5.d /etc/rc.d/rc5.d
sudo ln -s /etc/rc6.d /etc/rc.d/rc6.d
sudo ln -s /etc/init.d /etc/rc.d/init.d
创建文件的链接,使Ubuntu 的目录结构与Red Hat 一致。
5、 开 始 安装
./runInstaller
默认情况下安装界面是乱码的,因为oui 使用的jre 默认是1.4 版本,没有对中文字体提供很好的支持,设置jre1.4 的步骤比较复杂,这里使用简单的方式达到解决乱码的问题。
使用英文界面安装,只是这种方式没有GBK 字符集,不知怎么解决:
export LANG=en_US
./runInstaller
制定安装程序使用系统的jre:
./runInstaller -jreLoc=$JAVA_HOME/jre/
接下来的步骤按安装界面提示,一直到最后一个弹出窗口,不要直接点OK 按钮。
使用root 权限执行界面提示的两个脚本即可,如果不是第一次安装的话,只有一个root.sh 脚本。
6、 最后配置
以oracle 用 户 登 录 , 进 入主目 录 ,配置 .bashrc 文件,我的配置如下:
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORACLE_SID=zoomlion
export ORACLE_OWNER=oracle
export ORACLE_TERM=xterm
export ORACLE_UNQNAME=zoomlion
export ORACLE_HOSTNAME=localhost
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
做个简单的说明:
ORACLE_BASE :安装目录
ORACLE_HOME :程序目录
ORACLE_SID :数据库名称
ORACLE_OWNER :oracle 用户名称
ORACLE_TERM :不知道做什么用的,有人认为需要设置这个变量
ORACLE_UNQNAME :启动控制台的时候用到了这个
ORACLE_HOSTNAME :这个设置困扰了我许久,启动监听器的时候经常提示我找不到文件或目录,后来才发现在启动数据库的时候默认ORACLE_HOSTNAME 为我的主机名称,而安装程序设定的主机名为localhost ,不知道127.0.0.1 这个地址是不是也有冲突,总之设为这个值没有问题,当然也可以把安装目录下所有包含主机名称的文件或文件夹名称中的主机名称都改为localhost
在Ubuntu 下所有内容区分大小写。
7、 设 置 自动启动
创建/etc/init.d/oracle ,内容如下,这个脚本依赖于配置的oracle 相关的环境变量:
#!/bin/bash
# /etc/init.d/oracle
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORACLE_SID=zoomlion
export ORACLE_OWNER=oracle
export ORACLE_TERM=xterm
export ORACLE_UNQNAME=zoomlion
export ORACLE_HOSTNAME=localhost
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
touch /var/lock/oracle
su $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
su $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0
8、 安装过程中遇到的一些错误
8.1 在link 阶段,运行文件env_ctx.mk 错误:未知解决方法,直接忽略暂时没有发现问题。
8.2 Oracle10g安装完毕后,dbca创建数据库的时候报错:ORA-27125:unable to create shared memory segment
如下修改后,问题解决:
linux: # cd $ORACLE_HOME/bin
linux: # mv oracle oracle.bin
cat >oracle <<"EOF"
#!/bin/bash
export DISABLE_HUGETLBFS=1
exec $ORACLE_HOME/bin/oracle.bin $@
EOF
linux: # chmod +x oracle