Redhat7.2(7.1)下Oracle8.17的安装手册 一. 软件配置过程 1. 安装glibc 2.1包 glibc2.1版本(GNU C Library,18M)下载地址: FTP://ftp.kernel.org/pub/software/libs/glibc/hjl/sdk/2.1/i386-glibc-2.1-Linux.tar.gz
下载后都放到了/backup目录 从RedHat7.0以后的版本,安装的是glibc2.2。Oracle 8I不能使用glibc 2.2进行编译,而需要glibc2.1的SDK。 #su - root #cd / #tar zxvf /backup/i386-glibc-2.1-linux.tar.gz 隐藏/usr/bin 目录下的gcc,cc,ld,避免被Oracle installer使用 #cd /usr/bin #mkdir saved #mv gcc cc ld saved #ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc #ln -s gcc cc #ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld ld 隐藏/usr/lib目录下的libc.so,libdl.so,libm.so和libpthread.so文件,避免被Oracle installer使用 #cd ../lib #mkdir saved #mv libc.so libdl.so libm.so libpthread.so saved #mv libc.a libdl.a libm.a libpthread.a saved 不要忘了安装完成后把文件恢复回来。(不恢复也可以)。
2. 创建用户和组 以root用户进入系统 #groupadd sysdba #groupadd sysoper #groupadd oinstall #useradd oracle –d /usr/oracle –g oinstall –G sysdba,sysoper #passwd oracle 输入oracle用户口令,输入二次。 #chmod 755 /usr/oracle #cd /usr #mkdir oraInventory #chown oracle.oinstall oraInventory 3. 配置环境变量 以oracle用户进入系统 编辑注册文件: vi .bash_profile 在该文件最后添加: DISPLAY=local:0.0 eXPort DISPLAY ORACLE_BASE=/usr/oraInventory export ORACLE_BASE ORACLE_HOME=/usr/oracle export ORACLE_HOME ORACLE_SID=testdb 注重:ORACLE_SID在每个工程点都使用当地的地名,再加上序号。例如,上面就是为杭州建立第一个系统使用的SID:hangzhou1。 export ORACLE_SID PATH=$PATH:$ORACLE_HOME/bin export PATH export LD_ASSUME_KERNEL=2.2.5 注重:只要小于2.4即可 编辑好文件后存储,退出系统。 4. 拷贝介质: 以oracle用户进入系统,将包含Oracle V8.17的光盘放到光驱中,键入命令: $mount /mnt/cdrom $cp /mnt/cdrom/oracle.tar ./ 注重:这里假定Oracle V8.17的文件名是oracle.tar $tar xvf ./oracle.tar
5. 安装数据库 在XWindows以oracle用户进入系统,假如Xwindows没有启动,输入命令:$startx以启动Xwindows. 在Xwindows中开出一个终端,输入命令: $cd Disk1 $./runInstaller 进入安装程序。 二、安装过程
1、runInstaller启动安装界面 有的时候runInstaller,安装界面不出来,这主要还是因为Oracle的字符集设为了简体中文,但OS是英文的,所以有时候出不来,用Java写的程序经常出现字符集的问题。此时临时销毁$NLS_LANG变量,Java会用默认的字符集,就好了。所以:
unset $NLS_LANG
也可以试试
unset $LANG × 其实dbassist也是有时候出不来的,这样做就可以出来了,但是netasst始终出不了,不清楚为什么,不过可以自己修改lisener.ora和tnsnames.ora,所以netasst也不是必须的。
另一个可能的原因就是glibc没有替换好,我发现直到JDK1.3.1_01,才支持glibc2.2,之前的版本,包括JDK1.3.0都不支持glibc2.2,只要在glibc2.2下运行,就会出现没有任何反应,进程似乎死亡了一样的毛病,Oracle安装程序用的还是JRE1.1.8,所以只要glibc用的还是2.2版的,安装窗口总不会出来的。 2、下面一路点击下一步, 在Unix Group Name: oinstall 提示在root用户下运行/usr/oracle/orainstRoot.sh,使用ALT-F1(或F2,F3等)进入其他终端,以root用户登入系统,运行该文件。然后使用ALT-F7返回安装界面。 在Available ProdUCts: 选择Oracle 8i Enterpise Edition 8.1.7.0.1
3. 到填写安装oracle软件的属组的时候, Database Administaor Group: 填写sysdba Database Operator Group: 填写sysoper 在Database Identification: Global Database Name: TestDB就好了 SID:testdb, 在Database File Locations文件位置处:目的地址:/usr/oracle 开始拷贝文件。 然后提示用root运行/usr/oracle/root.sh,以root登录运行。
4、还是选择安装组件的列表这个界面,有个选择语言的按钮,增加“简体中文”
5、询问是否创建数据库,“是”,添上安装数据库的SID。数据库数据文件的存放目录,是“/usr/oracle“。
6、开始安装Oracle,安装程序拷贝文件。 有很多人说,拷贝文件完后,联接系统库函数的时候,出现make错误,我想这多半还是替换glibc不成功导致的吧,我安装的时候确实没有出现过这样的问题。我想按照我写的步骤来,应该不会出现这样的问题的。
7、自动启动netasst,配置监听器,一般假如为了省事,选典型配置就可以了,只不过典型配置打开了一个2481端口,是JServer用的,假如不用JServer的话,也可以不要它,现在可以不用管它,回头再改listener.ora好了。
8、自动启动dbassist,安装数据库,按照提示做就是了,根据自己的情况可以适当的调整安装数据库时的参数,最后开始创建数据库,此时也可以选择先保存创建的脚本,再退出dbassist,单独运行创建脚本,这样更灵活一些,可以自己改创建脚本,也可以自己研究一下脚本,会有收获的。
三、安装后配置
1、以root登录,修改/etc/oratab,将最后的: orcl:/u01/app/oracle/product/8.1.7:N 改为: orcl:/u01/app/oracle/product/8.1.7:Y 这样就可以用dbstart和dbshut来启动和关闭数据库了,不用自己写脚本调svrmgrl。
2、将数据库启动命令和修改内核命令放在系统启动脚本中(这一不可以不做)
修改/etc/rc.d/rc.local,加入:
#modify kernel parameter echo 134217728 > /proc/sys/kernel/shmmax echo -e "250 32000 100 128" > /proc/sys/kernel/sem
#start Oracle8.1.7 su - oracle -c 'lsnrctl start' su - oracle -c 'dbstart'
我比较懒,没有另外写脚本联接进rc3.d,rc0.d.rc5.d,rc6.d了,而是直接放在rc.local中了,呵呵 注重的是修改内核参数必须在启动数据库实例之前,启动数据库后,用ipcs 命令看看共享内存的使用情况,假如没有分段就行了。
另外一个非凡要说明的事情是一定要注重,凡是读写数据库的进程,必须取得oracle的环境变量,否则无法联接数据库。 上面的脚本中su - 中的这个"-"非常讲究,它的意思是切换到oracle用户,并取得oracle的环境变量。 再例如,假如还要启动apache来读写数据库的话,rc.local加入的命令就一定要这样写: #start apache httpd server . /etc/profile /usr/local/apache/bin/apachectl start
因为我把oracle的环境变量放在/etc/profile里了,在启动apache之前要先强制它读/etc/profile,取得oracle的环境变量,这样apache的ServerAPI程序就可以读写数据库了。
3、修改Net8配置,可以用netca,或者自己修改$ORACLE_HOME/network/admin下的listener.ora和tnsnames.ora,netasst似乎出不来。
4、假如创建第二个实例,用dbassist就好了,假如dbassist出不来的话,临时销毁$LANG,$NLS_LANG unset $NLS_LANG unset $LANG 就可以出来了。
|