何时,纱窗外,风摇翠竹

常用链接

统计

最新评论

  • 1. re: 慎用AJAX框架
  • AJAX是中国技术领域的红灯区。。想爽,但又怕潜伏着危险。。。
  • --阿斯顿飞
  • 2. re: 慎用AJAX框架
  • 评论内容较长,点击标题查看
  • --夏如嘏
  • 3. re: 慎用AJAX框架
  • ajax 要懂的原理,同意楼主,框架慎用
  • --骄傲
  • 4. re: 慎用AJAX框架
  • @读书、思考、生活
    2、bug满天飞,那就说明是水平不到家
    您的水平能高到没有bug?
  • --楼主
  • 5. re: 慎用AJAX框架
  • 只要你懂xmlhttp,为什么非要用ajax呢,我从2000年开始使用xmlhttp,ajax刚出来的时候看了一眼,冷笑一声。所以争论没有意义,到处都是新瓶装老酒的故事
  • --挨踢的货

在Red hat ES4 上安装Oracle9i完全手册


一 简述

    在Oracle10g开始盛行的今天,9i依然在众多项目中得到广泛应用, 这次一个偶然的机会需要在Red Hat ES 4上装Oracle9i, 想想上次装Oracle还是三年前的事了, 由于ES4不 在 Oracle 9i 的官方支持的linux版本之内,这次安装用了近2天时间才搞定,查资料,找补丁,一遍一遍的重装,好像回到了当年刚参加工作时的那种状态,很有感触,做技术有些东西总是不会变。装的过程中发现对ES4上装9i的总结不多,大部分都不是很完整,便整理了这个文档,希望对大家有用。

二 技术准备

    Oracle数据库在linux下的安装相对来说要复杂一些,所以大家安装前要做一定的技术准备,有下面几个方面:

  • 要熟悉linux的基本命令
  • 要了解Oracle的基本结构和一些术语的含义,如SGA,Redo Log Buffer.
  • 要先准备一些安装资料,对安装的过程和安装过程中可能出现的问题有一个提前的认识.
    从参考资料来说,最好的资料是Oracle官方的文档,非常全面,应有尽有。购买Oracle时会专门有一张文档光盘,许多网站上也提供下载。此外,Oracle官方网站上也有专门的linux栏目。除了Oracle的官方资料以外,最值得一看的是台湾何致亿先生的《Oracle 9i 数据库管理实务》,绝对是经典。其他的一些网站上的资料,大多不够全面和完整,有些文档写的还有错误,用来参考就可以了。

三 安装准备

    在做了一定的技术准备后,我们可以开始安装Oracle了,首先是要评估一下安装的环境,包括硬件和软件的。对于硬件,Oracle的官方文档中是这样描述的:

  • How many disk drives are available to Oracle and its databases
  • How many, if any, dedicated tape drives are available to Oracle and its databases
  • How much memory is available to the instances of Oracle you will run (see your system's configuration documentation)
 而软件其实除了Linux之外就是确定要使用的 JDK 的版本,Oracle也自带了两个jdk,我们装的jdk好像没什么用,不装也没事,装的版本不对反而会引发一些问题。

对于安装 Oracle 9i,最低的内存要求是 512 M,硬盘有最少要 2.5G 的空间,400M以上的临时硬盘空间。查看系统硬件情况的几个常用的命令:

  • 查看内存的情况:     

        1) $free
        2) $top     
        3) $grep MemTotal /proc/meminfo 
        4)交换空间 # grep SwapTotal /proc/meminfo 一般这个值是1 GB或者2倍内存大小

  • 硬盘和交换分区:

          1) $df    
          2) $/sbin/swapon -s
          3) /tmp 空间 400 MB    # df -k /tmp 
          4)软件所需空间 2.5 GB     # df -k

下面要来调整系统内核参数.Oracle9i使用Linux的共享内存、交换区等资源进行工作,如果系统的的内核参数设置不能满足Oracle的需求,那么在安装或使用过程就会出现各种问题.进入目录/proc/sys/kernel后,用 cat 命令查看各个参数的值
    #cat shmmax
    #cat shmmni
    #cat shmall

   特别注意要调大linux的共享内存的值,即shmmax,否则在安装时Oracle安装程序会提示共享内存不足的错误。共享内存大小一般设为物理内存的一半,比如2G内存,你需要设成1G 就是 1024*1024*1024 = 1073741824,512M 内存就是 1474838646. 比较简便的调整的命令是以root身份执行
#echo 1073741824 > shmmax 命令。据说10g这个值需要设到2G以上才能装,恐怖. 此外很多文档上说要设置内核参数、 调节信号灯,但根据个人经验, 不设置也不会影响正常安装。

如果需要调整内核参数、 调节信号灯的话,按下面的步骤执行:
    打开/etc/sysctl.conf 文件,将下列数据写入到sysctl.conf的末尾并保存:

     kernel.shmmax = 1073741824        
     kernel.shmmni = 4096            
     kernel.shmall = 2097152
     kernel.sem = 250 32000 100 128
     fs.file-max = 65536
     net.ipv4.ip_local_port_range = 1024 65000

    其中,kernel.shmmax是共享内存段最大尺寸,kernel.shmmni是共享内存段最小尺寸。    用命令:
     #cat sem
  
   可以查看kernel.sem的数值。其中, 250 是参数SEMMSL的值,32000是参数SEMMNS的值, 100是参数SEMOPM的值,而128则是参数SEMMNI的值。


   一般来说,出于性能上的考虑,还需要需要进行如下的设定,以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)的要求. 打开/etc/security/limits.conf文件,将下列数据添加到 limits.conf的末尾并保存:
    oracle soft nofile 65536
    oracle hard nofile 65536
    oracle soft nproc 16384
    oracle hard nproc 16384

   修改并保存完毕后,重新启动。也可以执行: # /sbin/sysctl -p 命令操作来使我们所做的变更生效.

   如果此时进入到/proc/sys/kernel路径,用上述的命令再次查看,就会看到设置的参数已经生效。

用命令rpm -qa|grep compat 查看系统中是否安有以下几个软件包:

compat-libstdc++-****.i386.rpm
compat-gcc-****.i386.rpm
compat-Libgcj-****.i386.rpm
compat-Libgcj-devel-****.i386.rpm
binutils-****.i386.rpm
nss_db-compat-****.i386.rpm
一般来说应该安装cpp, glibc, egcs, egcs-c++, glibc-devel, kernel-headers等包,如果是新安装Linux,则在安装的时候选包的时候,把开发那个大类和一个兼容包的大类(里面都是 compat 开头的包)都选上,应该问题就不大. 如果按照时发现有包不全,从linux光盘里找到对应的rpm安装就是了。

四 逐步安装

1 安装JDK

  可不装。

2 创建用户

  创建用户和组,一方面是按Oracle的要求准备用户,另一方面也通过创建用户来准备好Oracle的安装容器,命令如下:

创建用户组:
[root@Server0]# groupadd oinstall
[root@Server0]# groupadd dba
添加用户,设置密码:
[root@Server0]# useradd -g oinstall -G dba oracle
[root@Server0]# passwd oracle

3 设置oracle用户的环境变量

  这是关键步骤! 编辑oracle用户根目录下的.bash_profile文件,指定其环境变量,这些参数指定安装的,在不同的Red Hat 版本上安装的区别也在这有所体现。ES 4下的配置文件示例:

	# .bash_profile

	# Get the aliases and functions
	if [ -f ~/.bashrc ]; then
			. ~/.bashrc
	fi
	
	# 这里的***.***.***.***指服务器的ip地址
	export DISPLAY="***.***.***.***:0.0"

	# User specific environment and startup programs
	export ORACLE_BASE=/home/oracle/OraHome1
	export ORACLE_HOME=/home/oracle/OraHome1
	export ORACLE_SID=dbora
	export ORACLE_TERM=xterm
	export LANG=zh_CN

	export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
	LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/openwin/lib
	LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/td/lib:/usr/ucblib:/usr/local/lib
	export LD_LIBRARY_PATH

	# 注意这一句
	export LD_ASSUME_KERNEL=2.4.19

	PATH=/bin:/sbin:/usr/bin:/usr/sbin:/etc:/opt/bin
	PATH=$PATH:$ORACLE_HOME/bin
	PATH=$PATH:/usr/java/jdk/bin:/usr/java/jdk/jre/bin:.

	CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
	CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
	export CLASSPATH

	PATH=$PATH:$HOME/bin
	export PATH
	unset USERNAME
	

说明:
1) 设置DISPLAY
    Oracle 9i不再支持字符模式的安装, 必须使用图形化安装,所以要设置display变量。如果不在配置文件中设置,也可以直接用命令 $ export display="***.***.***.***:0.0" 进行设置,如果执行命令时出错,需要以root用户在xserver中注册,命令: # xhost +***.***.***.*** 。这里的***.***.***.***指的是服务器的 IP 地址。

2) 设置语言和字符集
    Oracle 9i支持多国语言设置,目的是为了支持世界范围内的语言和字符集,在安装前可以在配置文件中为Oracle 9i的设置安装语言和字符集(注意,只是安装的软件的,不是库的),可以设置的参数有:NLS_LANG、LANG、LC,LC_ALL等,以 NLS_LANG 为例解释其含义,比如 export NLS_LANG=American_America.zhs16gbk ,其格式是国家语言设置.字符集,即American_America是国家语言设置,zhs16gbk是字符集,而American_America中的 American由指划分的世界大区,America指国家。注意国家语言设置和字符集没有必然的关联关系。常见的设置举例:

	export NLS_LANG=American_America.UTF-8
	export LANG=en_US
	export LC=en_US 
	export LC_ALL=American_America.UTF-8
可以执行下面的命令查看当前机器的locale相关的配置:

    $ locale

3) 设置 ORACLE_SID
    这里设置的ORACLE_SID是 Oracle 默认启动的实例id,一定要设置正确。

4) 设置 LD_ASSUME_KERNEL
    对于Red Hat Enterprise Server 3, 要设置 LD_ASSUME_KERNEL 的值为:2.4.19。

5) /sbin 一定要加到 PATH 中去,要不安装补丁时会出错。

4 准备安装文件

Oracle常用的是两种安装方式:从光盘和从硬盘文件。

  • 从光盘安装

      下载光盘映象文件(ISO文件,3个文件)或者DVD映象文件,校验md5码无误后刻录光盘。
  • 从硬盘安装
    下载安装文件,假设为Linux9i_Disk1.cpio.gz,Linux9i_Dis2.cpio.gz,Linux9i_Disk.cpio.gz,校验其md5码。命令如下:
    $ md5sum Linux9i_Disk1.cpio.gz Linux9i_Disk2.cpio.gz Linux9i_Disk3.cpio.gz
    
    f1a99eb8c8aca1d69a9eeaa8858570d7 Linux9i_Disk1.cpio.gz 
    f2444c0fa53c898e7d2f78c184829d7d Linux9i_Disk2.cpio.gz 
    ec655402d8bc547ed031f14122da574b Linux9i_Disk3.cpio.gz 
    
    验证无误后解压文件:
     #gunzip Linux9i_Disk1.cpio.gz
     #cpio -idmv < Linux9i_Disk1.cpio
     
    类似的对解压Linux9i_Dis2.cpio.gz,Linux9i_Disk3.cpio.gz 这个将生成三个文件夹:DISK1, DISK2, DISK3

安装文件的选择也有很多的方式,可以先装一个92的一个低点版本, 再打补丁升级到一个高点版本,比如我是安装了9204(从oracle网站上下载的,速度很快,两个小时能全down下来),安装完成再打的补丁升级到9206,补丁不是公开的而且很大,需要到Metalink去找。

5 安装前打一些补丁

    Oracle 官方为Metalink上的用户公开了一些 Oracle 9i 的补丁,可以解决安装时一些错误,不过要在Metalink上注册需要购买过Oracle产品,没有的话只能去网上找了.补丁的情况大概如下:

p3006854_9204_LINUX.zip 在运行 runInstaller 之前打,如果不打的话那个安装的图形界面跑不起来.
p2617419_210_GENERIC.zip 这个是oracle 的打补丁工具,也是必须的
  
p4198954_40_LINUX.zip 这个是在 RH ES4 上按照Oracle 9i必需要打的一个补丁,我也就是因为不知道要打这个补丁耽误了很多时间。

  先按照p3006854,步骤是以root身份运行:

#unzip p3006854_9204_LINUX.zip
#cd 3006854
#sh rhel3_pre_install.sh

   注意这里可能会出一些错误。比如如果没有安装gcc, 会出现下面的错误: rhel3_pre_install.sh: line 36: gcc: command not found 而要是运行完了rhel3_pre_install.sh出现 error while loading shared libraries: /etc/libcwait.so: cannot open shared object file: No such file or directory 这种错误的时候,也不用急,就是因为这个补丁没有正常打成功导致了一些问题,只要删掉/etc/ld.so.preload 这个文件就行了:

#rm /etc/ld.so.preload

然后就可以再安装p4198954包 $unzip p4198954_21_LINUX.zip 在解开的目录 4198954 下分别有:compat-oracle-rhel4-1.0-5.i386.rpm,compat-libcwait-2.0-2.i386.rpm 两个包,分别安装。

6 安装Oracle

打完上面的补丁后,可以开始安装Oracle数据库了,步骤:

  1. 切换到oracle用户
    $ su - oracle
    $ cd ~  
  2. 进入安装文件目录,设置环境变量LANG,用英文界面安装( 中文有问题 ):export LANG=en_US
    $ cd /mnt/cdrom 或者 $ cd Disk1
    $ ./runInstaller.sh 或者 $./install(如果没有权限,用root用户执行#chmod a+x ./runInstaller.sh)
  3. 设置参数,选定要安装的目录
    主要是做两件事:设定安装的Unix组:oinstall和选择安装目录。
  4. 执行脚本
    系统会提示要在/tmp下以Root身份运行***Root.sh,打开终端窗口,以Root身份运行/tmp/***Root.sh,然后回到安装画面点Continue
  5. 选择安装的产品和类型
    按提示设置安装的产品和类型,要分清各个产品的区别。
    此外,一般不在安装时直接建库,因此,选择安装产品类型时选Software Only 。
  6. 安装

    系统安装过程中,文件拷贝完成后系统提示运行Root.sh脚本,打开终端,以Root身份运行Root.sh后返回继续安装即可.

  7. 安装错误
    遇到错误,首先检查/tmp/OraInstall******(时间) 中的错误日志,如果遇到 make 的错误,检查: $ORACLE_HOME/install/make.log 。
    出现下面的错误"Error invoking target install of makefile /opt/oracle/product/9.0.1/plsql/lib/ins_plsql.mk",手工修复,修复方法: 编辑 $ORACLE_HOME/bin/genclntsh 把 LD_SELF_CONTAINED="-z defs" 改成: LD_SELF_CONTAINED="" 然后运行脚本:$ORACLE_HOME/bin/genclntsh: $ $ORACLE_HOME/bin/genclntsh Created /opt/oracle/product/9.0.1/lib/libclntst9.a 然后选择重试。
    在安装过程中,可能会提示两个错误, 一个错误是关于OEM Agent,另一个错误是ins_ctx.mk,(我以前安装9201的时候遇到过,这次因为是直接基于9204装的,这两个错误并没有出现),直接忽略或者跳过.一般来说,这两个错误并不影响我们使用Oracle的数据的基本功能,如果要修复这两个错误,也很容易,后面附一个解决这两个错误的办法。
  8. 安装完成后,可以为Oracle打补丁升级,打补丁时要使用opatch命令,此命令是oracle打补丁的一个工具,需要单独下载此工具,为patch 2617419。安装完了之后把opatch的路径添加到PATH中。
    $ unzip p2617419_210_GENERIC.zip  
    $ ls  
    $ pwd  
    /home/oracle/Patch  
    $export PATH=$PATH:/home/oracle/Patch:/sbin 
    
    要是前面是忽略了ins_oemagent.mk错误,现在可以打补丁修复: $ unzip p3119415_9204_LINUX.zip $ cd 3119415 $ opatch apply
  9. 现在要为oracle打9206补丁升级
    $ unzip p394880_9206_LINUX.zip
    $ cd Disk1
    $ ./runInstaller
    这个补丁的安装需要分两步,先是升级Universal Installer, 注意要在Specify File Location 那一步选Destination到Oracle的安装目录;升级Universal Installer到10以后,就可以安装安装 9iR2 Patchset了,记得把安装目录选成一样。补丁比较大有几百M,装完后Oracle软件的安装就算完成了。

7 建库

   安装完成后执行 $ ORACLE_HOME/bin/dbca 启动建库助手,按自己实际要求建立数据库.需要设置的参数有内存分配参数,字符集编码等,可以参考相关的文档.我在建库的过程中也遇到了一个错,说是NLS设置不对,便将.bash_profile中的 export NLS_LANG=American_America.UTF-8 改为 NLS_LANG=American 就好了。

    建库完成后,数据库就已经自动在运行了,执行$ps -ef |grep ora_ 查找相关进程, 以oracle用户执行 $ sqlplus "/ as sysdba"进行连接测试,成功的话就大功告成了。

声明:本博客中所有文章均为版主原创,转载请保留作者信息,并请注明出处。
//作者: 王玮琳  2006-11-07

posted on 2006-11-07 15:58 weidy 阅读(3054) 评论(0)  编辑  收藏 所属分类: Linux/Unix


只有注册用户登录后才能发表评论。


网站导航: