晚风吹

2008年7月14日星期一

ubuntu 安装orcale 10g

本文描述在Ubuntu 8.04下安装Oracle 10gR2的方法,应该对于Ubuntu6.06以上的版本,安装都是没有什么问题的。
但是仍然推荐8.04版,比之前的版本有了很大幅度的提高。

1. Oracle需要有X系统,如果你没有的话,那么就安装一个你需要的X系统,我安装的Ubuntu 8.04 Desktop版本,所以用的是GNOME。如果你安装的是server版,那么可以安装fluxbox之类的轻量X系统,说句题外话,我个人还是倾向于FVWM,曾经在FreeBSD下配置了一个非常不错的FVWM,但是由于年代久远,当时的东西没有留下来,现在也没有那个时间和精力去配置,所以一直是一个遗憾。

2. 需要安装的软件以及一些配置
sudo apt-get install gcc make binutils libmotif3 lesstif2 libaio1 gawk libc6 libc6-dev alien rpm libstdc++5 sun-java6-jre gcc-3.3-base build-essential autoconf automake1.9
如果空间足够,那么可以考虑安装java-jdk。
或许不需要这么多,我是这么装的,各位可以试验一下究竟都需要什么。
安装完成之后,需要做一些修改。
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/bin/awk /bin/awk

然后创建/etc/redhat-release,因为Oracle需要安装在获得其认证的Linux发行版上,Redhat是其中之一,那么就需要让它认为Ubunut是Redhat。
内容是Red Hat Linux release 3.1 (drupal)
你写成Red Hat Linux release 4.1 也可。

3. 创建Oracle用户和安装路径
sudo groupadd oinstall
sudo groupadd dba
sudo groupadd nobody
sudo useradd -g oinstall -G dba,admin -d /home/oracle -s /bin/bash -m -k /etc/skel oracle
oracle用户是admin的组员的原因是为了使之可以使用sudo命令。
为Oracle用户设置密码
sudo passwd oracle

创建安装和运行Oracle的文件夹。
sudo mkdir -pv /opt/oracle
sudo mkdir -pv /opt/oradata
sudo chown -R oracle:oinstall /opt/ora*
sudo chmod -R 755 /opt/ora*

4. 对系统进行调整,满足安装Oracle的条件。
修改/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

然后运行
sudo /sbin/sysctl -p

修改/etc/security/limits.conf,加入
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

修改/etc/profile (如果你用的是bash的话)

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi


注意:这里稍微解释一下umask的功能,umask的作用是决定你创建的文件或目录的缺省权限。
umask使用的对于目录的最大的权限是777,即rwxrwxrwx;而对于文件最大的权限是666,即rw-rw-rw- ;
如果我们运行命令:umask 033,则033与目录的最大权限值777进行异或运算,所以建立的新目录缺省权限为:744 ,即rwxr--r--。
而对于新建立的文件则是033与文件的最大权限值666进行异或运算,所建立的新文件的缺省权限为:644 ,即rw-r--r--。
简单的说,公式就是:对于文件夹777-umask,对于文件666-umask。
那么由于文件的最大权限是666,则可以看出,对于文件的执行权限(即x权限)使用umask命令是无法使其起作用的。
系统强制关闭文件的x缺省执行权限。如果想使文件有运行权限,只能由 chmod 命令进行设置。

检查/etc/services,确保没有使用1830到1849的端口号。

5. 配置Oracle用户的环境变量
以oracle用户登录,或者在终端下 su oracle。
这时候可能遇到No protocol specified的问题。解决方法是用root用户登录(su root),然后运行xhost +
或者直接退出当前用户的X,用oracle登录。
修改.bashrc文件,加入
umask 022
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle
export ORACLE_SID=GIS #这个改成自己想要的即可
export PATH=$ORACLE_HOME/bin:$PATH
然后source .bashrc

建议使用英文环境来安装,防止乱码
export LANG="en_US.UTF-8"
export LANGUAGE="en_US:en"

6. 安装
将下载的Oracle 10g安装文件解压,进入解压后的目录
./runInstaller
然后就开始安装了,最好选择Advanced 方式安装,便于选择一些配置参数。
接下来的选项就因人而异了,最后有一个选择privilege operation system 的什么选项,然填一个oracle用户所在的组,我填的admin。
下面的图是数据库创建完成之后的图片:

最后会跳出让你执行orainstRoot.sh和root.sh的窗口,打开一个终端,用root用户执行即可,执行完了之后回到这个窗口,点OK。

记下该有的URL,然后就可以退出安装程序了。


7. 启动
这时,oracle已经启动了,例如在浏览器里输入http://localhost:1158/em,则会显示出登录的界面。

输入用户名和密码,则登录进管理页面。
在命令行下输入sqlplus "sys/你的密码 as sysdba" 则可以登录。

那么,我们需要设置一个脚本,来使oracle之后能够正常启动。
vim oracle.sh
加入下面的内容:

#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME=/opt/oracle
ORA_OWNR=oracle
# if the executables do not exist -- display error
if [ ! -f $ORA_HOME/bin/dbstart ] || [ ! -d $ORA_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 $ORA_OWNR -c "export ORACLE_BASE=/opt/oracle &&
export ORACLE_HOME=/opt/oracle &&
export ORACLE_SID=GIS &&
export PATH=$ORA_HOME/bin:$PATH &&
$ORA_HOME/bin/lsnrctl start"
su $ORA_OWNR -c "export ORACLE_BASE=/opt/oracle &&
export ORACLE_HOME=/opt/oracle &&
export ORACLE_SID=GIS &&
export PATH=$ORA_HOME/bin:$PATH &&
$ORA_HOME/bin/dbstart"
#$ORA_HOME/bin/lsnrctl start
#$ORA_HOME/bin/dbstart
touch /var/lock/oracle
su $ORA_OWNR -c "export ORACLE_BASE=/opt/oracle &&
export ORACLE_HOME=/opt/oracle &&
export ORACLE_SID=GIS &&
export PATH=$ORA_HOME/bin:$PATH &&
$ORA_HOME/bin/emctl start dbconsole"
#$ORA_HOME/bin/emctl start dbconsole
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORA_OWNR -c "export ORACLE_BASE=/opt/oracle &&
export ORACLE_HOME=/opt/oracle &&
export ORACLE_SID=GIS &&
export PATH=$ORA_HOME/bin:$PATH &&
$ORA_HOME/bin/lsnrctl stop"
su $ORA_OWNR -c "export ORACLE_BASE=/opt/oracle &&
export ORACLE_HOME=/opt/oracle &&
export ORACLE_SID=GIS &&
export PATH=$ORA_HOME/bin:$PATH &&
$ORA_HOME/bin/dbshut"
#$ORA_HOME/bin/lsnrctl stop
#$ORA_HOME/bin/dbshut
rm -f /var/lock/oracle
su $ORA_OWNR -c "export ORACLE_BASE=/opt/oracle &&
export ORACLE_HOME=/opt/oracle &&
export ORACLE_SID=GIS &&
export PATH=$ORA_HOME/bin:$PATH &&
$ORA_HOME/bin/emctl stop dbconsole"
#$ORA_HOME/bin/emctl stop dbconsole
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0

注意,执行的时候,无论是./oracle.sh start|stop 还是sudo ./oracle.sh start|stop 都可以,因为已经export了环境变量了。
注意,这里的dbstart和dbshut都是为了给脚本用的,正确的方法是 sqlplus "sys/你的密码 as sysdba"
然后startup或者shutdown
那么,为了使dbstart和dbshut可以使用,需要修改/opt/oracle/bin/dbstart,
将ORACLE_HOME_LISTNER的值改为oralce的安装路径,在这里是/opt/oracle。
同时还需要修改/etc/oratab文件,将最后的那个N改成Y。

手动启动:
启动和停止监听:
lsnctl start
lsnctl stop
启动和停止数据库:
dbstart
dbshut
或者sqlplus "sys/你的密码 as sysdba"
startup
shutdown
启动和关闭企业管理器:
emctl start dbconsole
emctl stop dbconsole

如果需要启动的时候就运行,那么先
chmod 755 oracle.sh
同时需要将oracle.sh复制到/etc/init.d下面:
sudo cp oracle.sh /etc/init.d/
然后:
sudo update-rc.d oracle.sh defaults 97
经过总结,企业管理器启动和关闭都比较慢,所以可以在oracle.sh文件中注释掉相应的条目,然后启动之后手动打开即可。

OK,应该没有什么问题了。

本文未经许可禁止一切商业用途,有任何问题请联系thelastender@gmail.com

没有评论:

发表评论