Oracle9i的安装
花费了周一和周二两天的时间终于装上了oracle,下面是安转步骤,以备以后参考。
在rh9(2.4.20-8)上安装oracle9i(oracle9201)。
1在rh的安装过程中要注意四点
一是硬盘空间要大一些,rh9全部安装大约需要4.5G的空间,oracle9i数据库大约需要2-2.5G的空间,所以文件分区至少7G吧,太小了容易出问题,越大越好哈。
二是为了执行Oracle9i标准安装和创建原型(simple prototype)数据库,Oracle建议Oracle9i(9.0.1)服务器至少需要 512M 内存,两倍内存或不少于 400M 的交换 (swap) 空间,我强烈建议设在1G左右,如果swap较小,例如512M,在数据库创建阶段会提示“out of memory”的错误。当然也可以通过建立临时交换文件临时增加交换空间,代替使用原始设备(raw device),方法如下:
su -
dd if=/dev/zero of=tmpswap bs=1k count=900000 注:约1G左右
chmod 600 tmpswap
mkswap tmpswap
swapon tmpswap
取消临时交换空间,可以执行以下命令:
su -
swapoff tmpswap
rm -rf tmpswap
三是rh9要安装英文的,在安装时有两次选择机会,最好是两次都安装英文的。我在安装时第一次选择中文,第二次选择英文,oracle还是有乱码,注销后以英文环境登陆都不行。所以建议第一次选英文,第二次选英文和中文两种,但是安装oracle时必须是英文环境。
四是要多安装一些开发包,因为后续安装时可能需要,只要你有空间完全可以全部安装。
2创建oracle用户和组
su -
groupadd oinstall # group owner of oracle files
groupadd dba #group of users to be granted with SYSDBA system privilege
groupadd -g oinstall -G dba oracle
passwd oracle
3准备oracle文件目录
su -
mkdir -p /opt/ora9/product/9.2
mkdir /var/opt/oracle
chown oracle.dba /var/opt/oracle
chown -R oracle.dba /opt/ora9
注:我第一次安装出现问题,就把or9/删除了,又重新mkdir,但是忘了chown,结果再以oracle用户安装时提示没有目录操作权限。
4安装支持软件包
su -
运行以下命令,检查开发包是否安装
rpm –q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils
如果其中任何一个没有安装,例如package cpp is not installed,则插入rh9的安装盘,cdrom的挂载命令是
mount -t iso9660 /dev/cdrom /mnt
在RPMS文件夹中找的cpp时则运行以下命令安装
rpm –ivh cpp-3.2.2-5.i386.rpm
注:不同的rh版本中cpp的版本也是不一样的
5设置内核参数,调节信号灯及共享内存
打开/etc/sysctl.conf文件,将以下数据写到末尾并保存
kernel.shmmax = ?
注:为了安装 oracle9i(9.2.0),需要增加所有rh版本的linux服务器的最大共享内存(maximum shared memeory)。否则oracle数据库配置助手(the Oracle Database Configuration Assistant)会显示如下错误信息:
ORA-27123: unable to attach to shared memory segment unable to attach to share memory segment
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
建议关于net.ipv4.ip_local_port_range不要改动,可以用cat /proc/sys/net/ipv4/ip_local_port_range看到rh9对这个所定义的范围已经符合,而且端口范围比这个小。
其中kernel.shmmax是共享内存段的最大尺寸,kernel.shmmin是共享内存段的最小尺寸,进入/proc/sys/kernel可以用以下命令查看其数值。
cat shmmax
cat shmmni
cat shmall
而kernel.shmmax的计算方法一般是RAM(K)*1024*2,RAM的数值可以用以下命令查看。
grep MemTotal /proc/meminfo
MemTotal: XXXX KB
关于kernel.sem的数值,其中250是参数SEMMSL的值,32000是参数SEMMNS的值,100是参数SEMOPM的值,128则是参数SEMMNI的值。
接下来,打开/etc/security/limits.conf文件,将以下数据写入末尾并保存,这是设置oracle对文件的要求。
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
6设置oracle的系统环境
su - oracle
编辑/home/oracle/.bashrc文件,加入以下数据
#oracle9i
export ORACLE_BASE=/opt/ora9 注:等号前后不要有空格
export ORACLE_HOME=/opt/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=ora9i 注:这个值唯一标示一个数据库,可以更改,建议用大写字母(小写也可)
export ORACLE_TERM=vt100
export LD_ASSUME_KERNEL=2.4.1
注:rh9默认使用本地POSIX线程库(the Native POSIX Thread Library - NPTL),POSIX线程的linux改进实现。但是,由于使用了NPTL,oracle应用程序会引起一些问题,rh9没有通过oracle9i认证。为了修正这些问题,你可以设置环境变量LD_ASSUME_KERNEL=2.4.1,通知系统使用原来的浮点堆栈linux线程(Linuxthreads with floating stacks)。否则会导致oracle安装器runInstaller挂起、数据库配置助手(the Database Configuration Assistant)dbca不能启动等问题。
export THREADS_FLAG=native
export LD_LIBRARY_PATH=/opt/ora9/product/9.2/lib:$LD_LIBRARY_PATH
export PATH=/opt/ora9/product/9.2/bin:$PATH
环境变量的配置非常关键,一定要留神。
7解压安装文件
将下载的或者光盘上的oracle9i安装文件拷贝到某个目录,例如(光盘)
su -
mkdir /mnt/oracle
mount -t iso9660 /dev/cdrom /mnt
waiting
cp /mnt/cdrom/lux_920_disk* /mnt/oracle
注意一般有三个安装文件lux_920_disk1.cpio.gz,lux_920_disk2.cpio.gz,lux_920_disk3.cpio.gz,还有每次换光盘之前记得
umount /dev/cdrom
注:我之所以写得这么详细是因为我是菜鸟哈,经常犯一些弱弱的错误:(
现在开始解压/mnt/oracle下的文件,linux支持多线程的,打开三个terminal,输入以下指令
terminal1#zcat lux_920_disk1.cpio.gz | cpio -idmv
terminal2#zcat lun_920_disk2.cpio.gz | cpio -idmv
terminal3#zcat lun_920_disk3.cpio.gz | cpio -idmv
解压过程中,自动在/mnt/oracle下创建了三个包含安装文件的目录
Disk1
Disk2
Disk3
记住,热身工作到此完毕,reset,一定要重启吗?不太清楚,可能上面设置的某些参数需要重启才能生效。
8安装及错误处理
su -
export DISPLAY=localhost.localdomain:0.0
xhost +localhost.localdomain
其中的localhost.localdomain其实就是hostname,可以用命令hostname查看。
注:上述两项不设置的话会出错,runinstaller无法运行,提示如下错误:
Xlib:connection to “:0.0” refused by server
Xlib:Client is not authorized to connect to Server
上面这个问题好像比较复杂,我没有仔细看。大概是oracle不再支持字符安装模式,为了在远程桌面上显示runinstaller的界面,即X信息,需要做相应的设置。注意,如果不使用Exceed,X显示重链接机制不能工作在NT桌面机器之上。因为我是本地安装,问题就简单了哈:)
然后切换到oracle用户,开始安装
su - oracle
cd /mnt/oracle/Disk1
./runinstaller
你看激动人心的oracle安装界面了吗?嘻嘻
oh baby,come on!
刚开始安装时需要输入一些信息,可参考下面几项:
---what would you like as the base directory(Inventory Location)
/opt/ora9/oraInventory
---unix group name(permission for updating oracle software)
oinstall 注:也可以使用dba,但出于安全考虑不推荐使用dba
---full path name for oracle home
/opt/ora9/product/9.2
等等
在接下来的安装过程中一般会碰到四个问题。
第一个问题是安装界面字符乱码,肯定是中文的原因,解决方案
su - oracle
export LANG=en_US:LANG
注:我也碰到了这个问题,但是利用该解决方案没有成功,最后我不得不重装了一遍rh9,全英。如果有更好的办法,请告诉我[email protected],但我还是建议装英文系统。
第二个问题是提示关于这个文件ins_oemagent.mk的,解决方案,忽略,我们将在下面的步骤中修复它。
第三个问题是提示"Error in invoking target install of makefile $ORACLE_HOME/ctx/lib/ins_ctx.mk",解决方案,编辑文件$ORACLE_HOME/ctx/lib/env_ctx.mk,在"INSO_LINK ="行(第1365行)加入"$(LDLIBFLAG)dl",修改后如下:
INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca $(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex $(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut $(LDLIBFLAG)sc_ch $(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c -Wl,rpath,
$(CTXHOME)lib $(CORELIBS) $(COMPEOBJS)
按"retry"键即可继续。
第四个问题是oracle agent configuration assistant启动失败,提示以下错误:
parameter "nodeinfo"=NO_VALUE
agent service failed
该问题的解决方案是---我不知道:(
因为我没有用到agentctl服务,所以就没有解决该问题,一般用不到吧?解决该问题需要补丁包的。
最后,还需要根据提示,用root用户执行一次 $ORACLE_HOME/root.sh,Oracle软件就初步安装完了。
我们回头来解决上边的那个ins_oemagent.mk问题。以oracle用户执行:
cd $ORACLE_HOME/network/lib
make -f ins_net_client.mk install
编辑$ORACLE_HOME/ctx/lib/ins_ctx.mk文件的第13-14行,由:
ctxhx: $(CTXHXOBJ)
$(LINK) $(CTXHXOBJ) $(INSO_LINK)
改为
ctxhx: $(CTXHXOBJ)
$(LINK) -ldl $(CTXHXOBJ) $(INSO_LINK)
然后执行
make -f $ORACLE_HOME/ctx/lib/ins_ctx.mk install
现在,Oracle 软件已经完全安装成功,你可以用dbca命令来建立数据库,或者执行其他DBA命令啦。
9经验总结
一:动不动就重装不是解决问题的办法,碰到问题去网上查一下,你碰到的问题估计其他人早就碰到了
二:如果因为其他原因安装未成功,请在再次运行之前,清除以下文件:
/etc/oraInst.loc /etc/oratab /tmp/<OtherOracleOwnerFile> $ORACLE_BASE/*