全部博文(15)
分类: LINUX
2007-03-29 09:58:42
[标签]: Linux
[说明]:测试Oracle10g(10.2) 在Redhat AS4u2 x86_64 上安装
# camor原创并首发于http://camor.cublog.cn
# 转载和引用请先留言并注明出处!
# [By camornow$gmail.com]
设定:
# -> root的shell
$ -> oracle的shell
----------------------------------------------
硬件环境:
CPU:Intel Xeon 3G*2
MEM:2G
/dev/sda3 15G /
/dev/sda2 30G /Datas
/dev/sda1 99M /boot
none 1005M /dev/shm
/dev/sda6 9.7G /home
/dev/sda5 9.7G /usr
-->共72G(72*72,Raid1),我单独划分/Datas为30G来放置oracle安装文件及oracle数据库设定目录。
系统环境:
RedHat Advanced Server 4u2 (2.6.9-22)
@ X Window System
@ GNOME Desktop Environment
@ KDE Desktop Environment
@ Editors
@ Engineering and Scientific
@ Graphical Internet
@ Text-based Internet
@ Authoring and Publishing
@ Server Configuration Tools
@ Development Tools
@ Kernel Development
@ X Software Development
@ GNOME Software Development
@ KDE Software Development
@ Administration Tools
@ System Tools
Oracle版本:
Oracle Database 10g (10.2.0.1) Software
【 一 】==> 解压10201_database_linux_x86_64.cpio (我放到了/Datas/install目录下):
#cpio -idmv < 10201_database_linux_x86_64.cpio
这里会解包生成database的目录,内含runInstaller的安装脚本。
【 二 】 ==> 检查安装所需环境设置:
2.1) 编辑 /etc/sysctl.conf,加入以下内容:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
存盘退出后运行这个指令检查是否设置正确:
#sysctl -p
2.2) 编辑 /etc/security/limits.conf ,加入以下内容:
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
存盘退出。
2.3) 编辑 /etc/pam.d/login ,加入以下内容:
session required /lib/security/pam_limits.so
2.4) 编辑 /etc/selinux/config,确认以下内容存在并打开(如没有则添加在最后)
SELINUX=disabled
你也可以在xwindow下使用图形工具修改:
Applications > System Settings > Security Level,点击SELinux tab并使其disable(我没试过)
【 三 】 检查安装oralce10g的依赖包是否存在,如没有则安装:
#rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' \binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio
//btw:我是安装完Redhat AS4之后,把全部rpm包都拷贝到了/Datas/AS4_x86_64/RedHat/RPMS目录下了,不用换盘
我的检查结果如下:
binutils-2.15.92.0.2-13.0.0.0.2 (x86_64)
compat-db-4.1.25-9 (i386)
compat-db-4.1.25-9 (x86_64)
control-center-2.8.0-12.rhel4.2 (x86_64)
gcc-3.4.4-2 (x86_64)
gcc-c++-3.4.4-2 (x86_64)
glibc-2.3.4-2.13 (i686)
glibc-2.3.4-2.13 (x86_64)
glibc-common-2.3.4-2.13 (x86_64)
gnome-libs-1.4.1.2.90-44.1 (x86_64)
libstdc++-3.4.4-2 (i386)
libstdc++-3.4.4-2 (x86_64)
libstdc++-devel-3.4.4-2 (i386)
libstdc++-devel-3.4.4-2 (x86_64)
make-3.80-5 (x86_64)
pdksh-5.2.14-30.3 (x86_64)
sysstat-5.0.5-1 (x86_64)
xscreensaver-4.18-5.rhel4.9 (x86_64)
libaio-0.3.103-3 (i386)
libaio-0.3.103-3 (x86_64)
------------------------------------------------------------------
!!! 注意(一):
Redhat AS4.02 x86_64,默认安装的是binutils-2.15.92.0.2-15.x86_64.rpm,这个版本会引起oracle安装失败!
应另外下载binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm并强行安装。
#rpm -Uvh --force binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
compat-oracle-rhel4-1.0-5.i386.rpm 不知有用没有。总之是朋友告诉我可能有用。抱着以求万全的方法我也把它安装上了。
如果你安装不成功,可以下载这个包试试。
!!! 注意(二):
有时因为RedHat AS4u2_x386_64的gcc版本跟oracle10g_10.2所需版本不符,导致oralce安装完成后运行dbca指令建库无反应,这时应该预先设定好gcc版本关系:
#cd /usr/bin
#mv gcc gcc.script
#mv g++ g++.script
#ln -s gcc32 gcc
#ln -s g++32 g++
【 四 】 ==> 创建oracle所需的组、用户,设定oracle用户环境变量
4.1) 创建oracle所需的组
#groupadd dba
#groupadd oinstall
#useradd -g oinstall -G dba -m oracle
#passwd oracle
4.2) 创建oracle安装所需的目录:
#mkdir /Datas/app;mkdir /Datas/app/oracle
#chown -R oracle.oinstall /Datas/app
4.3) 修改oralce安装文件所在目录的组属性,一会儿要用oracle用户运行安装的:
#chown -R oracle.oinstall /Datas/install/database
4.4) 修改oracle用户的环境变量
#su - oracle
$vi .bash_profile
我的.bash_profile是这些内容:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
########################################
# For Oracle 10g install
export TMOUT=6000000
PS1="\$PWD\\$"
trap " " 0 1 2 3 5 9 15
trap clear 0
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/Datas/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/Mydb
export ORACLE_SID=orcl1
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
LD_ASSUME_KERNEL=2.6.9; export LD_ASSUME_KERNEL
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
#
LC_CTYPE=zh_CN.GB2312
LC_ALL=zh_CN
LANG=zh_CN.GB2312
umask 022
#
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
#------------------- Set Over
修改完成以后运行这个指令使变量生效:
$source /home/oracle/.bash_profile
------------------------------------------------------------------
!!! 注意(三):
有可能在刚才的指令运行后系统提示ulimit无效,权限不够。可以使用root权限修改/etc/profile文件来运行。
$su - root
#vi /etc/profile
在末尾添加:
#---- for Oracle 10g install
LC_CTYPE=zh_CN.GB2312
LC_ALL=zh_CN
LANG=zh_CN.GB2312
export LC_CTYPE LC_ALL LANG
#----
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
存盘退出,然后使用root帐户运行:
#source /etc/profile
重新回到oracle帐号下:
#su - oracle
$
------------------------------------------------------------------
4.5) 进入xwindows
$startx
如果使用了我刚才的设置文件,这时xwindows应该是英文状态的。
(如果是中文,则需要修改xwindows的language为英文,然后注销并重新登陆xwindows。btw:这是沿袭oralce9x在AS3上的安装方法。。我没试过在AS4u2_x86_64中文环境中安装,不知道会否出错。)
先开一个shell窗口,su到root,执行这个指令:
#xhost +
access control disabled,clients can connect from any host
表示现在可以使用x方式安装oralce了。
【 五 】 ==> 安装oralce10g
5.1)在oracle登陆的xwindows中,打开一个shell窗口,进入到oralce的安装文件所在目录
为保险起见,我在运行安装脚本之前又分别以root帐号运行了/etc/profile和以oralce帐号source了/home/oracle/.bash_profile。(没办法,之前安装失败太多,所以现在尽量求保全)
其中oralce帐号source .bash_profile的时候还是会提示limit权限不够无法设置,这时不用理会了。
5.2) 在oracle的shell中运行/Datas/install/database/runinstaller文件
$/Datas/install/database/./runinstaller
在英文状态下先出现夹杂中文乱码的提示(找不到某些字体),随后出现oracle10g的简体中文安装面板。
5.3) 取消“安装数据库”前面的小勾(我们到安装完后再使用dbca指令手动安装数据库),然后install
5.4) 注意xwindows下保持至少2个root的shell!
shell01用来监控安装日志,shell02用来执行安装过程中需要以root执行的几个指令!
shell01:
#tail -f /Datas/app/oracle/oraInventory/logs/*.log
shell02:
#mkdir /DISCARD
#chown oralce.oinstall /DISCARD
//说明:shell02是我在shell1中监控安装日志时,发现到84%进程时总是提示:
“信息: cp: stat‘/DISCARD/’失败: 没有那个文件或目录”
火速执行shell02之后的记录是:
“信息: cp: 略过目录‘/DISCARD/’”。
5.4) 系统检查你的安装环境,有可能会提示检查通过,但是网络设置未检查,是否继续? 没关系,next就可以了。
5.5) 一路安装下去。
【 六 】 手动建库
6.1) 安装完oracle10g以后,现在可以使用dbca进行手动建库。
$dbca
在弹出的对话面板中选择 创建数据库 - >定制数据库 -> 在全局数据库名中输入
orcl1
// 这个是我们在oralce的.bash_profile中设定好了的(ORACLE_SID=orcl1;export ORACLE_SID),当然如果你设定了另外的SID,这里就要输入同样的字符。下面SSID会自动同步输入。
6.2) 一直“下一步”。直到 步骤9: 数据库内容
数据库主键中,只保留最后一项打勾:Enterprise Manager 资料档案库。 然后下一步
步骤10; 初始化参数:, 内存如果在4G,就改 40%为60%,进程改为50
然后一律下一步,直到"完成"。
应该会出现正在建库的进度条。
------------------------------------------------------------------
!!! 注意(四):
如果刚才安装前没有设定好gcc的关系,这时很可能进度没反应了。没有弹出面板,没有进度条。等再久也没用。。。
这时可以选择取消,然后我们来做一些补救措施。
1. 打开一个shell,转到root帐号并执行这些指令:
#cd /usr/bin
#mv gcc gcc.script
#mv g++ g++.script
#ln -s gcc32 gcc
#ln -s g++32 g++
2. 回到oracle帐号下,执行这个指令:
$cd $ORACLE_HOME/bin
$relink all
一片哗哗哗的滚动提示过后,再重新执行6.1)的步骤,使用dbca指令建库。
------------------------------------------------------------------
!!! 注意(五):
如果你使用iptables做防火墙,这时要为oracle开放一些端口,以便管理:
#vi /etc/sysconfig/iptables
插入这些:
#------- For Oracle port
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1158 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5560 -j ACCEPT
#-------------------------
退出后执行这个指令:
#service iptables restart
------------------------------------------------------------------
然后可以登陆使用oracle的web页面进行管理了。
登陆页面是:
【注意】
binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
compat-oracle-rhel4-1.0-5.i386.rpm
libaio-0.3.103-3.i386.rpm
libaio-0.3.103-3.x86_64.rpm
libaio-devel-0.3.103-3.i386.rpm
libaio-devel-0.3.103-3.x86_64.rpm
这几个补丁需要在安装前打上。。否则安装出错。
如果我有说过要安装compat-libcwait-2.1-1.i386.rpm这个补丁。。。那么它是在X86系统上使用的,EM64T的系统上(AS4 x86_64)上不能用,否则安装这个包后会出现错误提示"ERROR: ld.so: object '/lib/libcwait.so' from /etc/ld.so.preload cannot be preloaded: ignored."
当然卸载了就没事了。
为方便管理,可以写一个启动脚本,文件名dbgoo,放到/etc/init.d下
#vi /etc/init.d/dbgoo
内容如下:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 20 80
#
# Set ORACLE_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORACLE_OWNER to the user id of the owner of the
# Oracle database in ORACLE_HOME.
ORACLE_HOME=/Datas/app/oracle/product/10.2.0/Mydb
ORACLE_OWNER=oracle
if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/./emctl start dbconsole"
echo "db Start OK"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
echo "db Stop OK"
;;
esac
# --------Over
存盘退出。
启动oracle服务:
#dbgoo start
停止oracle服务:
#dbgoo stop
另外在初始使用时,系统可能会提示:
/sbin#./dbgoo start
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 27-6月 -2006 16:48:13
Copyright (c) 1991, 2005, Oracle. All rights reserved.
启动/Datas/app/oracle/product/10.2.0/Mydb/bin/tnslsnr: 请稍候...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
写入/Datas/app/oracle/product/10.2.0/Mydb/network/log/listener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=system02)(PORT=1521)))
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Linux: Version 10.2.0.1.0 - Production
启动日期 27-6月 -2006 16:48:13
正常运行时间 0 天 0 小时 0 分 0 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序日志文件 /Datas/app/oracle/product/10.2.0/Mydb/network/log/listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=system02)(PORT=1521)))
监听程序不支持服务
命令执行成功
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
TZ set to Asia/Chungking
OC4J Configuration issue. /Datas/app/oracle/product/10.2.0/Mydb/oc4j/j2ee/OC4J_DBConsole_system02_orcl1 not found.
db Start OK
其中,监听程序不支持服务
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
表示监听程序未正常配置。这里我们需要重新配置一下。
先把oracle服务停下来:
#dbgoo stop
在oracle的x_windows下,启动一个shell,运行以下指令:
$source .bash_profile
$cd $ORACLE_HOME/bin
/Datas/app/oracle/product/10.2.0/Mydb/bin$netca
这里会弹出一个面板。选择
监听程序配置 ->下一步 -> 添加,下一步 -> LISTENER,下一步 -> 选定的协议:TCP,下一步 -> 使用标准端口(1521),下一步 -> 是否配置另一个监听程序?
(否), 下一步 ->完成。
然后重新在root 的shell下执行
#dbgoo restart
把oracle服务加入到系统自启动服务中
echo "dbgoo start" >>/etc/rc.d/rc.local
如果需要卸载 oracle 10g, 可以采用下面的步骤:
必须在root的shell下:
1. cd $ORACLE_HOME/bin //必须事先检查是否设定了 $ORACLE_HOME 的全局变量
2. ./localconfig delete
3. rm -rf $ORACLE_BASE/* //必须事先检查是否设定了 $ORACLE_BASE 的全局变量
4. rm -f /etc/oraInst.loc
rm -f /etc/oratab
5. rm -rf /etc/oracle
6. rm -f /etc/inittab.cssd
7. rm -f /usr/local/bin/coraenv
rm -rf /usr/local/bin/dbhome
rm -rf /usr/local/bin/oraenv
说明:(2006-07-06)
binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
compat-oracle-rhel4-1.0-5.i386.rpm
libaio-0.3.103-3.i386.rpm
libaio-0.3.103-3.x86_64.rpm
libaio-devel-0.3.103-3.i386.rpm
libaio-devel-0.3.103-3.x86_64.rpm
这几个补丁需要在安装前打上。。否则安装出错。
如果我有说过要安装compat-libcwait-2.1-1.i386.rpm这个补丁。。。那么它是在X86系统上使用的,EM64T的系统上(AS4 x86_64)上不能用,否则安装这个包后会出现错误提示"ERROR: ld.so: object '/lib/libcwait.so' from /etc/ld.so.preload cannot be preloaded: ignored."
当然卸载了就没事了。
OK,图片在这里:
camor原创并首发于http://camor.cublog.cn
转载和引用请先留言并注明出处!
[By camornow$gmail.com]