redhat安装oracle11g及随机启动
unset USERNAMEexport LANG=UTF-8export ORACLE_BASE=/oracleexport ORACLE_HOME=/oracle/10gexport DISPLAY=172.16.0.5:0.0export NLS_LANG='american_america.ZHS16GBK'export ORACLE_SID=jrtdbtestPATH=$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/bin:/sbin:$JAVA_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATHexport CLASSPATH=$JAVA_HOME/bin:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibexport JAVA_HOME=/usr/java/jdk1.6.0_14export PATHexport PS1="[\u@\h \w]\$"alias s='sqlplus "/as sysdba"'
文章来源http://hi.baidu.com/linuxandy/blog/item/317cc5c32f29a1110ff4774f.html
统环境:CentOS5.2英文版。地址:192.168.0.30 主机名:localhost.localdomain
修改 /etc/redhat-release为enterprise-5 安装位置:/u01/app/oracle
以下添加文件内容的操作默认都是添加在末尾
1.检查依赖安装包
rpm -qa | grep binutilsrpm -qa | grep compat-libstdc++rpm -qa | grep elfutils-libelfrpm -qa | grep elfutils-libelf-develrpm -qa | grep glibcrpm -qa | grep glibc-commonrpm -qa | grep glibc-develrpm -qa | grep glibc-headersrpm -qa | grep gccrpm -qa | grep gcc-c++rpm -qa | grep libaiorpm -qa | grep libaio-develrpm -qa | grep libstdc++rpm -qa | grep libstdc++-develrpm -qa | grep makerpm -qa | grep sysstatrpm -qa | grep unixODBCrpm -qa | grep unixODBC-devel
2.创建组和用户和配置hosts保证主机名指向127.0.0.1
#/usr/sbin/groupadd oinstall#/usr/sbin/groupadd dba#/usr/sbin/useradd -g oinstall -G dba oracle#passwd oracle oracleadmin
3.配置内核参数
vi /etc/sysctl.conf保持系统默认设置kernel.shmall = 2097152kernel.shmmax = 2147483648添加fs.file-max = 6815744kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576#/sbin/sysctl -p 应用设置
4.配置用户Shell limits,在下面的文件中添加以下内容
vi /etc/security/limits.conforacle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536vi /etc/pam.d/loginsession required /lib/security/pam_limits.so
5.设置/etc/profile
if [ $USER = "oracle" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fifi
6.创建目录
mkdir -p /u01/app/oraclechown -R oracle:oinstall /u01/appchmod -R 775 /u01/app
7.设置用户的.bash_profile文件
# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATHexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1export ORA_CRS_HOME=$ORACLE_BASE/crsexport ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/adminexport ORACLE_SID=orclexport PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:${PATH}:$HOME/binexport PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/binexport PATH=${PATH}:$ORACLE_BASE/common/oracle/binexport ORACLE_TERM=xtermexport TNS_ADMIN=$ORACLE_HOME/network/adminexport ORA_NLS10=$ORACLE_HOME/nls/dataexport LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/oracm/lib:$ORACLE_HOME/libexport LIBPATH=$LIBPATH:$ORA_CRS_HOME/lib:$ORACLE_HOME/libexport CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/JREexport NLS_LANG=AMERICAN_AMERICA.ZHS16GBK运行命令来使设置应用:source /home/oracle/.bash_profile
8.安装Oracle Database
切换到oracle用户$/mount_point/db/runInstaller选择 Basic InstallationOracle Base 的位置:/u01/app/oracleOracle Home 位置:/u01/app/oracle/product/11.1.0/db_1安装类型:Enterprise Edition (3.3GB)UNIX DBA 组:dba确保选中 Create Starter Database全局数据库名称:orcl输入数据库口令并确认口令清单目录:/u01/app/oraInventory操作系统组名:oinstall配置“口令管理”sys,system,scot oracleadmin以root用户运行脚本[root@squid ~]$ /u01/app/oraInventory/orainstRoot.sh[root@squid oracle]# /u01/app/oracle/product/11.1.0/db_1/root.sh
9.安装完成
安装汇总信息全局数据库名称: orclSystem Identifier(SID): orclServer Parameters filename:/u01/app/oracle/product/11.1.0/db_1/dbs/spfileorcl.ora企业管理器地址: https://ip:1158/em企业管理器配置文件: /u01/app/oracle/product/11.1.0/db_1/localhost登陆OEM界面https://ip:1158/em 使用sys登陆需要选择sysdba的身份
10.启动和停止的方法
首先启动的应该是数据库,然后是监听,最后是OEM启动和停止数据库:启动和停止数据库的最简单方法是从 OEM 控制台启动和停止。要从命令行执行此操作,请在以 oracle 身份登录后使用 SQL*Plus,如下所示:启动:$ sqlplusSQL*Plus: Release 11.1.0.6.0 - Production on Mon Nov 5 00:00:31 2007Copyright (c) 1982, 2007, Oracle. All rights reserved.Enter user-name: / as sysdbaConnected to:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> startupORACLE instance started.Total System Global Area 849530880 bytesFixed Size 1303216 bytesVariable Size 377490768 bytesDatabase Buffers 465567744 bytesRedo Buffers 5169152 bytesDatabase mounted.Database opened.SQL> exit停止:$ sqlplusSQL*Plus: Release 11.1.0.6.0 - Production on Mon Nov 5 00:00:31 2007Copyright (c) 1982, 2007, Oracle. All rights reserved.Enter user-name: / as sysdbaConnected to:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> exit启动和停止监听器:监听器接受客户端的连接请求,并在验证证书后创建数据库连接。要使用 OEM,必须先启动监听器。$ lsnrctl start[oracle@localhost ~]$ lsnrctl startLSNRCTL for Linux: Version 11.1.0.6.0 - Production on 25-OCT-2009 08:09:59Copyright (c) 1991, 2007, Oracle. All rights reserved.Starting /u01/app/oracle/product/11.1.0/db_1/bin/tnslsnr: please wait...TNSLSNR for Linux: Version 11.1.0.6.0 - ProductionSystem parameter file is /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.oraLog messages written to /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xmlListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.1.0.6.0 - ProductionStart Date 25-OCT-2009 08:09:59Uptime 0 days 0 hr. 0 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.oraListener Log File /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))The listener supports no servicesThe command completed successfully$ lsnrctl stop[oracle@localhost ~]$ lsnrctl stopLSNRCTL for Linux: Version 11.1.0.6.0 - Production on 25-OCT-2009 08:09:07Copyright (c) 1991, 2007, Oracle. All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))The command completed successfully启动和停止 Oracle 企业管理器数据库控制:$ emctl start dbconsole[oracle@localhost ~]$ emctl start dbconsoleOracle Enterprise Manager 11g Database Control Release 11.1.0.6.0Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved.https://localhost.localdomain:1158/em/console/aboutApplicationStarting Oracle Enterprise Manager 11g Database Control ............................. started.------------------------------Logs are generated in directory /u01/app/oracle/product/11.1.0/db_1/localhost.localdomain_orcl/sysman/log$ emctl stop dbconsole[oracle@localhost ~]$ emctl stop dbconsoleOracle Enterprise Manager 11g Database Control Release 11.1.0.6.0Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved.https://localhost.localdomain:1158/em/console/aboutApplicationStopping Oracle Enterprise Manager 11g Database Control ...... Stopped.
11.配置Oracle11随RHEL5的系统自动启动和关闭
#vi /etc/oratab找到orcl=/u01/app/oracle/product/11.1.0/db_1:N这一行改为:orcl=/u01/app/oracle/product/11.1.0/db_1:Y也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动。11.2 然后,是修改ORACLE自带的启动与关闭脚本,分别是dbstart和 dbshut。执行这两个脚本就可以实现ORACLE脚本的启动与关闭。在oracle账户下修改$ORACLE_HOME/bin/dbstart文件#su -oracle $cd $ORACLE_HOME/bin$vi dbstart找到ORACLE_HOME_LISTNER=$1这一行改为:ORACLE_HOME_LISTNER=$ORACLE_HOME之所以做这一步,是因为在这个脚本自动生成的时候,也就是ORACLE被安装进RHEL的时候,这个脚本并不知道你的ORACLE_HOME_LISTNER是什么,现在要将这个参数显示的写明,这样就不会在执行这个脚本的时候报ORACLE_HOME_LISTNER没有被指定的错误了。注意:dbstart和dbshut脚本在10g之后就已经将监听器的启动与关闭合并进数据库实例的启动与关闭脚本里面了。而不再是单独分开的了。同样的方式,我们也要修改dbshut的这个参数。这里就不再详细写出了,他们在同一个目录下。11.3 再次,就是写一个脚本,把它注册为一个系统服务,让它在开机与关机的时候运行。它的作用就是调用并执行dbstart和dbshut。这样不就实现了数据库启动与关闭了吗?!这个脚本被放在/etc/init.d目录中,脚本的名字是oracle11脚本如下:less /etc/init.d/oracle11#!/bin/bash#chkconfig:345 99 10#description: StartupScriptfororacleDatabases#/etc/rc.d/init.d/oradbstartexport ORACLE_BASE=/u01/app/oracle/export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1export ORACLE_SID=orclexport PATH=$PATH:$ORACLE_HOME/bincase"$1"instart)echo"-----startup oracle-----">>/var/log/oracle11logsu oracle -c $ORACLE_HOME/bin/dbstarttouch /var/lock/subsys/oracle11echo"-----startup oracle successful-----">>/var/log/oracle11logecho"OK";;stop)echo"-----shutdown oracle-----">>/var/log/oracle11logsu oracle -c $ORACLE_HOME/bin/dbshutrm -f /var/lock/subsys/oracle11echo"-----shutdown oracle successful-----">>/var/log/oracle11logecho"OK";;*)echo "Usage:'basename$0'start|stop"exit 1esacexit 0保存并退出。这段脚本的关键解释:第一:#chkconfig:345 99 10虽是一行注释,但是确实关键的必不可少的一行,除非你不用chkconfig命令来自动生成符号连接文件,而是完全采用手工创建。否则没有这一行,执行chkconfig系统将会报出oracle11没有chkconfig服务权限的错误。第二:su oracle -c $ORACLE_HOME/bin/dbstart和touch /var/lock/subsys/oracle11这两行的作用是首先执行dbstart脚本启动oracle,然后在服务活动列表目录中创建一个与oracle11这个服务同名的一个文件,表示这个服务是活动的,也就是被启动的。而su oracle -c $ORACLE_HOME/bin/dbshut和rm -f /var/lock/subsys/oracle11这两行的作用是首先执行dbshut急哦脚本关闭oracle,然后从服务活动列表目录中删除那个与oracle11同名的那个文件,表示这个服务不是活动的,也就是已经被关闭。那么为什么要做touch /var/lock/subsys/oracle11和rm -f /var/lock/subsys/oracle11这两步呢?原因是跟LINUX系统的机制有关的:LINUX的判别一个服务是否被启动的依据是在/var/lock/subsys/目录下是否与服同名的文件,若有则表示这个服务已经被启动了,在系统关闭的时候,LINUX会把这里面列出的服务全部关闭,并删掉与服务同名的文件。若一个服务被启动了,但却在这个目录里没有那个服务的同名文件,则不会关闭那个服务。网上的文章均将这个地方设置错了,所以会发现,ORACLE可以随系统启动了,但却没有随系统关闭。我也是分析了/etc/rc.d/rc.local后才发现这个原理的。经过试验,果然如此。再分析mysql的启动与关闭脚本也是这样做的,最终恍然大悟原来如此。这个地方请大家注意了。11.4 最后,就是将这个脚本注册成为一个系统服务就可以了,方法有二:其一:先给脚本分配可以被执行的权限。执行下面命令:#su-rootchown oracle /etc/init.d/oracle11chmod 775 /etc/init.d/oracle11再创建符号链接文件。chkconfig --add /etc/init.d/oracle11,执行这个命令就需要你在脚本中写上#chkconfig:3459910了。这样当这个命令被执行的时候,回去oracle11文件中寻找这行注释,并解析这行注释,根据解析结果分别在/etc/rc.d/rc3.d;/etc/rc.d/rc4.d;/etc/rc.d/rc5.d中创建符号连接文件S99oracle11文件,这个文件是系统启动时要执行的,其实这个文件是指向/etc/init.d/oracle11的,启动的时候系统向这个文件发送一个start参数,也就执行了oracle11文件中的start分支了。还会在/etc/rc.d/rc0.d;/etc/rc.d /rc1.d;/etc/rc.d/rc6.d中创建K10oracle11文件,这个文件时系统关闭时要执行的,其实这个文件也是指向/etc /init.d/oracle11的,关闭的时候系统向这个文件发送一个stop参数,也就执行了oracle11文件中的stop分支了。我想你应该明白#chkconfig:3459910中这些数字的含义了吧:指出3,4,5级别启动这个服务,99是在相应的/etc /rc.d/rcN.d(N为前面指定的级别,这里是2345)目录下生成的链接文件的序号(启动优先级别)S99oracle11,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除2345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)K10oracle11。至于为什么在这些目录中创建文件和文件的命名规则,这就要您对LINUX的系统启动流程有一个熟悉的了解了,在这就不详谈了。其二:若您想尝试一下手动创建符号连接文件的乐趣,请执行如下命令:#su -rootln -s /etc/init.d/oracle11 /etc/rc.d/rc3.d/S99oracle11ln -s /etc/init.d/oracle11 /etc/rc.d/rc4.d/S99oracle11ln -s /etc/init.d/oracle11 /etc/rc.d/rc5.d/S99oracle11作用效果和执行chkconfig --add oracle11是一样的。重启之后看看/var/lock/subsys/目录下的oracle11log文件,里面是不是有脚本的启动分支输出信息呢?