Linux 6.x 下Oracle 11g R2 安装配置

Oracle 11g R2 数据库安装硬件配置要求:


最小内存 1 GB of RAM


虚拟内存容量,这个oracle也有要求,不用担心此时的swap分区不够oracle的要求 。虚拟内存swap如何增加容量,后面将会讲到


Available RAM

Swap Space Required

Between 1 GB and 2 GB

1.5 times the size of RAM

Between 2 GB and 16 GB

Equal to the size of RAM

More than 16 GB

16 GB

 

硬盘空间要求

数据库软件硬盘空间需求:


Installation Type

Requirement for Software Files (GB)

Enterprise Edition

3.95

Standard Edition

3.88


数据文件硬盘空间需求:


Installation Type

Requirement for Data Files (GB)

Enterprise Edition

1.7

Standard Edition

1.5

 

Oracle 11g下载地址:

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

Oracle 11g 测试机系统及环境:

虚拟机:VMware Workstation Pro 12
操作系统: CentOS 6.5
数据库版本:Oracle11G R2
系统内存:4G
硬盘:200G

说明:如果操作系统为Redhat,CentOS,建议操作系统版本使用rhel 5.x ,centos 5.x,因为在后续安装oracle 11g解决依赖包关系的时候,很多依赖包都在5.x的安装包里
oracle 11g R1 使用5.4即可,Oracle 11g R2 具体推荐的操作系统版本本人没测试过,操作系统版本大致在5.4~5.8,有兴趣的小伙伴也可以试试。不过使用6.x也不影响oracle
安装使用,但在安装时解决包依赖关系比较麻烦,有的不好找,当然你可以忽略掉,不是硬性要求。但如果生产环境想发挥出oracle出色的性能,建议最好解决掉包依赖关系。
oracle 11g R2 ==> rhel 5.5 (亲测)
oracle 11g R1 ==> reel 5.4

Oracle安装步骤:

1 关闭Selinux
2 修改主机名,并添加主机名与IP对应记录
3 安装依赖包
4 创建用户和组
5 修改内核参数
6 修改系统资源限制
7 创建安装目录及设置权限
8 设置oracle环境变量
9 安装
10 提供开机启动脚本
11 oracle防火墙策略设定(iptables)

一. 关闭Selinux

shell ~]#sed -i "s/^SELINUX=.*/SELINUX=permissive/" /etc/selinux/config
shell ~]#setenforce 0

查看当前Selinux策略
shell ~]#getenforce
  Linux 6.x 下Oracle 11g R2 安装配置
可以看到Selinux已经被禁用,如果是本次修改,需要重启操作系统

 修改主机名,并添加主机名与IP对应记录

二. 修改主机名
shell ~]#sed -i -r 's/^(HOSTNAME=).*/1oracle.dongpi.com/g' /etc/sysconfig/network # 重启操作系统后生效
shell ~]#echo "oracle.dongpi.com" > /proc/sys/kernel/hostname    # 即时生效
查看主机名
shell ~]# cat /proc/sys/kernel/hostname
shell ~]# hostname
shell ~]# echo $HOSTNAME ### 重新登录一边shell
  Linux 6.x 下Oracle 11g R2 安装配置

  之前安装oracle 11g R2主机名配置要求

  Linux 6.x 下Oracle 11g R2 安装配置

  添加主机名与IP对应记录

 shell ~]#echo -e "`ifconfig eth0 | awk '/addr:[0-9]/{print $2}'| cut -d: -f2` oracle.dongpi.com" >> /etc/hosts

 查看解析结果

 shell ~]#ping `hostname`

  Linux 6.x 下Oracle 11g R2 安装配置

 三. 安装依赖包:

 之前安装oracle 11g R2 需要解决的依赖包关系截图,有个大概了解,解决依赖关系之前最好挂载上centos 5.x的镜像和epel源,省得去百度下载,不过每个人

 的操作系统环境不一样,有些依赖包解决了,有些没解决,oracle安装界面有个重新检测按钮,如果有的包关系没解决,你可以安装检测失败的包,然后在点那个

 重新检测按钮。此处只是告诉小伙伴们大概所依赖的软件包,不需要你再一个一个查然后再安装,如果所依赖的软件包提示有两个一模一样的名字,主要是对应

 两种cpu架构平台(32位和64位)这两种包都需要安装

Linux 6.x 下Oracle 11g R2 安装配置

shell ~]#yum groupinstall "Development Tools"
shell ~]#yum install libaio glibc compat-libstdc++-33 elfutils-libelf-devel gcc-c++ libaio-devel libgcc libstdc++ libstdc++-devel -y
shell ~]#yum install unixODBC unixODBC-devel pdksh sysstat -y

shell ~]#wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
shell ~]#yum localinstall pdksh-5.2.14-37.el5_8.1.x86_64.rpm 

说明:之前安装oracle 11g R2没解决的依赖包关系,需要注意的是最好把yum的update功能关闭掉,有可能你在安装其他包的时候又破坏了oracle依赖的包的版本要求
   Linux 6.x 下Oracle 11g R2 安装配置

  推荐几个网址,小伙伴们可以在上面搜一下需要的rpm包

  1. http://rpm.pbone.net/

  2. https://pkgs.org/

 四. 创建用户和组(oracle要求指定的用户和组名)

shell ~]#groupadd oinstall
shell ~]#groupadd dba
shell ~]#useradd -g oinstall -G dba -d /home/oracle oracle

五. 修改内核参数:

具体的内核参数是什么样的值,这里先给一个要修改的内核参数列表,值的最终确定可以通过安装时检测获取,如果相应的内核参数检测失败,下面

有解释:包括期望值和当前值,只要修改相应的内核参数为oracle所期望的值即可,下面这里只是个参考

Linux 6.x 下Oracle 11g R2 安装配置

[root@Test_ELK ~]# cat << EOF > oracle.kernel.list
> net.ipv4.ip_local_port_range=
> fs.file-max=
> kernel.shmall=
> kernel.shmmax=
> kernel.shmmni=
> kernel.sem=
> net.core.rmem_default=
> net.core.wmem_default=
> net.core.rmem_max=
> net.core.wmem_max=
> fs.aio-max-nr=
> EOF

Linux 6.x 下Oracle 11g R2 安装配置

  到时候根据检测结果修改为oracle期望的值,然后使用for循环和sed命令追加到/etc/sysctl.conf 文件中

  内核参数获取

  shell ~]# sysctl -a | grep "xxx"

  修改完要想即时生效需要使内核重读此配置文件,然后让oracle重新检测,后面将会看到,现在不用着急配置

  shell ~]# sysctl -p       ### 通知内核重读配置文件

 六. 修改系统资源限制:

文件描述符修改
[root@Test_ELK ~]# cat << EOF >> /etc/security/limits.conf > oracle soft nproc 2047 > oracle hard nproc 16384 > oracle soft nofile 1024 > oracle hard nofile 65536 > EOF

pam认证修改
shell ~]#echo "# pam_limits.so" >> /etc/pam.d/login
shell ~]#echo "session  required  pam_limits.so" >> /etc/pam.d/login

七. 创建安装目录及设置权限

  建议:oracle的数据文件目录和安装目录分开

              oracle的数据文件最好存储在可靠的物理设备上(可以使用几块磁盘组成raid10 或者raid 5),最起码是一个单独的分区。

此次安装仅作为实验演示,所以使用一个分区上的目录来创建oracle的工作目录
查看当前分区容量,只要磁盘剩余空间符合oracle的要求即可,我一般喜欢安装大的软件到/opt下
shell ~]#df -Ph
Linux 6.x 下Oracle 11g R2 安装配置
可以看到/dev/sd3 即/opt才使用了不到400兆,下面开始创建oracle所需要的几个目录
shell ~]# mkdir /opt/oracle/{app,oradata} -pv shell ~]#
chmod 755 /opt/oracle/ /opt/oracle/app
  Linux 6.x 下Oracle 11g R2 安装配置
shell ~]# chown -R oracle.oinstall /opt/oracle
  Linux 6.x 下Oracle 11g R2 安装配置
   

 八. 设置oracle环境变量:

shell ~]#su - oracle      ### 必须使用oracle用户登录

  [root@oracle ~]# echo '''
    ORACLE_BASE=/opt/oracle/app
   ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

    ORACLE_OWNER=oracle

    ORACLE_SID=orcl
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
    LANG="zh_CN.UTF-8"
    PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
    export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH LANG PATH
    ''' >> ~/.bash_profile

  shell ~]#source ~/.bash_profile

  注意此处:最好使用vim修改,因为你的oracle环境PATH有可能有其他的值

九. 准备工作都做好了,开始安装

  说明:oracle安装需要在图形化界面完成,所以如果你的操作系统是最小化安装,很悲剧你不能通过命令行的模式去完成,这是比较恶心的地方

      解决办法:安装图形化组件和vnc服务,然后通过vnc客户端进行oracle的安装

CentOS上VNC服务的安装配置请参考 http://www.ha97.com/4634.html 此处不做演示,非常简单

  Linux 6.x 下Oracle 11g R2 安装配置

shell ~]#mkdir /opt/packages
shell ~]#unzip linux.x64_11gR2_database_1of2.zip
shell ~]#unzip linux.x64_11gR2_database_2of2.zip
 Linux 6.x 下Oracle 11g R2 安装配置

 解压后会在当前目录下生成一个名为 database的目录

 shell ~]#cd database

 shell ~]#xhost +

 Linux 6.x 下Oracle 11g R2 安装配置

 shell ~]#su - oracle    ### 为了安全,运行oracle进程的属主不能是root

 shell ~]$./runInstaller

 Linux 6.x 下Oracle 11g R2 安装配置

 解决办法:

    1. 直接设置环境变量LANG为英文环境

       shell ~]$locale -v     ### 查看当前用户的默认语言环境,即Oracle用户的默认语言环境

       shell ~]$locale -a     ### 查看系统支持的所有字符编码集

       shell ~]$LANG=en_US.UTF-8   ### 注意只是本次shell进程有效,要想始终有效,可以在oracle家目录下的.bash_profile定义LANG变量的值

    2. 安装中易宋体18030 (参考网站:http://www.xpgod.com/soft/8928.html)

       zysong.ttf使用方法:
      1.在Linux下执行以下命令,把字体库安装到相应位置  
     mkdir -p /usr/share/fonts/zh_CN/TrueType && cp zysong.ttf /usr/share/fonts/zh_CN/TrueType/

      2.这样在安装的时候。Oracle就会显示中文了,而不再是中文乱码了。
      3.索引的丢失可能引起数据库访问失败
      4.解决Oracle安装乱码问题。
        需要将文件同时安装到/usr/share/fonts/zh_CN/TrueType/和$JAVA_HOME/jre/lib/fonts/fallback/下

    3. 如果你还能勉强看懂点英语,建议英文安装,但是安装时排错就比较麻烦

 shell ~]$./runinstaller   ###再次执行此脚本

 图一:

 Linux 6.x 下Oracle 11g R2 安装配置

点击下一步

图二:

Linux 6.x 下Oracle 11g R2 安装配置

点击是,选择下一步

图三:

Linux 6.x 下Oracle 11g R2 安装配置

选择创建和配置数据库,下一步

图四:

 Linux 6.x 下Oracle 11g R2 安装配置

选择服务器类,下一步

图五

Linux 6.x 下Oracle 11g R2 安装配置

 选择单实例数据库安装,下一步

图六:

Linux 6.x 下Oracle 11g R2 安装配置

选择高级安装,高级安装可以自定义一些配置,下一步

图七:

Linux 6.x 下Oracle 11g R2 安装配置

选择语言,一般为简体中文和英语下一步

图八:

Linux 6.x 下Oracle 11g R2 安装配置

选择企业版,选择选项里有六个组件,一般默认即可,下一步

图九:

Linux 6.x 下Oracle 11g R2 安装配置

说明:oracle会根据之前在oracle家目录下的.bash_profile文件设置默认的基本目录和主目录,所以如果你想在安装前修改

         就可以在.bash_profile 通过变量ORACLE_BASE,ORACLE_HOME定义,当然你可以在安装中通过浏览定义,oracle

         会修改两个变量的值

选择下一步

图十:

Linux 6.x 下Oracle 11g R2 安装配置

!注意  此清单目录一定要为空(比如安装过程异常中断,再次安装oracle),否则会报以下错误:

Linux 6.x 下Oracle 11g R2 安装配置

选择下一步

图十一:

Linux 6.x 下Oracle 11g R2 安装配置

选择第一项,点击下一步

图十二

Linux 6.x 下Oracle 11g R2 安装配置

输入全局数据库名和SID,其中SID也是根据之前的环境变量来获取的,此处你也可以更改,下一步

图十三

Linux 6.x 下Oracle 11g R2 安装配置

如果没有oracle使用经验,选择让数据库自动内存管理

选择合适的字符集,这里选择UTF8

 Linux 6.x 下Oracle 11g R2 安装配置

选择下一步

图十四

Linux 6.x 下Oracle 11g R2 安装配置

选择第二项,下一步

图十五

Linux 6.x 下Oracle 11g R2 安装配置

指定oracle数据库数据存放目录,选择文件系统,默认为/opt/oracle/app/oradata 这也是为什么之前创建的目录名为oradata

但是如果在此修改一定要保证修改后的目录具有以下权限 

Linux 6.x 下Oracle 11g R2 安装配置

没问题,点击下一步

图十六

Linux 6.x 下Oracle 11g R2 安装配置

选择不启用自动备份,点击下一步,这个功能安装后还能修改,不需要安装时定义,点击下一步

图十七

Linux 6.x 下Oracle 11g R2 安装配置

选择对所有账户使用相同的口令,但生产环境不建议这么做,输入口令后,点击下一步

Linux 6.x 下Oracle 11g R2 安装配置

详细资料里有密码规则,不过你可以忽略,不影响,选择是,点击下一步(一定要记住此密码)

图十八

Linux 6.x 下Oracle 11g R2 安装配置

oracle用户组权限说明,保持默认,点下一步

图十九

Linux 6.x 下Oracle 11g R2 安装配置

oracle检测目标环境并生成结果

图二十

Linux 6.x 下Oracle 11g R2 安装配置

检测一共分三个板块

  1. 内存和交换分区大小

  2. 操作系统内核参数

  3. 程序包依赖

解决:

  说明:每个检测失败的选项,oracle都会给出详细信息,照着修改即可,一般就是把当前参数的值改为预期值,再重新检测即可

  一. 交换分区大小,一般交换分区在装系统的时候就已经确定,下面接下来讲解安装后如何增加swap分区的大小

     从上面的报错可以看到,预期值为大概4g,当前值为2g,所以需要增加2g,但是考虑到其他进程的使用此处我们增加4g,反正也是使用磁盘来用作交换分区,只要你

     有足够硬盘空间,你可以增大到你期望的swap大小。

查看内存使用情况
shell ~]#free -m
  Linux 6.x 下Oracle 11g R2 安装配置

  以下的操作都要在root用户下进行,首先先建立一个分区,采用dd命令比如

Linux 6.x 下Oracle 11g R2 安装配置 shell ~]#dd if=/dev/zero of=/home/swap bs=100M count=40   ### 注意bs如果设置很大,会很卡,建议bs小点,count可以大一些,只要乘积是4G就可以

   这样就会创建/home/swap这么一个分区文件。

   Linux 6.x 下Oracle 11g R2 安装配置

   可以看到通过dd创建了一个4G大小的swap文件,接着再把这个分区变成swap分区。

   shell ~]#/sbin/mkswap /home/swap
   Linux 6.x 下Oracle 11g R2 安装配置

   Linux 6.x 下Oracle 11g R2 安装配置

   再接着使用这个swap分区。其实就是挂载,使其成为有效状态。

Linux 6.x 下Oracle 11g R2 安装配置 shell ~]#/sbin/swapon /home/swap

  现在再用free -m命令查看一下内存和swap分区大小,就发现增加了4G的空间了。

  Linux 6.x 下Oracle 11g R2 安装配置

  不过当计算机重启了以后,发现swap还是原来那么大,新的swap没有自动启动,还要手动启动。

  那我们需要修改/etc/fstab文件,增加如下一行

Linux 6.x 下Oracle 11g R2 安装配置/home/swap              swap                    swap    defaults        0 0

  你就会发现你的机器自动启动以后swap空间也增大了。

 点击重新检查:如下图二十一

Linux 6.x 下Oracle 11g R2 安装配置

可以看到,交换分区检测通过,不在报检测失败

  二. 操作系统内核参数

  你没必要先手动一个一个去修改,选择修补并再次检查,oracle安装程序里有个脚本会自动帮你解决内核参数检测不通过的问题,如果次脚本执行完

  还报某几个选项检测失败,这时你可以手动修改了 (使用sysctl命令修改并保存结果到/etc/sysctl.conf中) 

     图二十二

  Linux 6.x 下Oracle 11g R2 安装配置

   按提示修改即可:

shell ~]# bash /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh 
Linux 6.x 下Oracle 11g R2 安装配置

可以看到,运行此脚本后,会自动修改操作系统内核参数,点确定

图二十三:

Linux 6.x 下Oracle 11g R2 安装配置

图二十四

Linux 6.x 下Oracle 11g R2 安装配置

   三 .软件包依赖关系,这里建议都解决了,主要是从CentOS5.x上和google找,此处全部忽略,下一步

图二十五

 Linux 6.x 下Oracle 11g R2 安装配置

 安装过程中配置的清单,可以选择保存到本地,默认会生成一个名为db.rsp的应答文件,oracle应答文件可以完成脚本式自动安装部署,可以使用图形化安装中生成

的应答文件作为模板。选择保存,此处不做如何使用应答文件快速部署oracle,感兴趣的小伙伴可以自行google或者百度。

shell ~]# mkdir /opt/oracle_rsp;chown  oracle.oinstall /opt/oracle_rsp

Linux 6.x 下Oracle 11g R2 安装配置

保存完成后,点击下一步

图二十六:

Linux 6.x 下Oracle 11g R2 安装配置

等待最后安装,这个时间有点长,主要和你的机器配置有关, 可以使用top看下负载

shell ~]#top -u oracle -c

Linux 6.x 下Oracle 11g R2 安装配置

可以看到安装Oracle需要用到java,不过oracle的安装包里已经替我们安装了java,其实oracle图形化安装界面就是用java写的

再看看进度

图二十七

 Linux 6.x 下Oracle 11g R2 安装配置

 只要安装状态成功就OK,从上面可以看到安装最后一个步骤需要运行一个脚本,点击详细资料可以看到安装的详细过程

 图二十八

 Linux 6.x 下Oracle 11g R2 安装配置

 为了防止进程假死,你最好使用上面的top命令和打开详细过程按钮监控着,以免你在这里一厢情愿地浪费感情,这里你注意oracle的日志目录,里面有安装日志

Linux 6.x 下Oracle 11g R2 安装配置

终于弹下一个窗了,我以为卡死了,这时你就要注意oracle安装日志有没有变动,如果有变动那说明没问题

图二十九

Linux 6.x 下Oracle 11g R2 安装配置

注意当前操作的日志文件路径 /opt/oracle/app/cfgtoollogs/dbca/orcl

图三十

 Linux 6.x 下Oracle 11g R2 安装配置

 说明:上面红色箭头的部分都要留意下,主要有以下几方面注意的

  1. 数据库创建日志

  2. 数据库信息

  3. 登录方式:URL https://oracle.dongpi.com:1158/em     ### 通过web方式登录oracle的OEM

  4. 备份加密秘钥文件

    shell ~]#mkdir /root/oracle_key

    shell ~]#cp -ra  /opt/oracle/app/product/11.2.0/dbhome_1/oracle.dongpi.com_orcl/sysman/config/emkey.ora /root/oracle_key/

  5. 口令管理,默认oralce会锁定除了(sys,system)用户外的其他账户。这里我们可以选择解锁一个用户scott

 Linux 6.x 下Oracle 11g R2 安装配置

 点击确定:

 图三十一

Linux 6.x 下Oracle 11g R2 安装配置

按上述提示执行以下操作,主要是执行两个脚本

shell ~]#bash /opt/oracle/oraInventory/orainstRoot.sh

Linux 6.x 下Oracle 11g R2 安装配置

shell ~]#bash /opt/oracle/app/product/11.2.0/dbhome_1/root.sh 

Linux 6.x 下Oracle 11g R2 安装配置

执行完脚本,点确定

图三十二

Linux 6.x 下Oracle 11g R2 安装配置

十. 基本上Oracle安装算完成了,接下来看看如何启动关闭oracle,并提供sysv风格的启动脚本

 用OUI安装并配置Oracle数据库后,Oracle就开启了(包括:数据库实例、监听器、EM)。在重启操作系统之后,Oracle默认是没有启动的。使用如下命令查看Oracle相关服务是否已启动:

Linux 6.x 下Oracle 11g R2 安装配置

oracle相关服务说明:

1.tcp/1158: oracle EM监听端口,网页版的管理器

  - 状态查看:shell ~]#emctl status dbconsole   ### 切换到orcale用户执行

  -  启动和关闭:shell ~]#emctl start/stop  dbconsole

  - 访问方式:可在web浏览器中输入:https://{ServerIP|Hostname}:1158/em

 注意一定要手动输入https://Linux 6.x 下Oracle 11g R2 安装配置

2. tcp/17191: oracle 数据库实例监听的端口(此端口每次重启oracle都会改变)

 手工启动oracle实例,可用sqlplus建立一个idle instance,然后使用startup启动或关闭,如下:

 oracle实例关闭:

Linux 6.x 下Oracle 11g R2 安装配置

使用netstat命令再次查看:

Linux 6.x 下Oracle 11g R2 安装配置

可以看到oracle实例已经关闭,但是监听器和EM没有被关闭,接下来我们启动oracle实例

oracle实例启动:

Linux 6.x 下Oracle 11g R2 安装配置

注意以上在关闭oracle实例后,使用sqlplus连接到一个空闲实例(不再是orcl),oralce有一个连接后的默认实例-orcl

使用netstat查看oracle相关tcp连接

 Linux 6.x 下Oracle 11g R2 安装配置

3. tcp/1521: oracle监听器,数据库实例启动后,需要启动监听器,才能让远程用户建立连接。

 - 监听器状态查看:shell ~]#su -oracle -c "lsnrctl status"     ##切换到oracle用户

Linux 6.x 下Oracle 11g R2 安装配置

- 监听器关闭:shell ~] su - oracle -c "lsnrctl stop"

Linux 6.x 下Oracle 11g R2 安装配置

使用sqlplus连接oracle

Linux 6.x 下Oracle 11g R2 安装配置

初学oracle的小伙伴有可能就会疑惑,为什么关闭监听器后任然可以连接oracle,其实是这样子的oracle连接分为本地连接和远程连接,具体如下:

通过sqlplus命令行连接oracle四种方法
1. sqlplus / as sysdba
    操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态。比如我们想要启动数据库就可以用这种方式

进入
    sqlplus,然后通过startup命令来启动。
2. sqlplus username/password
    连接本机数据库,不需要数据库服务器的listener进程,但是由于需要用户名密码的认证,因此需要数据库服务器处于可用状态才行。
3. sqlplus usernaem/password@orcl
    通过网络连接,这是需要数据库服务器的listener处于监听状态。此时建立一个连接的大致步骤如下 
  a. 查询sqlnet.ora,看看名称的解析方式,默认是TNSNAME  
  b. 查询tnsnames.ora文件,从里边找orcl的记录,并且找到数据库服务器的主机名或者IP,端口和service_name  
  c. 如果服务器listener进程没有问题的话,建立与listener进程的连接。  
  d. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的

话客户端
      就连接上了数据库的server process。
  e. 这时连接已经建立,可以操作数据库了。
4.sqlplus username/password@//host:port/sid
  用sqlplus远程连接oracle命令(例:sqlplus risenet/1@//192.168.130.99:1521/risenet)

上面的方式为本地连接,不需要开启oracle监听器,接下来我们使用账号密码远程连接oracle:

Linux 6.x 下Oracle 11g R2 安装配置

可以看到本地连接,不需要开启监听器,远程连接必须开启监听器。注意conn格式(本地和远程)

如果每次重启操作系统都要进行以上操作好麻烦,那么如何让Oracle作为系统服务在开机的时候自动启动呢?

Oracle在$ORACLE_HOME/bin下提供许多对数据库进行操作的脚本,其中dbstart和dbshut可分别用来启动和关闭数据库。注意,这两个脚本已包含监听器的启动或关闭,但并未对EM进行相关的操作。使用如下命令脚本:

1  /opt/oracle/app/product/11.2.0/dbhome_1/bin/dbstart    ### 启动数据库实例(包含监听器)
2  /opt/oracle/app/product/11.2.0/dbhome_1/bin/dbshut   ###  关闭数据库实例(包含监听器)

以上命令要成功启动数据库实例还得打开Oracle设置的一个关卡:vim /etc/oratab,修改行:

Linux 6.x 下Oracle 11g R2 安装配置

编写oracle开机启动脚本如下:

shell ~]vim /sh/oracle.sh

 1 #!/bin/env bash
 2 #
 3 #*********************
 4 # version: 1.0.0
 5 # author: 贾俊伟
 6 # contact:
 7 #     - QQ:765482322
 8 #*********************
 9 
10 # chkconfig:35 20 80
11 # description: Oracle sysv init Boot scipt.
12 
13 # 自定义变量
14 LogFile=/var/log/oracleinit.log
15 ORA_OWNER=oracle
16 PID=
17 
18 # 读取oracle环境变量
19 source /home/oracle/.bash_profile
20 
21 # 读取系统functions脚本
22 . /etc/init.d/functions
23 
24 # 网络相关检查
25 if [ ! -f /etc/sysconfig/network ]; then
26     exit 0
27 fi
28 
29 . /etc/sysconfig/network
30 
31 # Check that networking is up.                                                                                                                       
32 [ "${NETWORKING}" = "no" ] && exit 0 
33 
34 start() {
35 
36     if [ ! -x ${ORACLE_HOME}/bin/dbstart ];then
37         echo "$(date +"%Y-%m-%d %H:%M:%S") [Warning] The file does not exist or can not be executed." | tee -a $LogFile 2>&1
38         exit 1
39     else
40         echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] Server ORACLE boot start  ..." | tee -a $LogFile 2>&1
41         su - ${ORA_OWNER} -c "${ORACLE_HOME}/bin/dbstart ${ORACLE_HOME}" | tee -a $LogFile 2>&1
42         
43         if (netstat -tnpl | grep -iq ":1521");then
44             PID=$(pgrep tnslsnr)
45             echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] ORACLE($PID) Boot is OK." | tee -a $LogFile 2>&1
46         else 
47             echo "$(date +"%Y-%m-%d %H:%M:%S") [Warning] ORACLE($PID) Boot is Failed,Please start manually" | tee -a $LogFile 2>&1
48             exit 1
49         fi
50 
51     fi
52 }
53 
54 stop() {
55     if [ ! -x ${ORACLE_HOME}/bin/dbshut ];then
56         echo "$(date +"%Y-%m-%d %H:%M:%S") [Warning] The file does not exist or can not be executed."
57         exit 1
58     else
59         echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] Server ORACLE Stop start  ..." 
60         if (netstat -tnpl | grep -iq ":1521");then
61             su - ${ORA_OWNER} -c "${ORACLE_HOME}/bin/dbshut ${ORACLE_HOME}" 
62             sleep 3
63             if (netstat -tnpl | grep -iq ":1521");then
64                 PID=$(pgrep tnslsnr)
65                 kill -9 $PID                                                                                                                     
66             fi
67             echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] ORACLE Stop is OK." 
68         else
69           echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] ORACLE is already stopped."
70         fi
71     fi
72 }
73 
74 case $1 in
75     start)
76         start
77         ;;
78     
79     stop)
80         stop | tee -a $LogFile 2>&1
81         ;;
82     
83       *)
84         echo "Usage:`basename $0` {start|stop}"
85 esac

脚本说明:此脚本判断oracle是否正常启动依据的是监听器,如果监听器没有启动就认为oracle没有启动,其实这是有问题的,不过这种情况只在手动使用命令启动或者关闭oracle

相关服务进程的时候才会出现,正常情况下oracle提供的默认脚本,启动和关闭都包含对监听器的操作。当然亦可以根据以上脚本修改更加严格的判断条件,比如只有oracle三个tcp连接同时存在作为启动判别标准。为了安全起见,本脚本没有启动oracle 管理器EM。

shell ~]cp /sh/oracle.sh /etc/init.d/oracle   ## 复制到系统默认开机启动脚本目录,该目录包含了sysv风格的服务启动脚本,即可以使用service命令

shell ~]chmod +x /etc/init.d/oracle     ### 添加可执行权限

shell ~]chkconfig --level 35 oracle on  ### 加入开机启动

测试脚本:

1.启动oracle,这里我们先使用pkill强行杀死所有oracle进程

1 shell ~]#pkill -9 oracle
2 shell ~]#ps -ef | grep -i "oracle|java"  ### 杀掉包含oracle或者java关键字的进程(oracle使用java开发,为防止误杀,请首先确认是否有其他java进程)
3 shell ~]#netstat -tnpl | egrep -i ":1521|:1158|ora"

Linux 6.x 下Oracle 11g R2 安装配置

返回为空说明,全部杀死。使用sercie命令启动oracle

Linux 6.x 下Oracle 11g R2 安装配置

2.关闭oracle,同样使用service命令

Linux 6.x 下Oracle 11g R2 安装配置

3. oracle启动关闭相关日志:$ORACLE_HOME/{starup.log|shutdown.log}

十一. oracle 防火墙设定

主要是开放oracle三个tcp端口中的(1521:监听器,1158:em)

iptables -A INPUT -s 192.168.95.0/24 -p tcp -m state --state NEW -m multiport --dports 1521,1158 -j ACCEPT

Linux 6.x 下Oracle 11g R2 安装配置

使用navicat连接验证:如下图点击测试连接。

Linux 6.x 下Oracle 11g R2 安装配置

至此有关oracle 11g r2基本环境部署就先介绍到这里,后续我会继续分享oracle基本操作命令,oracle备份与恢复。