FreeBSD5.2中成功安装oracle9i手记

来源:岁月联盟 编辑:zhu 时间:2008-01-18
FreeBSD5.2中成功安装oracle9i手记内容简介:【FreeBSD教程】 无可否认FreeBSD是最优秀的操作系统之一,但缺少大型商业数据库的支持阻碍了FreeBSD走向高端和企业应用,Oracle作为数据库的领头雁,假如能够在FreeBSD上安家,则是我等FreeBSD FANS的一个

  【FreeBSD教程】无可否认FreeBSD是最优秀的操作系统之一,但缺少大型商业数据库的支持阻碍了FreeBSD走向高端和企业应用,Oracle作为数据库的领头雁,假如能够在FreeBSD上安家,则是我等FreeBSD FANS的一个鼓舞。经过两天的努力并参考了一个俄文网站的关于在FreeBSD上安装ORACLE8i的介绍,成功地在FreeBSD5.2上安装的ORACLE9i。以下是安装手记。

  一 内核配置

  # Add for oracle
  options NBUF=2048
  options MAXDSIZ="(1024UL*1024*1024)"
  options MAXSSIZ="(1024UL*1024*1024)"
  options DFLDSIZ="(1024UL*1024*1024)"
  #
  options SYSVSHM
  options SHMMAXPGS=65536
  options SHMMIN=2
  options SHMMNI=256
  options SHMSEG=256
  #
  options SYSVSEM
  options SEMMAP=512
  options SEMMNI=512
  options SEMUME=512
  options SEMMNS=1024
  options SEMMNU=512
  options SEMMSL=256
  options SEMOPM=256
  #
  options SYSVMSG #SYSV-stylmessage queues
  options MSGMNB=8192
  options MSGMNI=256
  options MSGSEG=8192
  options MSGSSZ=16
  options MSGTQL=128
  # Add end

  另外将maxusers设为512,我在定制内核时选择的是ULE调度器,现在ULE已经是默认的调度器了。

  二 系统配置

  1 SWAP分区大小为1G,RAM256M,ORACLE_HOME要求有5G以上空间。

  2 安装Linux仿真环境。

  必须安装linux_base-7.1和linux_devtools-7.1两个PKGS,但我在安装时发现从ports已经无法安装devtools-7.1了,所以被迫从一个安装了RH7.3的机器中根据两个ports的介绍将整个RH7.3系统CP到了FreeBSD中,假如需要我可以将这个目录?树打好一个tar包提供给和位。(注:我在2004年2月12日cvsup的ports后,使用/usr/ports/emulators/linux_base和/usr/ports/devel/linux_devtools-7两个ports就可以了。)无论你如何构建/compat/linux目录树,必须保证在仿真环境中有ar,as,ld,nm,tr,cpp,chmod,g ,printf,find,chgrp,chown等程序。

  3 调整Linux仿真环境

  a 在/compat/linux/etc中建立mtab到/etc/fstab的链接
  ln -s /etc/fstab /compat/linux/etc/mtab

  b 在/compat/linux/bin中建立到awk,sed,chown的链接
  ln -s /compat/linux/usr/bin/awk /compat/linux/bin/awk 红色部分有误,应改成蓝色部分
  ln -s /compat/linux/usr/bin/sed /compat/linux/bin/sed
  ln-s /usr/bin/awk /compat/linux/bin/awk
  ln -s /usr/bin/sed /compat/linux/bin/sed
  ln -s /usr/sbin/chown /compat/linux/bin/chown

  以上配置是为了满足ORACLE9i在安装时的一些脚本的要求,我所知道的在运行root.sh时用到以上的配置,但也可以在运行前修改这个脚本,我安装时用的是后??,不知是不是这个原因导致了后面会讲的一个错误。

  c 在/compat/linux/bin中建立arch可执行文件,内容为:
  #!/compat/linux/bin/bash
  echo i686 #根据你的机器是i586还是i486
  打上可执行标记:
  chmod x arch

  4 打开linux仿真支持,修改rc.conf文件也可以kldload linux模块
  enable_linux="YES"

  5 mount linux proc文件系统

  mkdir /compat/linux/proc
  mount -t linproc /dev/device /compat/linux/proc
  第二步可以放入/etc/fstab文件中在开机时自动截入

  6 添加oracle用户组和用户

  pw groupadd -n dba -g 94
  pw groupadd -n oinstall -g 95
  pw useradd -n oracle -u 94 -c "Oracle Daemon" -d /home/oracle -s
  /compat/linux/bin/bash -g dba -G oinstall,wheel 可能需要先在/etc/shells加入一行/compat/linux/bin/bash

  7 配置oracle用户环境

  mkdir /home/oracle
  chown oracle:dba /home/oracle
  cd /home/oracle
  编辑.profile配置oracle用户环境:
  PATH=/compat/linux/bin:/compat/linux/sbin:compat/linux/usr/bin:
  /compat/linux/usr/sbin:/home/oracle/920/bin:/sbin:/bin:/usr/sbin:/usr
  /bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin; export PATH
  ORACLE_BASE=/home/oracle; export ORACLE_BASE
  #下面一个是安装oracle的目录
  ORACLE_HOME=/home/oracle/920; export ORACLE_HOME
  LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
  ORACLE_SID=ORCL; export ORACLE_SID
  ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
  export DISPLAY=:0

  三 安装预备

  下载oracle9i(9.2.0) for linux的三个文件在一个足够大小(>2G)空间解压缩最后得到三个目录:Disk1,Disk2,Disk3。

  四 安装

  1 以oracle用户登录

  2 进入X
  startx

  3 在X中打开一个终端窗口,在窗口中运行安装程序
  cd /path/Disk1
  ./runInstaller
  安装程序开始运行,出现界面后按提示选择进行安装,这与安装典型的
  windows程序一样,安装时默认的临时文件在/tmp目录中,此时进入/tmp可看见oracle9i的安装目录和一些临时文件。

  4 安装时的必须的手工干预
  a 在刚开始安装会有一个窗口提示运行一个脚本,这时可在另一个终端窗口中先以root身份在/compat/linux/etc中创建一个名为oraInst.loc的文件并将属主设为oracle
  cd /compat/linux/etc
  touch oraInst.loc
  chown oracle:dba oraInst.loc
  然后以oracle身份运行脚本,之后继续安装。
  b 在安装部分完成后在连接数据库的过程中有一个错误出现(与ins_ctx.mk有关),此时可选忽略,不会引响数据库的基本功能,但在Agent配置时会出错,其它正常。我不知道是否每一次安装都会有这个错误,也不知道是什么原因造成了这个错误。
  我安装的时候没有碰到这个错误,可能的原因
  "Error in invoking target install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk"
  I saw this error only when I installed Oracle9iR2 (9.2.0). This was also the only problem I experienced with Oracle 9i R2 on Red Hat 8.0. However, this does not necessarily mean that you won't experience other problems described here.

  When I had this problem, the following errors showed up in $ORACLE_HOME/install/make.log:
  /lib/libdl.so.2: undefined reference to `_dl_addr@GLIBC_PRIVATE'
  /lib/libdl.so.2: undefined reference to `_dl_open@GLIBC_PRIVATE'
  /lib/libdl.so.2: undefined reference to `_dl_close@GLIBC_PRIVATE'
  /lib/libdl.so.2: undefined reference to `_dl_sym@GLIBC_PRIVATE'
  /lib/libdl.so.2: undefined reference to `_dl_vsym@GLIBC_PRIVATE'

  This error comes up when the following step is executed:
  /usr/bin/make -f ins_ctx.mk install ORACLE_HOME=/opt/oracle/product/9.2.0

  Edit the file $ORACLE_HOME/ctx/lib/env_ctx.mk, go to "INSO_LINK =", and add a "$(LDLIBFLAG)dl" to the line and save it.

  Here is the full line with the added "$(LDLIBFLAG)dl" flag:

  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)

  After that hit retry in the error popup.

  If this didn't work, then try the following:

  Edit the file $ORACLE_HOME/ctx/lib/env_ctx.mk again, go to "INSO_LINK =", remove the above entry you made and add a "`cat $(LIBHOME)/sysliblist`" to the line and save it.

  Here is the full line with the added "`cat $(LIBHOME)/sysliblist`" string:

  INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m `cat $(LIBHOME)/sysliblist` $(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)

  After that hit retry in the error popup.
  参看http://www.puschitz.com/InstallingOracle9i.shtml
   c 最后一个无需手工干预的地方在数据库配置以前要以root身份运行$ORACLE_HOME/root.sh,此时观察其输出,不能有任何错误,假如有则是因为什么程序找不到造成的,可以修改这个脚本将指定所提示的程序的正确路径就可以了。

  5安装后根据需要进行数据库配置,这与WINDOWS中是一样的。

  五安装后启动数据库

  1重启系统

  2以oracle身份登录

  3启动数据库

  在初次启动数据库时,要先将initORCL.ora这个文件(在你指定的全局数据名所在的目录下的pfile目录中)复制到$ORACLE_HOME/dbs目录中,并在dbs目录中将oraPW.(全局名)的一个文件复制一份名为oraPW,然后就可以正常启动数据库了。

  六总结

  从使用来看,直接在机器上使用sqlplus进行查询,感觉不到有什么不同,至于效率还未测试。不足之处请各位批评,并请高手修正安装中的错误。
  谢谢。

图片内容