蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 数 据 库


    

蓝森林 http://www.lslnet.com 2006年8月26日 15:18


[转] Redhat AS3_U6 的 Oracle9i 安装完全攻略--安装指南

发信人: Wwashington (Jacky), 信区: NewSoftware
标  题: [转] Redhat AS3_U6 的 Oracle9i 安装完全攻略--安装指南
发信站: 水木社区 (Thu Apr  6 23:38:30 2006), 站内

Written By: Wwashington(AT)newsmth.org
Published : 2006/04/06

前言:

其实在网上 Oracle9i 安装笔录、安装指南已经非常多了,无奈所涉及的问题
不够全面,对于一些常见错误没有进行分析和补救。所以我在发表了安装完全
攻略--"中文显示"之后,又陆续写了"安装指南"、"脚本精选"、"常见错误"这
三篇文章,希望对大家有一些帮助。转载本文请保留所有信息。

中国有个著名的现象是"天下文章一大抄",这要分两个角度理解。首先大家描
述的都是同一个事物,所以不论语言怎么变换,相似度都在八成以上的。其次
有些网站或作者,确实不加思考、不经实践、盲目照搬。对于前者当然是无法
避免、无可厚非,对于后者就要请读者睁大眼睛、仔细辨别了。

---------------------------------------------------------------------

准备安装:

1) 首先要安装 Redhat AS3_U6,而且一般来说请选择"完全安装",即使有些
   功能你不打算使用,装完了再禁止掉就可以了。不选"完全安装"的后果是,
   真正要用的时候缺这缺那,你要到处找安装包,自找苦吃。目前不少安装
   指南都要求用户检查软件包的完整性,我认为那样做很浪费时间。

2) 建立帐户。以root用户运行下列命令:

# groupadd dba
# groupadd oinstall
# useradd oracle -g oinstall -G dba
# passwd oracle

3) 以 /uxdb 为数据库主目录,建立oracle安装文件夹:

# rm -Rf /uxdb/ora9i
# cd /usr/bin
# rm -f dbhome oraenv coraenv
# rm -f /etc/oratab

备注:上面这四句是针对打算重新安装的,全新安装的用户可以跳过这四句。

# mkdir -p /uxdb/ora9i/product/9.2
# chown -R oracle.dba /uxdb/ora9i
# mkdir /var/opt/oracle
# chown oracle.dba /var/opt/oracle

备注:其实最后这个目录/var/opt/oracle不一定需要的,写上是为了兼容性。
      直接 chown -R oracle.oinstall /uxdb/ora9i 也可以的,那么安装时
      就不会提示 orainstRoot.sh 权限问题。我这样装过,没发生问题。

4) 把事先下载好的文件用 WinSCP 通过 ssh 或者 FlashFxp 通过 ftp 上传。
   由于空间的关系,压缩文件放到 /uxdb/ora9i,解压完毕再删掉。最近这段
   时间OTN上的Linux版一般是9204了,因此我们以这个版本为准。

   Oracle 9201的用户可以去参考其他升级文档,或者干脆全新安装9204。同
   时,在9204版里至少有两个重要补丁(3095277和3119415),在9206升级版里,
   也有至少一个重要补丁(4193295)。metalink注册用户的补丁更多更全。

$ pwd
/home/oracle
$ mkdir setup
$ ln -s /uxdb/ora9i ora9i

$ cd setup
$ gzip -dc ~/ora9i/ship_9204_linux_disk1.cpio.gz | cpio -idmv
$ gzip -dc ~/ora9i/ship_9204_linux_disk2.cpio.gz | cpio -idmv
$ gzip -dc ~/ora9i/ship_9204_linux_disk3.cpio.gz | cpio -idmv

$ mkdir ../up926
$ cd ../up926
$ unzip ~/ora9i/p3948480_9206_LINUX.zip

$ mkdir ../up927
$ cd ../up927
$ unzip ~/ora9i/p4163445_92070_LINUX.zip

$ rm -f ~/ora9i/*.gz
$ rm -f ~/ora9i/*.zip

5) 检查交换空间,必要时候作出适当调整:

现在要检查交换空间,通常交换空间必须是内存的0.5倍到1.5倍,内存越大对交
换空间要求越低。考虑到性能,我们不建议512M内存以下的机器安装Oracle。

内存在 512M到1024M之间,建议交换空间是1.5倍,
内存在1024M到2048M之间,建议交换空间是1.0倍。
内存等于或者超过 2048M,建议交换空间是0.5倍。

如果不够就需要到 WinXp 里利用 Acronis 来重新调整分区大小,或者手工制造
一个swap文件,用swapon来激活这个文件,这里不再赘述,读者自己查资料。

# cat /proc/meminfo | grep -e Mem: -e Swap:
# /sbin/swapon -s

6) 设置内核参数,调节信号灯及共享内存:

修改 /etc/sysctl.conf 这个文件,加入以下的语句:   
kernel.shmmax = 1006632960  {包含了虚拟内存的最大共享内存,详情见备注}
kernel.shmmni = 4096        {最小内存数,一般都是4k的大小,也就是4096}
kernel.shmall = 655360      {内存640M的数值,公式 shmmax=内存(M)*1024}
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

备注:一般来说,计算公式是 shmmax=shmall*系数*1024,内存在512M到2048M
之间系数为1.5,内存达到或超过2048M系数为1就可以了。sysctl -p 立刻生效。

在 Linux 下的快速计算:

# export RAMSIZE=640
# echo -n "shmall="; echo "$RAMSIZE * 1024" | bc
# echo -n "shmmax="; echo "$RAMSIZE * 1024 * 1.5 * 1024" | bc

7) 设置oracle对文件的要求:

编辑文件:在/etc/security/limits.conf 加入以下语句,然后重启Linux主机。
   oracle    soft   nofile    65536
   oracle    hard   nofile   65536
   oracle    soft   nproc     16384
   oracle    hard   nproc     16384

8) 设置oracle用户的环境,请参考"脚本精选"的.bash_profile和.bashrc内容。
最好的做法,是把"脚本精选"里所有的文件都建立起来,将来使用会很方便。

这里我要补充说明的是,在英文环境下安装是很容易的,大不了在安装过程中的
Language里加多一项Chinese就可以了。在中文环境下安装,关于字体设置方面
要做一些准备,请参考"中文显示"的内容,安装tlc字体或修改zys配置。

关于LD_ASSUME_KERNEL=2.4.1的问题,这是出于兼容性的考虑,否则可能会链接
时报错,也可能会链接后内容有偏差。如果用户需要安装自己的Java开发包,可
以到 Sun 公司网站下载 rpm 并安装,然后做个符号链接到 /usr/j2sdk。

很多安装指南都没提到 ORACLE_NAME 这个变量,或许大家误以为数据库的名称
必须跟 ORACLE_SID 一样,这是非常错误的。在这个安装例子里,我把 SID 设
置为 ora9i,而 NAME 设置为 turbo,将来访问数据库的时候再详细解释。

重要提示:由于 Oracle 9i 本身的开发环境是在 gcc 2.96 下的,所以我们必
须把当前的 gcc 降版本,否则将来链接会大量出错。请运行脚本 mc 296。
# mc 296
<-----
lrwxrwxrwx    1 root     root            6  4月  6 22:50 g++ -> g++296
-rwxr-xr-x    3 root     root        81864 2004-03-24  g++296
-rwxr-xr-x    4 root     root        88836 2005-07-19  g++323
lrwxrwxrwx    1 root     root            6  4月  6 22:50 gcc -> gcc296
-rwxr-xr-x    2 root     root        81864 2004-03-24  gcc296
-rwxr-xr-x    2 root     root        88836 2005-07-19  gcc323
-rwxr-xr-x    1 root     root        84808 2004-08-04  gcc-ssa
-rwxr-xr-x    1 root     root        86200 2004-08-04  g++-ssa
----->

---------------------------------------------------------------------

开始安装:

1) 你可以选择在 Linux 本机安装,或通过 Xman 登录安装,或通过 Vnc 安装。
   在本机安装和 Xman 安装,不用修改配置,Vnc 安装要增加一句配置字体的。
   export JAVA_FONTS=/usr/share/fonts/zh_CN/TrueType
   否则,中文环境下缺乏字体会导致出现"口口"乱码。如果你喜欢使用英文的
   安装界面,可以设置 export LC_ALL=C 来达成你的愿望。

2) 现在开始安装了。准备工作做好了,真正安装是很容易的,只是等待比较久。
   首先要运行一个对于 Redhat Enterprise 3 的补丁,以 oracle 帐号登录。
   $ cd setup/Opatch/rhe3
   $ unzip p3006854_9204_LINUX.zip
   $ su -
   # cd /home/oracle/setup/Opatch/rhe3/3006854
   # sh rhel3_pre_install.sh
<-----
Applying patch...
Patch successfully applied
----->

   请注意 /etc/services 里的 oraweb/orassl/oraSSL 必须装好之后再修改。
   也可以先把它注释掉,等数据库安装完毕再把#号去掉,否则端口可能递增。
   如果端口不是默认的 4443/7777/7778,用vi修改Apache的httpd.conf。

   以oracle用户登录系统,进行Oracle的安装:
   $ cd setup/Disk1
   $ ./runInstaller

   过一会儿就会出现Oracle的安装界面。按照提示输入相关内容就可以了。其
   中 Group 为 oinstall,Database Name 为 turbo,SID 为 ora9i。安装时
   如果提示orainstRoot.sh权限问题,用root执行 #sh /tmp/orainstRoot.sh
   然后继续。安装时可以选择创建你所希望使用的数据库。安装完毕会提示你
   运行root.sh,在里面的路径填/usr/bin,然后按回车继续。

3) 安装完后打补丁。首先你要安装 Opatch,高版本的可以向下兼容,但低版本
   的却不能识别新的补丁。如果是9204的Opatch对应9204的补丁,那样也可以。

   很关键的问题,开始动手打补丁之前,首先要以 root 的身份做这件事情:
   # chown oracle.root /sbin/fuser

   原因是opatch需要执行fuser这个程序。现在重新登录或 su 成为 oracle。

   $ cd $ORACLE_BASE
   $ unzip ~/setup/Opatch/9206/p2617419_10102_GENERIC.zip
   $ cd /tmp
   $ mkdir ora
   $ cd ora
   $ unzip ~/setup/Opatch/9204/p3119415_9204_LINUX.zip
   $ unzip ~/setup/Opatch/9204/p3238244_9204_LINUX.zip
   $ unzip ~/setup/Opatch/9206/p4193295_9206_LINUX.zip

   $ cd $ORACLE_BASE/oui/bin/linux
   $ ln -s libclntsh.so.9.0 libclntsh.so

   请注意打补丁的规则。一般来说,9204的补丁用在9204上,即使你装了几个
   9204的补丁,将来版本升级时 installer会自动把补丁删除的。对于9206或
   其他任何版本,补丁的规则也是一样。

   所以,如果你决定用9204+9204补丁,那就打补丁。如果你决定要升级9206
   或9207,那就不需要装补丁了,系统会删除旧补丁。当然,如果你想做实验,
   检验补丁的效果再决定是否升级,那也是可以理解。

   安装9204的补丁,它用来修复angentctl启动dbsnmp时的segment溢出问题。
   $ cd /tmp/ora/3119415
   $ opatch apply
   $ cd /tmp/ora/3238244
   $ opatch apply

   安装9206的补丁,前提是Oracle已经升级为9206了,目前没有安装版9206。
   $ cd /tmp/ora/4193295
   $ opatch apply   
   $ opatch lsinventory

4) 打完补丁后,要relink一个文件,否则agent无法启动。切换到oracle用户,
   $ cd $ORACLE_HOME/network/lib
   $ make –f ins_oemagent.mk install
   之后就可以启动Agent服务了.
   $ agentctl start
   $ agentctl status   

   如果是升级到9206,此时agent问题已经解决,但是引进了另一个安全问题。
   $ cd $ORACLE_HOME/ldap/lib
   $ make -f ins_ldap.mk install

   除了重新重新编译外,还要按照补丁里的README.html进行数据库表的更新。
   $ cd /tmp/ora/4193295
   $ sqlplus /nolog
     connect / as sysdba
     spool ./logfile
     @catcpu.sql

5) 你必须修改启动配置文件,以便将来可以通过 dbstart 来手工启动数据库。
   用 dbstat 确认是否关闭成功。
   $ dbstat             {首先检查系统状态}
   $ dbshut             {关闭数据库再修改}
   $ dbstat             {确认数据库已关闭}

   $ vi /etc/oratab
<-----
*:/uxdb/ora9i/product/9.2:N
ora9i:/uxdb/ora9i/product/9.2:Y
----->

   $ dbstart
<-----
Can't find init file for Database "ora9i".
Database "ora9i" NOT started.
----->

   $ vi $ORACLE_HOME/bin/dbstart  {在vi用/PFILE来搜索,添加SPFILE部分}
<-----
            PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
            SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
......
                if [ -f $PFILE ] || [ -f $SPFILE ]; then

----->

   以上修改是利用 SPFILE 来启动的方法,如果想用 PFILE 来启动,就需要
   拷贝一个系统配置好的 PFILE 到 dbs 目录下,"脚本精选"里已经做好了。
   $ mo
<-----
/uxdb/ora9i/admin/turbo/pfile/initora9i.ora.33200616611
# copy to: dbs ---->
/uxdb/ora9i/product/9.2/dbs/initora9i.ora
# check spfile ---->
/uxdb/ora9i/product/9.2/dbs/spfileora9i.ora
----->

   现在你可以测试一下,看看数据库是否按你的预期,随时能手工启动和关闭。
   $ dbstart
   $ dbstat

---------------------------------------------------------------------

继续升级:

1) 如果你已经装好了9204,现在想升级到9206或9207,还会碰到中文乱码问题。
   首先是要停止Oracle的所有服务,否则安装程序会提示文件无法覆盖。

   $ dbshut
   $ lsnrctl stop
   $ agentctl stop
   $ stopJServ.sh

   $ cd up926
   $ find -name all_except_bin.jar
<-----
./Disk1/stage/Components/oracle.swd.jre/1.4.2.02.0/1/DataFiles/all_except_bin.jar
----->
   $ cd ./Disk1/stage/Components/oracle.swd.jre/1.4.2.02.0/1/DataFiles
   $ cp -pf all_except_bin.jar all_except_bin.jar.eng
   $ unzip all_except_bin.jar.eng
   $ find -name font*zh*
<-----
./jre/1.4.2/lib/font.properties.zh.Turbo
./jre/1.4.2/lib/font.properties.zh_CN.Redhat8.0
./jre/1.4.2/lib/font.properties.zh_TW.Redhat8.0
./jre/1.4.2/lib/font.properties.zh_CN.Sun
./jre/1.4.2/lib/font.properties.zh_CN_UTF8.Sun
./jre/1.4.2/lib/font.properties.zh_TW.Sun
./jre/1.4.2/lib/font.properties.zh_TW_UTF8.Sun
----->
   $ cd jre/1.4.2/lib
   $ rm -f font.*.zh font.*.tlc font.*.zys

   $ ln -s font.properties.zh_CN.Redhat8.0 font.properties.zh.zys
   $ ln -s font.properties.zh.Turbo font.properties.zh.tlc
   $ ln -s font.properties.zh.zys font.properties.zh
   $ ls -la *zh*

{说明:font.properties.zh.zys,此选项保证Redhat AS3_U6显示中文}
{说明:font.properties.zh.tlc,如果安装了tlc字体,可以显示中文}

   $ cd ../../..
   $ rm -f all_except_bin.jar
   $ zip -r all_except_bin.jar jre/
   $ rm -Rf jre/

   注意:在9207里面是两个地方出现all_except_bin.jar,这两个文件是
   一样的。所以只要重做一次就行了,或者干脆把改好的拿去覆盖也可以。

2) 安装9207升级版没碰到什么问题。但安装9206升级版的时候有个小问题。
   当它提示运行root.sh时最好先修改 root.sh,否则会有下面这个告警:
/bin/rm: lstat‘/uxdb/ora9i/product/9.2/rdbms/filemap’失败: 没有那个文件或目录

   # cd $ORACLE_HOME
   # vi root.sh       {在vi里用/RM=来搜索,一共有两个地方需要替换}
<-----
RM="/bin/rm -f"
......
RM="/bin/rm -f"
----->
   # sh root.sh

---------------------------------------------------------------------
   
安装完毕:

1) 现在是享受成果的时候了。如果有问题请参考"常见错误",看看是否有答案。
   $ perl -V
   $ ln -s $ORACLE_HOME/jdk $ORACLE_HOME/Apache/jdk
   $ cd $ORACLE_HOME/Apache/Apache/bin

   $ vi apachectl
<-----
PERL5LIB=/uxdb/ora9i/product/9.2/Apache/perl/lib/5.00503:/uxdb/ora9i/product/9.2/Apache/perl/lib/site_perl/5.005/i686-linux; export PERL5LIB
----->

   $ vi startJServ.sh
<-----
${APACHE_HOME}/bin/apachectl startssl
----->

   $ dbstart
   $ lsnrctl start
   $ agentctl start
   $ startJServ.sh

2) 然后检查状态,dbstat 是个很好的脚本,在SunOS/HP-UX下应该也可以使用。
   $ tnsping 192.168.100.60
   $ dbstat
   $ lsnrctl status
   $ agentctl status

   $ apachectl status
   $ apachectl fullstatus

   配置好 Linux 的 iptables 后,在另一台机器上就可以访问它的Apache了。
   http://192.168.100.60:7777/
   http://192.168.100.60:7778/
   https://192.168.100.60:4443/

   在重装 Oracle 的时候,如果你忘了注释掉 oraweb/orassl/oraSSL 三项,
   那么装好后的 Apache 端口会跟上面的不同,但很容易就调整回正常。

   $ vi $ORACLE_HOME/Apache/Apache/conf/httpd.conf    {在vi用/444和/777查找}
<-----
Port 7777
Listen 7777
......
<IfModule mod_ssl.c>
  Port 7778
  Listen 7778
  Listen 4443
</IfModule>
......
<IfModule mod_oprocmgr.c>
  ProcNode rebeca 7777
  <IfModule mod_ssl.c>
    ProcNode rebeca 7778
  </IfModule>
......
##
## SSL Virtual Host Context
##

<VirtualHost _default_:4443>
......
Port 4443
----->

   $ vi $ORACLE_HOME/Apache/Apache/bin/apachectl     {在vi用/:77查找}
<----
STATUSURL="http://localhost:7778/server-status"
----->
   $ apachectl restart
   $ apachectl fullstatus

3) 如果你想让Oracle在开机和关机的时候以服务方式运行,请参考"脚本精选"。
   如果手工启动和关闭已经足够,那么现在就在WinXp上装个客户端访问ora9i。

   例如:ORACLE_SID=ora9i, ORACLE_NAME=turbo, IP=192.168.100.60。那么,
   配置 Net Config 时,填写 turbo 和 192.168.100.60,在 oemapp cosole
   访问时,可以使用本地 tnsname 的 TURBO,或者写主机名(填IP或域名)以及
   SID,然后网络服务名就会自动变成 ORA9I_192.168.100.60。

---------------------------------------------------------------------

参考文献:

好几年前就使用 Oracle 8i,安装过程很复杂,不看文档根本做不下去。现在
Oracle 9i 比较好一点,问题少一些,但别人的经验总是有帮助的。在我动手
安装和整理文档的时候,主要是参考以下内容,随后进行了比较大的补充。

1) http://www.www.lslnet.com/linux/jh/19/365977.html
   [转] RedHatLinux AS3 U2 安装 oracle9204 成功 笔录

2) http://www.linuxmine.com/3494.html
   在RedHat EL AS 3上安装Oracle9.2.0

3) http://www.cublog.cn/opera/showart.php?blogid=10337&id=80972
   Oracle for AS3 安装教程

4) http://oracle.chinaitlab.com/install/365186.html
   在DELL pe800下安装linux AS3.0+ora 9i 成功经验

5) http://www.gbunix.com/htmldata/2004_08/2/5/article_643_1.html
   在Redhat9上安装Oracle 9.2

6) http://www.www.lslnet.com/linux/jh/19/650937.html
   [转] 红旗高级服务器Linux 4.1 最新安装Oracle9204 改记


RHAS4上你安装过oracle9i 9207吗?
我在RHAS4上安装9204且升级到了9207, 升级后打了几个补丁, agentctl 启动有问题, 重新编译后解决了,目前唯一的问题是dbca时出现libsrvm.so找不到的错误,但是不影响建库,启动数据库、监听、agent等均无问题,初步测试了建表查询等都没有任何问题。
我查了一下oracle只有两个目录里有libsrvm.so 但使用之都有问题。

安装9204时候我仅仅先装了两个rpm补丁,其他的均没有装也不必装,Opatch也不必要p4163445_92070_LINUX.zip包括了a,p4188455_10103_linux.zip是升级9206用的,直接从9204升级到9207不必装。

p4163445_92070_LINUX.zip升级完后,我安装了如下补丁:
p4199559_92070_LINUX.zip
p4636159_92070_LINUX.zip
p4751923_92070_LINUX.zip
不安装这三个补丁dbca不会出现任何问题。
有个补丁无法安装:p4242790_92070_LINUX.zip不知哪位高手是否知道原因。

俺搞的metalink.com帐号进不去了,不知道里面是否有说明,虽然这个错误不影响什么,可总感觉不舒服。

原因找到了,p4163445_92070_LINUX.zip升级完只能安装如下补丁:
1:
p4199559_92070_LINUX.zip这个是解决agent启动问题的, 你需要编译一下
cd $ORACLE_HOME/network/lib
make -f ins_oemagent.mk install

然后agentctl start就可以了。

2:
p4751923_92070_LINUX.zip安全补丁

这个p4636159_92070_LINUX.zip补丁装完后,dbca就会出现libsrvm.so找不到的问题。

p4636159_92070_LINUX.zip补丁里面的readme.txt说的修改files/lib/stubs/libc.so可根本就没这个文件,
安装没有出现错误,可就是 dbca时候出现前述错误。

而p4242790_92070_LINUX.zip总是安装失败。

谁知道什么原因?



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com