Redhat下Oracle9i安装全攻略-安装指南

 

2007/07/13 18:16 xiaofei
准备安装:

    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.chinaunix.net/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.chinaunix.net/jh/19/650937.html
    [原创] 红旗高级服务器Linux 4.1 最新安装Oracle9204 改记

你可能感兴趣的:(oracle,数据库,linux,redhat,脚本,database)