zoukankan      html  css  js  c++  java
  • 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
      
    可以看到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
      

      之前安装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`

      

     三. 安装依赖包:

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

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

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

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

    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依赖的包的版本要求
       

      推荐几个网址,小伙伴们可以在上面搜一下需要的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所期望的值即可,下面这里只是个参考

    [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

      到时候根据检测结果修改为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
    可以看到/dev/sd3 即/opt才使用了不到400兆,下面开始创建oracle所需要的几个目录
    shell ~]# mkdir /opt/oracle/{app,oradata} -pv shell ~]#
    chmod 755 /opt/oracle/ /opt/oracle/app
      
    shell ~]# chown -R oracle.oinstall /opt/oracle
      
       

     八. 设置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 此处不做演示,非常简单

      

    shell ~]#mkdir /opt/packages
    shell ~]#unzip linux.x64_11gR2_database_1of2.zip
    shell ~]#unzip linux.x64_11gR2_database_2of2.zip
     

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

     shell ~]#cd database

     shell ~]#xhost +

     

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

     shell ~]$./runInstaller

     

     解决办法:

        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   ###再次执行此脚本

     图一:

     

    点击下一步

    图二:

    点击是,选择下一步

    图三:

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

    图四:

     

    选择服务器类,下一步

    图五

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

    图六:

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

    图七:

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

    图八:

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

    图九:

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

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

             会修改两个变量的值

    选择下一步

    图十:

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

    选择下一步

    图十一:

    选择第一项,点击下一步

    图十二

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

    图十三

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

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

     

    选择下一步

    图十四

    选择第二项,下一步

    图十五

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

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

    没问题,点击下一步

    图十六

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

    图十七

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

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

    图十八

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

    图十九

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

    图二十

    检测一共分三个板块

      1. 内存和交换分区大小

      2. 操作系统内核参数

      3. 程序包依赖

    解决:

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

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

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

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

    查看内存使用情况
    shell ~]#free -m
      

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

     shell ~]#dd if=/dev/zero of=/home/swap bs=100M count=40   ### 注意bs如果设置很大,会很卡,建议bs小点,count可以大一些,只要乘积是4G就可以

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

       

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

       shell ~]#/sbin/mkswap /home/swap
       

       

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

     shell ~]#/sbin/swapon /home/swap

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

      

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

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

    /home/swap              swap                    swap    defaults        0 0

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

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

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

      二. 操作系统内核参数

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

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

         图二十二

      

       按提示修改即可:

    shell ~]# bash /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh 

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

    图二十三:

    图二十四

    
    

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

    图二十五

     

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

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

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

    保存完成后,点击下一步

    图二十六:

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

    shell ~]#top -u oracle -c

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

    再看看进度

    图二十七

     

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

     图二十八

     

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

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

    图二十九

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

    图三十

     

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

      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

     

     点击确定:

     图三十一

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

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

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

    执行完脚本,点确定

    图三十二

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

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

    oracle相关服务说明:

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

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

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

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

     注意一定要手动输入https://

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

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

     oracle实例关闭:

    使用netstat命令再次查看:

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

    oracle实例启动:

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

    使用netstat查看oracle相关tcp连接

     

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

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

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

    使用sqlplus连接oracle

    初学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:

    可以看到本地连接,不需要开启监听器,远程连接必须开启监听器。注意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,修改行:

    编写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"

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

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

    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

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

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

  • 相关阅读:
    内存的分页管理方式解释
    分组统计SQL
    NUMA导致的Oracle性能问题
    SQL Server死锁的解决过程
    PHP创建对象的6种方式
    PHP编程20大效率要点
    php设置随机ip访问
    php使用QueryList轻松采集JavaScript动态渲染页面
    正确理解 PHP 的重载
    PHP 核心特性之匿名函数
  • 原文地址:https://www.cnblogs.com/M18-BlankBox/p/6007496.html
Copyright © 2011-2022 走看看