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备份与恢复。

原文地址:https://www.cnblogs.com/M18-BlankBox/p/6007496.html