在RedHat7.1上安装Oracle8.1.7的经验谈,sql,sql教程,Oracle基础
在RedHat7.1上安装Oracle8.1.7的经验谈
我在RedHat7.1上第一次安装Oracle8.1.7就成功了 ,呵呵 ,很幸运!后来有不少朋友请教我安装方法 ,我才知道原来有这么多问题 ,按照我的方法应该可以安装成功,我自己安装了不下10遍都是很顺利就成功了 。总结一下自己的安装经验 ,也总结一下别人遇到的问题 ,希望能对其他人有一点点帮助 。
安装假设oracle系统文件放在/u01下 ,数据库文件放在/u02下 ,不安装OPS ,不安装JServer ,单数据库单实例 。
ORACLE_BASE=/u01/app/oracleORACLE_HOME=/u01/app/oracle/product/8.1.7ORACLE_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.rpmcompat-egcs-objc-6.2-1.1.2.14.i386.rpmcompat-egcs-6.2-1.1.2.14.i386.rpmcompat-libs-6.2-3.i386.rpm
可以把:
compat-libstdc++-6.2-2.9.0.14.i386.rpmcompat-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 dbauseradd oracle -g dbapasswd oracle
Oracle安装文档上说 ,要创建两个组 ,oinstall和dba ,oracle用户主属组是oinstall ,从属组是dba ,其实只用dba就好了 ,不要那么麻烦 。
chown -R oracle.dba /u01chown -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/oracleORACLE_HOME=/u01/app/oracle/product/8.1.7ORACLE_SID=orclORA_NLS=/u01/app/oracle/product/8.1.7/ocommon/nls/admin/dataNLS_LANG="SIMPLIFIED CHINESE"CLASSPATH=.:/u01/app/oracle/product/8.1.7/jdbc/lib/classes111.zipLD_LIBRARY_PATH=/u01/app/oracle/product/8.1.7/libPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/dbs:/etcexport 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.shexport 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/specsgcc 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/specsgcc 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是消息队列的参数 。
我改动如下:
echo 134217728 > /proc/sys/kernel/shmmax (SGA最大为128M)echo -e "250 32000 100 128" > /proc/sys/kernel/sem
?a href="http://www.learners.cn" target="_blank">。ㄆ涫狄膊挥酶恼庀?a href="http://www.learners.cn" target="_blank">,只是将max ops per semop call改大了 ,这是Oracle的安装文档上写的 ,我就这么做了 ,不过我试过 ,不改也没事 ,其他都保持原来的 ,没有改)
总结如下:改一项必须的shmmax ,其他的我在使用过程中 ,参数都够大了 ,不需要再调整 。
二、安装过程
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、下面一路点击下一步 ,到填写安装oracle软件的属组的时候 ,填写dba就好了 ,然后提示用root运行$ORACLE_HOME/root.sh ,以root登录运行 。在/etc/下生成一个文件oraInst.loc
3、到选择安装“服务器” ,“网络管理工作站” ,“客户端”的时候 ,选择“服务器”
安装好以后 ,可以再回到这个画面来选择别的没有安装的组件 ,也随时可以启动runInstaller来安装别的组件 。
另外有人提到没有安装PORC的选项 ,其实PROC是在“客户端”的选项里安装的 。
4、然后选择“定制安装” ,不要选择典型安装 ,因为典型安装会安装Oracle Jserver ,实际上不太用到Jserver ,而且安装Jserver是在SGA里要启动一个Java虚拟机 ,非常消耗资源(Java的东西总是很吃资源的) ,而且安装的时候创建Jserver的过程非常的漫长 ,一度令我怀疑死机了 。
5、出现选择安装组件的列表 ,可以自己增删一些组件 ,我不需要oracle的Apache Server ,准备自己从源码安装 ,所以就勾掉了 。如果要安装Apache Server的选项话 ,要预先安装Java ,并设置$JAVA_HOME变量 ,虽然要求的是jdk1.1.8 ,不过用jdk1.3也完全可以安装成功 ,运行Apache也没有什么问题 ,至于会不会因为jdk的版本不同导致一些程序运行结果的差异 ,我就没有测试过了 。
6、还是选择安装组件的列表这个界面 ,有个选择语言的按钮 ,增加“简体中文”
7、询问是否创建数据库 ,“是” ,添上安装数据库的SID ,我的是“orcl” ,数据库数据文件的存放目录 ,我的是“/u02“ 。
8、开始安装Oracle ,安装程序拷贝文件 。
有很多人说 ,拷贝文件完后 ,联接系统库函数的时候 ,出现make错误 ,我想这多半还是替换glibc不成功导致的吧 ,我安装的时候确实没有出现过这样的问题 。我想按照我写的步骤来 ,应该不会出现这样的问题的 。
9、完成后 ,提示以root运行root.sh 。
Oracle8.1.7有两个版本 ,一个是Oracle8.1.7.0.0 ,另一个是Oracle8.1.7.0.1 ,这个版本带OPS ,而且Oracle提供了一个glibc2.2的patch ,不过在Redhat7.1上 ,按照上面方法做了以后 ,实际上不需要打补丁的 。这个Oracle8.1.7.0.1的版本此时的root.sh有个bug ,应该在第156行 ,如下:
RUID=`/usr/bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}`
在最后少写个‘
应该改为:
RUID=`/usr/bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}'`
运行它 ,生成/etc/oratab 。
10、自动启动netasst ,配置监听器 ,一般如果为了省事 ,选典型配置就可以了 ,只不过典型配置打开了一个2481端口 ,是JServer用的 ,如果不用JServer的话 ,也可以不要它 ,现在可以不用管它 ,回头再改listener.ora好了 。
11、自动启动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 parameterecho 134217728 > /proc/sys/kernel/shmmax echo -e "250 32000 100 128" > /proc/sys/kernel/sem#start Oracle8.1.7su - 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_LANGunset $LANG
就可以出来了 。
四、废话
我没有足够的硬件条件来安装OPS ,所以安装Oracle8.1.7的时候不选OPS的;也没有硬件条件安装Oracle9i ,所以不知道RedHat7.1来安装Oracle9i如何 。不过用过一下SuSE7.1 ,印象很好 ,既然Oracle官方推荐是SuSE的话 ,还是用SuSE来安装Oracle9i吧 ,这样兼容性比较好 ,也省事 。
如果我写的安装方法有什么谬误的地方 ,请大家指点一下 ,谢谢!
我的联系方法:
E-mail: fankai@adbobo.com
QQ: 14477412'
补充说明:2001年9月16日
本质来说 ,RedHat7.1的glibc2.2库和其他相关工具对于Oracle8i来说 ,是有一点高了 。所以一般都要用RedHat7.1自带的兼容RedHat6.2的库替换一下 ,也就是glibc2.1.3 。
我自己的经验是只要正确替换了glibc ,就一定可以安装成功 ,不用做别的工作 。一定要把那几个compat的rpm软件包安装好 ,正确替换 ,再用gcc -v试试 ,确定是在用compat glibc2.1.3 ,再开始安装 。
我在这个帖子里没有提设DISPLAY变量的问题 ,其实如果在本机的X下安装oracle ,会有默认设置的 ,根本不需要自己再设了 。
如果runInstaller报DISPLAY出错的话 ,就自己设一下好了 ,无非就是
export DISPLAY=192.168.0.1:0.0 (假设IP是192.168.0.1)
如果这样做了 ,联接系统库的时候还报make错误的话(我是从来没有遇到这样的make error问题 ,所以没有办法测试) ,可能就不是glibc的问题 ,而是ld这些命令的版本问题了 。我建议如果出现这种错误的话 ,试试这个方法 ,就是再降级binutil 。
先下载binutils-2.10.0.18-1.i386.rpm(下载网址:http://rpmfind.net/linux/RPM/redhat/7.0/i386/binutils-2.10.0.18-1.i386.html ,或者在google上搜索一下)
rpm -Uvh binutils-2.10.0.18-1.i386.rpm --force --nodeps
然后再
runInstaller 。
又或者虽然出现make error ,但是毕竟可以拷贝文件安装过去的话 ,也可以试试这个方法:
在安装文件完成以后 ,会先后出现配置Net8和出现数据库助手创建数据库的过程 。
如果配置Net8出错的话 ,可以就这样退出 ,自己手工修改$ORACLE_HOME/network/admin下的listener.ora和tnsnames.ora 。)
在出现数据库助手创建数据库的时候 ,不要创建数据库 ,退出 。因为此时联接的可执行程序有问题 ,不能正确创建数据库 。
到Oracle网站 ,在下载Oracle8.1.7的地方 ,可以找到一个glibc的patch:
http://download.oracle.com/otn/linux/oracle8i/glibc-2.1.3-stubs.tar.gz
把它下载 ,放到$ORACLE_HOME下 ,解压缩 ,
cd $ORACLE_HOME tar xvfz glibc-2.1.3-stubs.tar.gz ./setup_stubs.sh
然后在
dbassist
启动数据库创建助手 ,创建数据库 。
在RedHat7.1上安装Oracle8.1.7的经验谈
我在RedHat7.1上第一次安装Oracle8.1.7就成功了 ,呵呵 ,很幸运!后来有不少朋友请教我安装方法 ,我才知道原来有这么多问题 ,按照我的方法应该可以安装成功,我自己安装了不下10遍都是很顺利就成功了 。总结一下自己的安装经验 ,也总结一下别人遇到的问题 ,希望能对其他人有一点点帮助 。
安装假设oracle系统文件放在/u01下 ,数据库文件放在/u02下 ,不安装OPS ,不安装JServer ,单数据库单实例 。
ORACLE_BASE=/u01/app/oracleORACLE_HOME=/u01/app/oracle/product/8.1.7ORACLE_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.rpmcompat-egcs-objc-6.2-1.1.2.14.i386.rpmcompat-egcs-6.2-1.1.2.14.i386.rpmcompat-libs-6.2-3.i386.rpm
可以把:
compat-libstdc++-6.2-2.9.0.14.i386.rpmcompat-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 dbauseradd oracle -g dbapasswd oracle
Oracle安装文档上说 ,要创建两个组 ,oinstall和dba ,oracle用户主属组是oinstall ,从属组是dba ,其实只用dba就好了 ,不要那么麻烦 。
chown -R oracle.dba /u01chown -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/oracleORACLE_HOME=/u01/app/oracle/product/8.1.7ORACLE_SID=orclORA_NLS=/u01/app/oracle/product/8.1.7/ocommon/nls/admin/dataNLS_LANG="SIMPLIFIED CHINESE"CLASSPATH=.:/u01/app/oracle/product/8.1.7/jdbc/lib/classes111.zipLD_LIBRARY_PATH=/u01/app/oracle/product/8.1.7/libPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/dbs:/etcexport 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.shexport 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/specsgcc 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/specsgcc 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是消息队列的参数 。
我改动如下:
echo 134217728 > /proc/sys/kernel/shmmax (SGA最大为128M)echo -e "250 32000 100 128" > /proc/sys/kernel/sem
?a href="http://www.learners.cn" target="_blank">。ㄆ涫狄膊挥酶恼庀?a href="http://www.learners.cn" target="_blank">,只是将max ops per semop call改大了 ,这是Oracle的安装文档上写的 ,我就这么做了 ,不过我试过 ,不改也没事 ,其他都保持原来的 ,没有改)
总结如下:改一项必须的shmmax ,其他的我在使用过程中 ,参数都够大了 ,不需要再调整 。
二、安装过程
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、下面一路点击下一步 ,到填写安装oracle软件的属组的时候 ,填写dba就好了 ,然后提示用root运行$ORACLE_HOME/root.sh ,以root登录运行 。在/etc/下生成一个文件oraInst.loc
3、到选择安装“服务器” ,“网络管理工作站” ,“客户端”的时候 ,选择“服务器”
安装好以后 ,可以再回到这个画面来选择别的没有安装的组件 ,也随时可以启动runInstaller来安装别的组件 。
另外有人提到没有安装PORC的选项 ,其实PROC是在“客户端”的选项里安装的 。
4、然后选择“定制安装” ,不要选择典型安装 ,因为典型安装会安装Oracle Jserver ,实际上不太用到Jserver ,而且安装Jserver是在SGA里要启动一个Java虚拟机 ,非常消耗资源(Java的东西总是很吃资源的) ,而且安装的时候创建Jserver的过程非常的漫长 ,一度令我怀疑死机了 。
5、出现选择安装组件的列表 ,可以自己增删一些组件 ,我不需要oracle的Apache Server ,准备自己从源码安装 ,所以就勾掉了 。如果要安装Apache Server的选项话 ,要预先安装Java ,并设置$JAVA_HOME变量 ,虽然要求的是jdk1.1.8 ,不过用jdk1.3也完全可以安装成功 ,运行Apache也没有什么问题 ,至于会不会因为jdk的版本不同导致一些程序运行结果的差异 ,我就没有测试过了 。
6、还是选择安装组件的列表这个界面 ,有个选择语言的按钮 ,增加“简体中文”
7、询问是否创建数据库 ,“是” ,添上安装数据库的SID ,我的是“orcl” ,数据库数据文件的存放目录 ,我的是“/u02“ 。
8、开始安装Oracle ,安装程序拷贝文件 。
有很多人说 ,拷贝文件完后 ,联接系统库函数的时候 ,出现make错误 ,我想这多半还是替换glibc不成功导致的吧 ,我安装的时候确实没有出现过这样的问题 。我想按照我写的步骤来 ,应该不会出现这样的问题的 。
9、完成后 ,提示以root运行root.sh 。
Oracle8.1.7有两个版本 ,一个是Oracle8.1.7.0.0 ,另一个是Oracle8.1.7.0.1 ,这个版本带OPS ,而且Oracle提供了一个glibc2.2的patch ,不过在Redhat7.1上 ,按照上面方法做了以后 ,实际上不需要打补丁的 。这个Oracle8.1.7.0.1的版本此时的root.sh有个bug ,应该在第156行 ,如下:
RUID=`/usr/bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}`
在最后少写个‘
应该改为:
RUID=`/usr/bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}'`
运行它 ,生成/etc/oratab 。
10、自动启动netasst ,配置监听器 ,一般如果为了省事 ,选典型配置就可以了 ,只不过典型配置打开了一个2481端口 ,是JServer用的 ,如果不用JServer的话 ,也可以不要它 ,现在可以不用管它 ,回头再改listener.ora好了 。
11、自动启动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 parameterecho 134217728 > /proc/sys/kernel/shmmax echo -e "250 32000 100 128" > /proc/sys/kernel/sem#start Oracle8.1.7su - 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_LANGunset $LANG
就可以出来了 。
四、废话
我没有足够的硬件条件来安装OPS ,所以安装Oracle8.1.7的时候不选OPS的;也没有硬件条件安装Oracle9i ,所以不知道RedHat7.1来安装Oracle9i如何 。不过用过一下SuSE7.1 ,印象很好 ,既然Oracle官方推荐是SuSE的话 ,还是用SuSE来安装Oracle9i吧 ,这样兼容性比较好 ,也省事 。
如果我写的安装方法有什么谬误的地方 ,请大家指点一下 ,谢谢!
我的联系方法:
E-mail: fankai@adbobo.com
QQ: 14477412'
补充说明:2001年9月16日
本质来说 ,RedHat7.1的glibc2.2库和其他相关工具对于Oracle8i来说 ,是有一点高了 。所以一般都要用RedHat7.1自带的兼容RedHat6.2的库替换一下 ,也就是glibc2.1.3 。
我自己的经验是只要正确替换了glibc ,就一定可以安装成功 ,不用做别的工作 。一定要把那几个compat的rpm软件包安装好 ,正确替换 ,再用gcc -v试试 ,确定是在用compat glibc2.1.3 ,再开始安装 。
我在这个帖子里没有提设DISPLAY变量的问题 ,其实如果在本机的X下安装oracle ,会有默认设置的 ,根本不需要自己再设了 。
如果runInstaller报DISPLAY出错的话 ,就自己设一下好了 ,无非就是
export DISPLAY=192.168.0.1:0.0 (假设IP是192.168.0.1)
如果这样做了 ,联接系统库的时候还报make错误的话(我是从来没有遇到这样的make error问题 ,所以没有办法测试) ,可能就不是glibc的问题 ,而是ld这些命令的版本问题了 。我建议如果出现这种错误的话 ,试试这个方法 ,就是再降级binutil 。
先下载binutils-2.10.0.18-1.i386.rpm(下载网址:http://rpmfind.net/linux/RPM/redhat/7.0/i386/binutils-2.10.0.18-1.i386.html ,或者在google上搜索一下)
rpm -Uvh binutils-2.10.0.18-1.i386.rpm --force --nodeps
然后再
runInstaller 。
又或者虽然出现make error ,但是毕竟可以拷贝文件安装过去的话 ,也可以试试这个方法:
在安装文件完成以后 ,会先后出现配置Net8和出现数据库助手创建数据库的过程 。
如果配置Net8出错的话 ,可以就这样退出 ,自己手工修改$ORACLE_HOME/network/admin下的listener.ora和tnsnames.ora 。)
在出现数据库助手创建数据库的时候 ,不要创建数据库 ,退出 。因为此时联接的可执行程序有问题 ,不能正确创建数据库 。
到Oracle网站 ,在下载Oracle8.1.7的地方 ,可以找到一个glibc的patch:
http://download.oracle.com/otn/linux/oracle8i/glibc-2.1.3-stubs.tar.gz
把它下载 ,放到$ORACLE_HOME下 ,解压缩 ,
cd $ORACLE_HOME tar xvfz glibc-2.1.3-stubs.tar.gz ./setup_stubs.sh
然后在
dbassist
启动数据库创建助手 ,创建数据库 。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-122198/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-122198/