2007-12-12 14:26
developer1
Redhat下Oracle9i安装全攻略-安装指南
其实在网上 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
----->
2007-12-12 14:26
developer1
开始安装:
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
2007-12-12 14:27
developer1
继续升级:
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
2007-12-12 14:27
developer1
安装完毕:
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了。
[color=#0000ff]http://192.168.100.60:7777/[/color]
[color=#0000ff]http://192.168.100.60:7778/[/color]
[color=#0000ff]https://192.168.100.60:4443/[/color]
在重装 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) [color=#0000ff]http://www.chinaunix.net/jh/19/365977.html[/color]
[原创] RedHatLinux AS3 U2 安装 oracle9204 成功 笔录
2) [color=#0000ff]http://www.linuxmine.com/3494.html[/color]
在RedHat EL AS 3上安装Oracle9.2.0
3) [color=#0000ff]http://www.cublog.cn/opera/showart.php?blogid=10337&id=80972[/color]
Oracle for AS3 安装教程
4) [color=#0000ff]http://oracle.chinaitlab.com/install/365186.html[/color]
在DELL pe800下安装linux AS3.0+ora 9i 成功经验
5) [color=#0000ff]http://www.gbunix.com/htmldata/2004_08/2/5/article_643_1.html[/color]
在Redhat9上安装Oracle 9.2
6) [color=#0000ff]http://www.chinaunix.net/jh/19/650937.html[/color]
[原创] 红旗高级服务器Linux 4.1 最新安装Oracle9204 改记
页:
[1]
2
Powered by Discuz! Archiver
© 2001-2006 Comsenz Inc.