redhat7.1上安装oracle8.1.7的经验谈

redhat7.1上安装oracle8.1.7的经验谈
  
  我在redhat7.1上第一次安装oracle8.1.7就成功了,呵呵,很幸运!后来有不少朋友请教我安装方法,我才知道原来有这么多问题,按照我的方法应该可以安装成功,我自己安装了不下10遍都是很顺利就成功了。总结一下自己的安装经验,也总结一下别人遇到的问题,希望能对其他人有一点点帮助。
  安装假设oracle系统文件放在/u01下,数据库文件放在/u02下,不安装ops,不安装jserver,单数据库单实例。
  oracle_base=/u01/app/oracle
  oracle_home=/u01/app/oracle/product/8.1.7
  oracle_sid=orcl
  
  一、安装前的配置
  
  1、替换glibc
  oracle8.1.7使用的是glibc2.1.3,而redhat7.1是用的glibc2.2.2,不兼容,所以要替换glibc才能成功安装。
  首先要安装redhat7.1安装光盘上的几个以compat开头的rpm包,它们是:
  compat-glibc-6.2-2.1.3.2.i386.rpm
  compat-egcs-objc-6.2-1.1.2.14.i386.rpm
  compat-egcs-6.2-1.1.2.14.i386.rpm
  compat-libs-6.2-3.i386.rpm
  可以把:
  compat-libstdc++-6.2-2.9.0.14.i386.rpm
  compat-egcs-c++-6.2-1.1.2.14.i386.rpm
  也安装上。
  因为这几个软件包之间有依赖关系,如果安装顺序不对,会报错的,无法安装。一般来说应该先安装第一张上的两个,再安装第二张上面的四个。
  如果这样做也报错,安装不上,可以先把这6个软件包拷贝到一个目录下,然后再一起安装,这样就不用怕它们之间的依赖关系,一定可以安装成功了。例如:
  rpm -ivh compat-glibc-6.2-2.1.3.2.i386.rpm compat-egcs-6.2-1.1.2.14.i386.rpm compat-libs-6.2-3.i386.rpm compat-egcs-c++-6.2-1.1.2.14.i386.rpm compat-egcs-objc-6.2-1.1.2.14.i386.rpm compat-libstdc++-6.2-2.9.0.14.i386.rpm
  
  2、创建用户和组
  groupadd dba
  useradd oracle -g dba
  passwd oracle
  oracle安装文档上说,要创建两个组,oinstall和dba,oracle用户主属组是oinstall,从属组是dba,其实只用dba就好了,不要那么麻烦。
  chown -r oracle.dba /u01
  chown -r oracle.dba /u02
  
  3、设环境变量
  可以将要设的环境变量放在oracle用户主目录下的.bash_profile中,也可以放在/etc/profile中,对所有的用户可见,我建议放在/etc/profile中,因为凡是在本机运行的程序读写本机的oracle数据库,一般都需要设oracle的环境变量,否则无法连接数据库。
  我可以举一个例子:
  如果你的web server,例如apache,需要读写数据库,提供网页的动态内容,假设用php或者jsp,又或者perl等等来写serverapi或者cgi,因为apache是以root启动一个进程,这个进程再fork若干子进程以nobody用户运行,响应80端口的http请求,所以如果在root读不到oracle环境变量,web程序根本无法读写数据库。只要root读到oracle环境变量,fork子进程的时候,复制了父进程的数据空间,也继承了父进程的环境变量,所以可以读到oracle变量,就可以读写oracle数据库了。
  所以我这样设置,在/etc/profile中添加如下行:
  oracle_base=/u01/app/oracle
  oracle_home=/u01/app/oracle/product/8.1.7
  oracle_sid=orcl
  ora_nls=/u01/app/oracle/product/8.1.7/ocommon/nls/admin/data
  nls_lang="simplified chinese"
  classpath=.:/u01/app/oracle/product/8.1.7/jdbc/lib/classes111.zip
  ld_library_path=/u01/app/oracle/product/8.1.7/lib
  path=$path:$oracle_home/bin:$oracle_home/dbs:/etc
  export oracle_base oracle_home oracle_sid ora_nls nls_lang ld_library_path path
  
  其中$oracle_base,$oracle_home指定安装目录,$oracle_sid是oracle数据库的sid,$ora_nls是字符集目录,$nls_lang是字符集,$classpath是java程序读写数据库需要的jdbc的class,前面加个点号是先搜当前目录的意思。$ld_library_path是oracle的c库函数和头文件的位置,对于oci8,proc和jdbc的oci连接是必须的。
  
  注销再登录,或者不用注销,执行下一行的命令,直接读一下/etc/profile
  . /etc/profile
  
  再 env|grep oracle 看看oracle的变量是否都设置正确。
  
  4、临时更改glibc
  将
  . /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh
  export ld_assume_kernel=2.2.5
  
  加入oracle主目录(/home/oracle)下的.bash_profile,注销再以oracle登录,或者不用注销,执行下一行的命令,直接读一下.bash_profile
  . /home/oracle/.bash_profile
  
  再看看是否已替换
  gcc -v
  替换之前是:
  reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
  gcc version 2.96 20000731 (red hat linux 7.1 2.96-81)
  替换之后是:
  reading specs from /usr/i386-glibc21-linux/lib/gcc-lib/i386-redhat-linux/2.96/specs
  gcc driver version 2.96 20000731 (red hat linux 7.1 2.96-81) executing gcc version egcs-2.91.66
  
  5、修改内核参数
  oracle数据库运行的时候,用共享内存来实现oracle的sga,所以要调整一下linux的内核参数来适应oracle的sga的要求,这个方面到底要调整到多少才适合,可以参考oracle官方的安装文档。一般而言,主要就是共享内存段最大尺寸要调整,linux内核默认共享内存段最大尺寸是32m,如果oracle sga开的大于32m(一般商业运行,肯定大于32m),sga就会分段,占据几个不连续的共享内存段,造成oracle的性能下降。
  命令ipcs -al可以查看共享内存参数,命令ipcs查看共享内存使用情况。
  修改内核参数可以修改内核源码再重新编译内核,这个方法有点麻烦,关于共享内存的参数在源码目录下的include/linux/下的shm.h和sem.h文件中。
  另一个简单的办法是直接修改内核参数,即修改/proc下的文件,立即生效。
  可以修改/proc/sys/kernel下的shmmax和sem shmmax是以字节记的共享内存段的最大尺寸, shmmni是共享内存段的最大数量 shmmax是共享内存总共最大容量(shmmax*shmmni)
  sem是信号量参数,msgmax,msgmnb,msgmni

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/92530/viewspace-207271/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/92530/viewspace-207271/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值