LINUX上安装ORACLE总结 项目上经常会需要去安装系统,这里我总结了一些安装心得,刚开始时也是从网上找一些资料,但往往网上的说到一半,有的貌似解决问题,其实不然,所以我这里写全了一些解决方法,以供大家参考。废话少说,开始我们的redhat linux5.4下oracle10g的安装之旅! 首先,安装linux(这里版本是redhat的企业版5.4)时,选择定制安装,选上全部组件,当然你也可以不用选全部,但是需要选一些开发组件,这在后面的编译ORACLE的相关东西时要用到,还有FTP组件,也要选上。这里的LINUX的安装,我就不一一赘述了,各位看官可以自己搜一下相关资料。 安装完后,配置telnet和ftp,使之能远程telnet到服务器上,之后的操作,我们都可以在远程端telnet进来完成! 编辑sysctl.conf文件,末尾添加如下行(原文件如有重复的,屏蔽掉) Linux命令:vi /etc/sysctl.conf kernel.shmall = 2097152 kernel.shmmax = 268435456 #这里设置为物理内存的一半1G内存的话为:512×1024×1024 #2G 内存的话为:1024×1024×1024 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 net.core.rmem_max=262144 net.core.wmem_default=262144 net.core.wmem_max=262144 #sem 4个参数依次为SEMMSL(每个用户拥有信号量最大数); #SEMMNS(系统信号量最大数); #SEMOPM(每次semopm系统调用操作数); #SEMMNI(信号灯标识符的最小数量(也就是说,套)); #Shmmax 最大共享内存2GB 物理内存如果小的话可以设置成536870912; #Shmmni 最小共享内存4096KB; #Shmall 所有内存大小; kernel.shmall = 2097152#该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改; kernel.shmmax = 2147483648 #该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G; kernel.shmmni = 4096 #这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是4096 。通常不需要更改; kernel.sem = 250 32000 100 128 #表示设置的信号量 fs.file-max = 65536#表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 #默认的接收窗口大小 net.core.rmem_max=262144 #接收窗口的最大大小 net.core.wmem_default=262144 #默认的发送窗口大小 net.core.wmem_max=262144 #发送窗口的最大大小 执行命令生效:/sbin/sysctl –p(这里说点题外话,sysctl命令是动态配置内核的,-p是指从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载,其他的可以从网上去搜一搜sysctl的用法) 编辑limits.conf文件,在末尾添加下列行 按照网上的说法是“提高Oracle 用户的shell 限制”,本人也认同,呵呵。 vi /etc/security/limits.conf 添加如下: oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 解释一下 #nofile (可打开的文件描述符的最大数) #nproc (单个用户可用的最大进程数量) 接下来,编辑login。 vi /etc/pam.d/login 行末添加以下内容 session required /lib/security/pam_limits.so session required pam_limits.so(网上说这一行需要添加,但我认为可以不需要,测试过不添加也可以) 下面这个提醒很重要! 如果是64位,则为 session required /lib64/security/pam_limits.so 如果64位的不这样写,会出现错误,到时你会花很长很长的时间去找错误,还不一定找的到,嘿嘿。 编辑profile,也就是环境变量文件 # vi /etc/profile 添加以下内容: if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 在系统读取这个环境变量文件时,有时会有错误,在上面的-p处,可作如下改动 cat >> /etc/profile <<EOF if [ \$USER = "oracle" ]; then if [ \$SHELL = "/bin/ksh" ]; then ## see SR: ##ulimit -p 16384 ulimit -u 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi EOF 没有出错的就不用改了哈,个人认为把这个加上还是对oracle的性能有帮助的 上面都是对一些基本配置的改动和增加,然后开始oracle用户的配置! 建立组和用户 #groupadd oinstall #groupadd dba #useradd -g oinstall -G dba -s /bin/ksh -d /home/oracle oracle 建立目录,我这里是安装在/db目录,在/db下建立如下目录 #oracle安装目录 /db/oracle #安装时用到的目录 /db/oracle/oraInventory #存放数据文件的目录 /db/oradb 设定各个目录的用户权限、读写权限 # chown -R oracle.dba /db/oracle # chmod -R 755 /db/oracle # chown -R oracle.dba /db/oradb # cd /db/oracle # chown -R oracle.oinstall oraInventory 编辑oracle用户的环境变量,因为创建oracle用户时,用的SHELL是ksh,所以编辑.profile文件 # vi /home/oracle/.profile 增加如下行: export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/db/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE_SID=bigzone export ORACLE_TERM=xterm export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64 export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export NLS_LANG="Simplified Chinese_china".UTF8 export LD_ASSUME_KERNEL=2.6.18 LC_CTYPE=zh_CN.UTF8 LC_ALL=zh_CH.UTF8 LANG=zh_CN.UTF8 export DISPLAY=192.168.1.186:0.0 #需要图形安装的机器IP umask 022 立即生效执行source /home/oracle/.profile 命令; 由于orcale10不支持RHEL5 所以需要修改/etc/redhat_realease # vi /etc/redhat-release 改成如下: #Red Hat Enterprise Linux Server release 5.4 (Tikanga) Red Hat Enterprise Linux Server release 4 (Tikanga) 修改/etc/hosts 文件将127.0.0.1改为你的ip 否则网络检查通不过,这个可以先不管。 在redhat 5.4版本下很有可能会缺少下面的包,如果缺少依次安装下面的包,请注意先后顺序,按照我这个顺序就行了。 libXp-1.0.0-8.1.el5.i386.rpm libXp-devel-1.0.0-8.1.el5.i386.rpm openmotif-2.3.1-2.el5.i386.rpm openmotif-devel-2.3.1-2.el5.i386.rpm 如果是5.5版本下则是 openmotif-2.3.1-2.el5_4.1.i386.rpm openmotif-devel-2.3.1-2.el5_4.1.i386.rpm 这里介绍下rpm的使用: rpm -ivh *.rpm i是安装,v是校验,h是散列的显示安装进度!并且这里的*.rpm是除了*.src.rpm之外的包的!另外如果要卸载的话就 rpm -e package e是删除软件包! -r--r--r-- 454 root root 18911 Jan 19 2007 libXau-1.0.1-3.1.i386.rpm -r--r--r-- 187 root root 18989 Jan 19 2007 libXau-1.0.1-3.1.x86_64.rpm -r--r--r-- 435 root root 11089 Jan 19 2007 libXau-devel-1.0.1-3.1.i386.rpm -r--r--r-- 187 root root 11065 Jan 19 2007 libXau-devel-1.0.1-3.1.x86_64.rpm 在5.5下安装libXp-devel-1.0.0-8.1.el5.i386.rpm之前可能需要先安装libXau-1.0.1-3.1.i386.rpm和libXau-devel-1.0.1-3.1.i386.rpm -r--r--r-- 454 root root 64732 Jan 19 2007 libXmu-1.0.2-5.i386.rpm -r--r--r-- 187 root root 64817 Jan 19 2007 libXmu-1.0.2-5.x86_64.rpm -r--r--r-- 435 root root 21178 Jan 19 2007 libXmu-devel-1.0.2-5.i386.rpm -r--r--r-- 187 root root 21306 Jan 19 2007 libXmu-devel-1.0.2-5.x86_64.rpm 在5.5下安装openmotif-2.3.1-2.el5_4.1.i386.rpm之前可能需要先安装libXmu-1.0.2-5.i386.rpm和libXmu-devel-1.0.2-5.i386.rpm 接下来,我就要开始正式安装了,进入我们linux下oracle安装之旅最激动的时刻,也是最容易报错的地方,呵呵,没关系,错了再找原因嘛!失败是成功他妈! 首先我们用ftp命令或其他工具把安装文件10201_database_linux_x86_64.cpio.gz上传 我这里是把文件上传到/dy/orainstall目录,dy就不用我解释了吧。 # su - oracle $ cd /dy/orainstall $ gunzip 10201_database_linux_x86_64.cpio.gz $ cpio -icdmv <10201_database_linux_x86_64.cpio 解压完后,我们开始安装! # su – oracle 一定要记得改下这个环境变量哦!否则会有你看不懂的文字地! $ export LANG=en_US 进入解压后的目录 $ cd /dy/orainstall/database 执行安装文件 $ ./runInstaller 进入安装界面,开始安装,在这之前如果你是telnet到服务器上进行安装的,需要在你的客户端安装一个软件,叫XManager,这个我非常喜欢,安装了这个之后,启动Xmanager passive,好,我们继续,这里如何进行安装oracle,我用图解的形式给大家展现一下,因为有些是在不同的项目中收集的图片,可能会存在部分文字不匹配的情况,还请谅解,主要还是看步骤,呵呵。请看图片吧! ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102139.png) 这里创建启动数据库就不要选了,后面再装,我有会以图解的形式告诉大家如何安装数据库实例 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102235.png) 继续下一步,其他不用管。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102321.png) 检查,内核参数警告和网络检查警告,可以忽略。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102406.png) 点击安装继续 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102445.png) 关键的时候到了,最重要的进度是80%~94%之间,我每次到这个地方,就比较紧张,呵呵。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102518.png) 前面通过后,到这里会提示你执行下这两个脚本,听他的话,执行下,然后确定。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102902.png) 好了!安装数据库系统到此告一段落。 接下来我们要安装数据库实例了,这个相对不难,我继续图解。在oracle用户下,执行dbca命令,出现如下界面。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_102940.png) 开始界面,没啥解释的。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103013.png) 选择创建新的数据库实例,当然你也可以选择删除记其他管理等。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103054.png) 选择第三个 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103127.png) 输入数据库实例名 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103158.png) 这个我们先不选,问你是否需要一个配置的表格展现,先不需要吧。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103235.png) 我们给不同的用户设定不同的密码,oracle10g安装应该没有最后两个用户的,没关系。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103320.png) 选择文件系统,这三个方式,各位看官可以去查一下就OK,网上解释的很清楚,我就不班门弄斧了,呵呵,继续安装。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103441.png) 我们来选择第二个,指定一个数据库文件的存放路径。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103518.png) 我们暂时不选闪回保存区,后期再设置。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103555.png) 不选 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103628.png) 不用脚本安装。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103701.png) 这里我建议选择自动分配,从9i之后,让ORACLE自动去管理内存分配较好。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103737.png) 这是进程数,够用就行,按照系统的使用情况去设定。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103810.png) 这个字符集要设对,根据实际需要去定,因为我们都在中国大陆使用,所以选择如图所示的。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103845.png) 选择专用,不要共享,自私点吧。 ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_103923.png) 好,点击finish,开始安装,至此,我们数据库全部安装成功 怎么样?到这里你很兴奋吧?呵呵,别急,我们还有一些工作要做,这样才算完美,继续吧。 这最后一步就是把oracle的启动和关闭加到linux系统里面去! 首先我们需要修改Oracle系统配置文件/etc/oratab /etc/oratab 格式为:SID:ORACLE_HOME:AUTO 把AUTO域设置为Y(大写),只有这样,oracle 自带的dbstart和dbshut才能够发挥作用。我的为: ![](http://180.168.83.54:8182/assets/100000/forum/images/20110701_104027.png) 接下来我们要创建启动的脚本,这个脚本文件我们定为dbora。 以root用户进入 # vi /etc/rc.d/init.d/dbora 写如下语句: 如果你的安装目录不同,则请改成相应的目录。 内容如下: #!/bin/sh . /etc/rc.d/init.d/functions ORA_HOME=/db/oracle/product/10.2.0/db_1 ORA_OWNER=oracle if [! -f /bin/dbstart ] then echo "Oracle startup:cannot start" exit fi case "$1" in 'start') echo -n "Starting lsnrctl..." su - oracle -c "/db/oracle/product/10.2.0/db_1/bin/lsnrctl start" echo -n "Starting Oracle..." su - oracle -c "/db/oracle/product/10.2.0/db_1/bin/dbstart" #echo -n "Starting apachectl..." #su - oracle -c "/db/oracle/product/10.2.0/db_1/Apache/Apache/bin/apachectl start" ;; 'stop') echo -n "Stoping Oracle..." su - oracle -c "/db/oracle/product/10.2.0/db_1/bin/dbshut" echo -n "Stoping lsnrctl..." su - oracle -c "/db/oracle/product/10.2.0/db_1/bin/lsnrctl stop" #echo -n "Stoping apachectl..." #su - oracle -c "/db/oracle/product/10.2.0/db_1/Apache/Apache/bin/apachectl stop" ;; 'status') su - oracle ;; 'restart') $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac 建立连接,执行如下命令即可。 ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc2.d/S99dbora ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc3.d/S99dbora ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc5.d/S99dbora ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc0.d/K10dbora ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc6.d/K10dbora 好啦!祝我们大功告成吧! |