1、检查并安装ORACLE必须的软件包
在CENTOS上安装Oracle,需要将ORACLE所必须的软件包逐一安装, 参考Oracle安装文档关于Red Hat Enterprise Linux 4.0部分,所需的软件包如下:
binutils-2.17.50.0.6-6.el5
compat-db-4.2.52-5.1
compat-libstdc++-33-3.2.3-61
control-center-2.16.0-16.el5
gcc-4.1.2-42.el5
gcc-c++-4.1.2-42.el5
glibc-2.5-24
glibc-common-2.5-24
libgnome-2.16.0-6.el5
libstdc++-4.1.2-42.el5
libstdc++-devel-4.1.2-42.el5
make-3.81-3.el5
ksh-20060214-1.7
sysstat-7.0.2-1.el5
gnome-screensaver-2.16.1-8.el5
setarch-2.0-1.1
libXp-1.0.0-8.1.el5
1.1、检查必须安装的软件包是否完整,可以运行如下命令检查所需包是否都已安装
# rpm -q binutils-2.17.50.0.6-6.el5 compat-db-4.2.52-5.1
compat-libstdc++-33-3.2.3-61 control-center-2.16.0-16.el5 gcc-4.1.2-42.el5 gcc-c++-4.1.2-42.el5 glibc-2.5-24
glibc-common-2.5-24 libgnome-2.16.0-6.el5 libstdc++-4.1.2-42.el5 libstdc++-devel-4.1.2-42.el5
make-3.81-3.el5 ksh-20060214-1.7
sysstat-7.0.2-1.el5 gnome-screensaver-2.16.1-8.el5 setarch-2.0-1.1
libXp-1.0.0-8.1.el5使用上边的命令对软件包是否安装进行检查,如果出现“not found”则表示该软件包没有安装,需将其安装上。
1.2、安装ORACLE必须的软件包
首先讲CENTOS v5.2的系统安装光盘放入光驱中,然后在虚拟机光驱设置中将CDROM设置为主机光驱,如下:
进入CENTOS系统中,打开【终端】,首先在/mnt下创建文件夹cd,然后加载CDROM到/mnt/cd目录,之后进入/mnt/cd目录,查看加载的光驱文件,一切OK之后进入CentOS文件夹,开始rpm的安装,如下:
现在开始安装ORACLE必须的软件包,安装软件包命令如下:
rpm –Uvh 软件包名称.rpm
安装过程如下图:
所有软件包安装完成后,检查结构如下:
2.修改系统内核参数
修改/etc/sysctl.conf文件,增加如下内容:
# vi /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
net.core.rmem_default =
1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
# chkconfig /etc/sysctl.conf
修改/etc/security/limits.conf(设置最大打开文件数),增加如下内容:
# vi /etc/security/limits.conf
... ...
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
修改/etc/pam.d/login文件,增加如下内容:
# vi /etc/pam.d/login
... ...
session required
/lib/security/pam_limits.so
session required pam_limits.so
修改vi /etc/profile文件,增加如下内容:
# vi /etc/profile
... ...
if [ $USER = "oracle" ]; then
if
[ $SHELL = "/bin/ksh" ]; then
ulimit
-p 16384
ulimit
-n 65536
else
ulimit -u 16384 -n 65536
fi
fi
3.用户设置、配置
添加oinstall和dba用户组
#
groupadd -g 501 oinstall
# groupadd -g 502 dba
添加oracle用户
# useradd -g oinstall -G dba -u 501 -d /oracle
oracle
修改/oracle权限
# chown -R oracle:oinstall
/oracle
使用oracle用户登录,修改.profile文件
# su – oracle
$ pwd
/oracle
$ vi ./.bash_profile
ORACLE_BASE=/oracle/app
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
export PATH
创建相应的目录
$ pwd
/oracle
$ mkdir app
$ mkdir data
4.修改Centos5.2发行标识
由于oracle10g具有系统安装监测,当检测到的系统不符合安装配置规定的要求时,安装不能正常进行,故要更改操作系统的版本标识,这一操作不会影响任何系统问题,可以在安装结束后恢复为正常状态;操作如下:
备份/etc/redhat-release文件为/etc/redhat-release.bak
以root权限修改/etc/redhat-release文件
将文件的内容
修改为redhat-4,用于满足/home/database/install/oraparam.ini的检查要求
也可以修改/home/database/install/oraparam.in的检查条件与系统的/etc/redhat-release文件内容保持一致
或者安装的时候,带上参数,即【runInstaller –ignoreSysPrereqs】则可跳过系统版本检查。
----------------------做完上述配置后,建议重新启动系统,目的是让所有配置生效----------------------
5.开始安装ORACLE10G
5.1、本机光驱中放入“oracle_database_linux32”安装光盘,然后加载光驱到/cdrom/cd目录,如下:
如果是下载的cpio.gz安装包,则可能需要解压,方法如下:
#gunzip
文件名.cpio.gz
这样文件就解压成为 "文件名.cpio" 了,然后再对它进行cpio操作
#cpio -idmv
< 文件名.cpio
以oracle用户登陆终端,执行安装命令进行安装,安装命令 [/mnt/cd/runInstaller
--ignoreSysPrereqs]
A、运行过程中可能出现如下错误:
设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误:
|
Xlib: connection to ":0.0" refused by
server
Xlib: No protocol specified
Error: Can't open display: :0.0
|
解决方式:这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在
当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户,
也就是切换身份前的用户执行如下命令[xhost
+],之前我用root账户登陆的Xwindows,则切换到root帐户下执行[root#xhost
+]即可。
B、安装过程出现下列错误:
安装过程出现如下警告:
Warning: Cannot convert
String"-watanabe-mincho-Medium
-r-normal--*-140-*-*-c-*-jisx0208.1983-0"to type
FontStruct
但是程序仍能执行,只是执行后窗口出现乱码,如下:
问题原因:oracle字符集的UO楲,它就l拹z.字符,所以显示乱码
解决方法:解决方法有两种,一种是安装字符集,第二种简单的就是使用英文安装,怎么才能使用英文安装呢?执行如下命令之后在安装软件即可解决:
oracle$export LANG=en_US
oracle$export LC_ALL=en_US
oracle$export LANGUAGE=en_US
C、安装出现下列问题:
中文安装提示:”在oraparam.ini 中未找到先决条件检查,不执行系统系统先决条件检查。”
英文安装提示:”No pre-requisite checks found in oraparam.ini, no
system pre-requisite checks will be executed.”
问题原因:Error in writing to directory
/tmp/OraInstall2007-09-08_01-49-19AM. Please ensure that this
directory is writable and has atleast 69 MB of disk space.
Installation cannot continue
解决方法:清空linux临时目录tmp释放出足够空间即可。
正常运行安装程序成功后弹出oracle10G安装主界面,在安装界面中,Oracle Home Location路径是刚才给oracle编辑HTUprofileUTH时添加的,UNIX DBA Group默认为oinstall.如下图:
接着,配置Oracle安装主路径和添加信任用户组
安装系统自动检查ORACLE安装必备条件是否具备,具备则通过检查继续安装,检查界面如下
接下来安装程序开始安装ORACLE,安装过程如下列图示
开始数据库orcl的创建
完成数据库orcl的创建
Password Management
Orcl数据库创建向导成功完成后,以root账户执行两个脚本
执行/oracle/app/oraInentory/orainstRoot.sh脚本结果如下:
执行/oracle/oracle/product/10.2.0/db_1/root.sh脚本结果如下:
完成整个oracle安装
通过上边的URL地址我们可以访问到Isql*Plus、Enterprise Mangager等WEB界面工具。
6、 还原Centos5.2发行标识
根据备份文件/etc/redhat-release.bak还原/etc/redhat-release文件内容到安装ORALE前的状态。
创建数据库的时候如果报 unable
to create shared memory segment
这和linux的hugepage有关,我的版本是centos6.3,可能在创建共享段时需要用到hugepage,有权限限制,解决方法
[root@localhost oradisk]# id oracle
uid=500(oracle) gid=500(oinstall)
groups=500(oinstall),501(dba)
[root@localhost oradisk]#
用root执行下面的命令,将dba组添加到系统内核中
[root@localhost oradisk]# echo 501 >
/proc/sys/vm/hugetlb_shm_group
这样启动数据库,问题消失;但是如果系统重启了,还需要执行上面的命令,治标不治本。一劳永逸的办法就是修改文件sysctl.conf,方法如下:
[root@localhost oradisk]# vi
/etc/sysctl.conf
....
vm.hugetlb_shm_group = 501
....
[root@localhost oradisk]# sysctl -p
Linux下Oracle 10g自动启动与关闭的实现
环境:RHEL 5.5 + Oracle 10g + VMWare 5.5
尝试在linux下进行oracle的自动启动与关闭,经过多次摸索,完整实现如下:
1、修改oratab文件,使数据库自动启动
#vi /etc/oratab
sid:/opt/app/ora10g/oracle/product/10.2.0/db_1:Y
-----即把原来的N修改为Y。
2、修改dbstart、dbshut脚本,使之能够自动启动、关闭LISTENER
将dbstart与dbshut两个脚本中的ORACLE_HOME_LISTNER=$1改为
ORACLE_HOME_LISTNER=$ORACLE_HOME即可(我这个版本好像只修改dbstart,dbshut中没有什么要修改)
3、编写启动脚本/etc/rc.d/init.d/oracle
-
#!/bin/bash
-
#
-
#################FUNCTION#############
-
#
-
# AutoStart Oracle and listener
-
# AutoStop Oracle and listener
-
#
-
#####################################
-
#
-
# Created by ZhouYS 2003-11-26
-
# Modified by XiaoFengBin 2010-09-13
-
#
-
# chkconfig: 2345 99 01
-
# description: oracledb starts/stops the Oracle server
-
-
case "$1" in
-
start)
-
echo "Starting Oracle Databases ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "dbstart" >> /var/log/oracle
-
echo "Done."
-
echo "Starting Oracle Listeners ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "lsnrctl start" >> /var/log/oracle
-
echo "Done."
-
echo "Starting EM ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Starting EM as part of system up." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "emctl start dbconsole" >> /var/log/oracle
-
echo "Done."
-
echo "Starting isqlplus ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Starting isqlplus as part of system up." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "isqlplusctl start" >> /var/log/oracle
-
echo "Done."
-
echo ""
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Finished." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
touch /var/lock/subsys/oracle
-
-
;;
-
stop)
-
echo "Stoping EM ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Stoping EM as part of system down." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "emctl stop dbconsole" >>/var/log/oracle
-
echo "Done."
-
echo "Stoping isqlplus ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Stoping isqlplus as part of system down." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "isqlplusctl stop" >>/var/log/oracle
-
echo "Done."
-
echo "Stoping Oracle Listeners ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "lsnrctl stop" >> /var/log/oracle
-
echo "Done."
-
echo "Stoping Oracle Databases ... "
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
su - oracle -c "dbshut" >>/var/log/oracle
-
echo "Done."
-
echo ""
-
echo "-------------------------------------------------" >> /var/log/oracle
-
date +" %T %a %D : Finished." >> /var/log/oracle
-
echo "-------------------------------------------------" >> /var/log/oracle
-
rm -f /var/lock/subsys/oracle
-
-
;;
-
restart)
-
$0 stop
-
$0 start
-
-
;;
-
*)
-
echo "Usage: oracle {start|stop|restart}"
-
exit 1
-
esac
-
exit 0
4、添加服务
[root@by init.d]# chmod 755 oracle
[root@by init.d]# chmod +x /etc/rc.d/init.d/oracle
[root@by init.d]# chkconfig --add oracle
[root@by init.d]# chkconfig --list oracle
oracle
0:关闭 1:关闭
2:启用 3:启用
4:启用 5:启用 6:关闭
如果出现:bash: chkconfig: command not
found,那么一般是chkconfig包没装或者装了路径没设置对。
[root@by init.d]# PATH="$PATH":/sbin
[root@by init.d]# echo $PATH
/sbin:/usr/kerberos/sbin:/opt/oracle/product/10.2.0/db_1/bin:/usr/sbin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/oracle/bin:/sbin
5、测试服务
[root@by init.d]# service oracle stop
如果出现如下错误:
Stoping EM ...
/home/oracle/.bash_profile: line 23: ulimit: open files: cannot
modify limit: 不允许的操作
Done.
可在
[root@by init.d]# vi /etc/security/limits.conf
添加如下内容:
oracle
soft
nproc 2047
oracle
hard
nproc 16384
oracle
soft
nofile 1024
oracle
hard
nofile 65536
Ok,一切完成。关闭系统,重启,最后验证,都自动启动了。