Centos7 静默安装 Oracle 11g

目录标题

    • 1.以root用户登录系统
    • 2.检查硬件要求
      • 2.1 内存要求
        • 2.1.1 创建Swap分区空间
      • 2.2 系统架构
        • 2.2.1 修改CentOS系统标识
      • 2.3 磁盘空间要求
        • 2.3.1 挂载硬盘
    • 3 检查软件要求
      • 3.1 操作系统要求
      • 3.2 内核要求
      • 3.3 包装要求
        • 3.3.1 上传资源包
        • 3.1.2 安装本地rpm依赖包
        • 3.1.3 yum安装所需依赖包
      • 3.4 其他软件要求
        • 3.4.1 安装rlwrap
        • 3.4.2 安装JDK
        • 3.4.3 关闭selinux防火墙
    • 4 安装Oracle数据库
      • 4.1 前期准备
        • 4.1.1 修改sysctl.conf内核参数
        • 4.1.2 修改/etc/pam.d/login文件
        • 4.1.3 修改/etc/profile文件
        • 4.1.4 编辑文件 **/etc/csh.login**
        • 4.1.5 修改服务器主机名
          • 4.1.5.1 hostnamectl set-hostname 修改
          • 4.1.5.2 修改/etc/hosts文件
          • 4.1.5.3 修改/etc/sysconfig/network
        • 4.1.6 创建所需的操作系统组和用户相关说明
        • 4.1.7 创建相应的用户和用户组及相关操作
        • 4.1.8 创建相应的目录并修改目录权限
        • 4.1.9 创建/etc/oraInst.loc文件
        • 4.1.10 修改oracle用户的限制文件
        • 4.1.11 修改用户环境变量
        • 4.1.12 激活/home/oracle/.bashrc
        • 4.1.13 解压两个zip安装包并授权
        • 4.1.14 重启机器
      • 4.2 开始安装
        • 4.2.1 进入Oracle用户
        • 4.2.2 编辑静默安装应答文件
        • 4.2.3 执行安装oracle脚本文件
          • 4.2.3.1 在另一个窗口输入命令如下
        • 4.2.4 编辑监听配置文件
        • 4.2.5 执行监听配置文件脚本命令
        • 4.2.6 编辑数据库实例文件
        • 4.2.7 执行安装数据库实例脚本
        • 4.2.8 查看实例是否运行
        • 4.2.9 修改启动和关闭实例的程序
          • 4.2.9.1 修改启动实例配置文件
          • 4.2.9.2 修改关闭实例配置文件
        • 4.2.10 修改/etc/oratab配置文件
        • 4.2.11 启动实例
        • 4.2.12 开机启动Oracle
        • 4.2.13 进入oracle数据库

1.以root用户登录系统

$ su root

2.检查硬件要求

系统必须满足以下最低硬件要求:

  • 内存要求
  • 系统架构
  • 磁盘空间要求

2.1 内存要求

以下是安装Oracle Database 11g Release 2(11.1)的内存要求:

  • 最低:1 GB RAM

  • 推荐:2 GB 内存或更多

    要确定RAM大小,查看Swap分区空间(一般情况下不小于2G,具体看系统内存大小)请输入以下命令:

    [root@VM-8-11-centos ~]# grep SwapTotal /proc/meminfo
    SwapTotal:             0 kB    # 这就表示此刻系统的交换分区为0
    ​
    # 也可以使用free命令进行查看分区空间
    [root@VM-8-11-centos ~]# free –h
                  total        used        free      shared  buff/cache   available
    Mem:        3782992      217256      137472         520     3428264     3284236
    Swap:             0           0           0     # 同样是显示空间大小为0            
    
  • 下表描述了已安装的RAM与配置的交换空间建议之间的关系:

    在Linux上,HugePages功能使用内存映射文件为大页表分配不可交换的内存。如果您启用了HugePages,那么在计算交换空间之前,您应该从可用RAM中扣除分配给HugePages的内存。

    可用RAM 需要交换空间
    1 GB到2 GB之间 内存大小的1.5倍
    在2 GB到16 GB之间 等于RAM的大小
    超过16 GB 16 GB
2.1.1 创建Swap分区空间

使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):

[root@VM-8-11-centos ~]# dd if=/dev/zero of=/home/swap bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 8.42517 s, 255 MB/s

if(即输入文件,input file),of(即输出文件,output file)。dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。 bs=1M代表增加的模块大小,count=2048代表是2048个模块,也就是2G空间大小

  • count的计算公式: count = size * bs (size以MB为单位)

回车后,会执行2g的读写操作,系统会卡一段时间,耐心等待执行结果。

  • 执行完毕,对交换文件格式化并转换为swap分区:
[root@VM-8-11-centos ~]# mkswap /home/swap
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=7859f620-c028-442f-b901-e0f13a623914     
  • 挂载并激活分区:
[root@VM-8-11-centos ~]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.

执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:

[root@VM-8-11-centos ~]# chmod -R 0600 /home/swap
  • 可以用 free –h 或 swapon –s命令查看新swap分区是否正常添加并激活使用。
[root@VM-8-11-centos ~]# free –h
              total        used        free      shared  buff/cache   available
Mem:        3782992      214572      133712         512     3434708     3287104
Swap:       2097148           0     2097148
[root@VM-8-11-centos ~]# swapon -s
Filename                                Type            Size    Used    Priority
/home/swap                              file    2097148 0       -2

如果需要关闭swap分区则执行

  • swapoff /home/swap
  • 修改 fstab 配置,设置开机自动挂载该分区:
[root@VM-8-11-centos ~]# vim  /etc/fstab
# 在fstab文件末尾追加如下内容后:wq 保存退出即可:
/home/swap swap swap default 0 0

或直接对fstab进行echo追加:

echo  "/home/swap   swap  swap  defaults  0  0" >>  /etc/fstab

至此,Swap空间准备完成。

2.2 系统架构

[root@VM-8-11-centos ~]# uname -m
x86_64

此命令显示处理器类型。验证处理器架构是否与要安装的甲骨文软件版本匹配。如果您没有看到预期的输出,则无法在此系统上安装软件。

2.2.1 修改CentOS系统标识

由于Oracle默认不支持CentOS,需要修改为redhat

[root@VM-8-11-centos ~]# vim /etc/redhat-release
#删除CentOS Linux release 7.6.2009 (Core)(快捷键dd),改成redhat-7
redhat-7

2.3 磁盘空间要求

以下是安装Oracle Database 11g Release 2(11.2)的磁盘空间要求:

  • /tmp目录中至少有1 GB的磁盘空间

    要确定/tmp目录中可用的磁盘空间量,请输入以下命令:

    [root@VM-8-11-centos ~]# df -h /tmp
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        59G  7.4G   50G  14% /
    

    如果/tmp目录中可用的可用磁盘空间少于1 GB,请完成以下步骤之一:

    • /tmp目录中删除不必要的文件,以满足磁盘空间要求。

    • 在设置oracle用户环境时设置TMPTMPDIR环境变量。

      另见:

      “配置甲骨文用户环境”,了解有关设置TMP的更多信息TMPDIR

    • 扩展包含/tmp目录的文件系统。如有必要,请联系系统管理员以获取有关扩展文件系统的信息。

  • 要确定系统上的可用磁盘空间量,请输入以下命令:

[root@VM-8-11-centos ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G   24K  1.9G   1% /dev/shm
tmpfs           1.9G  488K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda1        59G  7.4G   50G  14% /
tmpfs           370M     0  370M   0% /run/user/0
  • 下表描述了Linux x86-64上每种安装类型的软件文件的磁盘空间要求和数据文件:

    安装类型 软件文件要求(GB)
    企业版 4.7
    标准版 4.6
    安装类型 数据文件要求(GB)
    企业版 1.7
    标准版 1.5

    如果您选择配置自动备份,则快速恢复区域需要文件系统或Oracle自动存储管理磁盘组上的额外磁盘空间。

2.3.1 挂载硬盘

这里只是举一个例子,具体的挂载目录需要自己定义(根据需要操作、非必要条件)。如所选择硬盘在服务器已完成挂在操作,则无需再次进行挂载。

数据库存储路径这里,要按照 服务器本身存储路径,一般情况下服务器的硬盘是已经被挂载上的。但是为了防止硬盘没有挂载,也为了查看各个目录存储空间的大小。可以使用下面这个命令进行查看。

# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   27G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk         
sr0              11:0    1  4.2G  0 rom  

注意:最后这个mountpoing的意思是挂载点 ,如果type类型是disk(硬盘)且没有挂载点。就证明这个硬盘还没有被挂载,需要你先去把硬盘给挂载上,在进行数据库存储路径的配置。

# mkdir /backup   # 新建一个文件夹作为挂载点

# cd /            # 移动至根目录下

# ls              # 这里已经有这个文件夹了
backup  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  yumiso

# mount /dev/sdb /backup    # 挂载硬盘,下面会报错。是因为没有对硬盘进行格式化。
mount: /dev/sdb is write-protected, mounting read-only  
mount: unknown filesystem type '(null)'       # Mount:未知的文件系统类型'(null)'

# mkfs.ext4 /dev/sdb      # 对硬盘进行格式化(格式为ext4)
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y                    # 这里选y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   


# mount /dev/sdb /backup   # 这里在执行一次挂载命令就可以了
# blkid /dev/sdb           # 查看挂载硬盘的UUID,复制以下。写到下面的配置文件中,实现永久挂载。
/dev/sdb: UUID="6384d556-f444-48ee-8f1d-5257f0c350aa" TYPE="ext4" 


用于挂载信息的指定填写格式中,各字段所表示的意义

设备文件	一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录	指定要挂载到的目录,需在挂载前创建好
格式类型	指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项	若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份	若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检	若为1则开机后自动进行磁盘自检,为0则不自检


如果想将文件系统为Ext4的硬件设备/dev/sdb2在开机后自动挂载到/backup目录上,并保持默认权限
且无须开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。

# vim /etc/fstab
在最后一行增加如下信息
UUID=b8c4a45f-ed74-3089-fcdb-0273de904d6d      /backup    ext4    defaults    0  0

写入到/etc/fstab文件中的设备信息并不会立即生效,需要使用mount -a参数进行自动挂载:

# mount -a

df命令用于查看已挂载的磁盘空间使用情况,英文全称为“disk free”,语法格式为“df -h”。

查看当前系统中设备的挂载情况,列出系统中正在使用的设备有哪些。

# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   27G  9.5G   18G  36% /
devtmpfs                 899M     0  899M   0% /dev
tmpfs                    911M     0  911M   0% /dev/shm
tmpfs                    911M  9.6M  902M   2% /run
tmpfs                    911M     0  911M   0% /sys/fs/cgroup
/dev/sda1               1014M  142M  873M  14% /boot
tmpfs                    183M     0  183M   0% /run/user/0
/dev/sdb                  20G   45M   19G   1% /backup    # 现在硬盘就已经挂在到了挂载点上了。

挂载错误之后可以使用umount命令,进行卸载,然后重新进行挂载。如果是写入到了配置文件中,也需要对配置文件进行修改。

# umount /dev/sdb

3 检查软件要求

  • 操作系统要求
  • 内核要求
  • 套餐要求
  • 其他软件要求

3.1 操作系统要求

Oracle Database 11g Release 2(11.2)需要以下操作系统版本(或更高版本):

  • 从Oracle Database 11g Release 2(11.2.0.4)开始,Linux x86-64上支持Oracle Linux 7和Red Hat Enterprise Linux 7。

要确定安装的Linux的发行版和版本,请输入以下命令:

[root@VM-8-11-centos ~]# cat /proc/version

3.2 内核要求

以下是Oracle Database 11g Release 2(11.2)的内核要求:

  • 在Red Hat Enterprise Linux 7上 3.10.0-54.0.1.el7.x86_64或更高版本

要确定是否安装了所需的内核,请输入以下命令:

[root@VM-8-11-centos ~]# uname -r
3.10.0-1160.71.1.el7.x86_64

3.3 包装要求

Oracle Linux 7和Red Hat Enterprise Linux 7必须安装以下软件包(或更高版本):

binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.el7.x86_64 
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64 
gcc-c++-4.8.2-3.el7.x86_64 
glibc-2.17-36.el7.i686 
glibc-2.17-36.el7.x86_64 
glibc-devel-2.17-36.el7.i686 
glibc-devel-2.17-36.el7.x86_64 
ksh
libaio-0.3.109-9.el7.i686 
libaio-0.3.109-9.el7.x86_64 
libaio-devel-0.3.109-9.el7.i686 
libaio-devel-0.3.109-9.el7.x86_64 
libgcc-4.8.2-3.el7.i686 
libgcc-4.8.2-3.el7.x86_64 
libstdc++-4.8.2-3.el7.i686 
libstdc++-4.8.2-3.el7.x86_64 
libstdc++-devel-4.8.2-3.el7.i686 
libstdc++-devel-4.8.2-3.el7.x86_64 
libXi-1.7.2-1.el7.i686 
libXi-1.7.2-1.el7.x86_64 
libXtst-1.2.2-1.el7.i686 
libXtst-1.2.2-1.el7.x86_64 
make-3.82-19.el7.x86_64 
sysstat-10.1.5-1.el7.x86_64 
3.3.1 上传资源包
  • linux.x64_11gR2_database_1of2.zip

  • linux.x64_11gR2_database_2of2.zip 这两个都是安装oracle所需的资源包

  • oracle11gRPM 该文件夹中包含以下Centos7安装Oracle11g所需的依赖包,以及readline插件依赖包。

    上传该文件夹,是为了保证服务器不能连接互联网环境使用,如可以连接互联网则不需要上传该文件夹,直接执行后面命令进行安装依赖包即可。

  • 这里我把Oracle安装包以及rpm依赖包上传到了/opt下

[root@VM-8-11-centos opt]# ll
total 2295612
-rw-r--r-- 1 root root 1239269270 Mar 14 10:00 linux.x64_11gR2_database_1of2.zip
-rw-r--r-- 1 root root 1111416131 Mar 14 09:59 linux.x64_11gR2_database_2of2.zip
drwxr-xr-x 2 root root      12288 Mar 15 09:46 oracle11gRPM
3.1.2 安装本地rpm依赖包
1. 将rpm资源文件进行安装,如果有版本冲突可以先不安装,因为涉及到文件较多,请勿轻易进行强制安装更新,否则会导致环境异常。
 2. 对于本机内安装文件版本,可以使用命令 rpm -qa | grep 依赖文件名称进行查看,本机会自带一些版本文件,不需要版本完全一致。
​
#rpm文件安装
[root@VM-8-11-centos oracle11gRPM]# rpm -ivh *.rpm
​
#忽略依赖关系强制安装
[root@VM-8-11-centos oracle11gRPM]# rpm -ivh --force --nodeps *.rpm
3.1.3 yum安装所需依赖包
[root@VM-8-11-centos ~]# yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
  • 检查是否全部安装成功
[root@VM-8-11-centos ~]# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel | grep "not installed"

3.4 其他软件要求

3.4.1 安装rlwrap

将来在使用 xshell连接 CentOS 服务器,进入 SQLPLUS 进行操作时,无法使用退格键、删除键、方向键(显示乱码)。安装软件 readline 和 rlwrap,重启系统可解决此问题。

readline可通过yum安装相关依赖包,rlwrap则需要下载上传再进行安装。

安装readline插件

[root@VM-8-11-centos ~]# yum install readline-*

  • 在网络环境下可以使用wget命令进行下载rlwrap:
[root@VM-8-11-centos opt]# wget http://download.openpkg.org/components/cache/rlwrap/rlwrap-0.42.tar.gz
  • 在无网络环境下载完成后上传至服务器:
上传并解压 :
[root@VM-8-11-centos opt]# tar -zxvf rlwrap-0.42.tar.gz 
​
进入安装目录执行安装:
[root@VM-8-11-centos opt]# cd rlwrap-0.42/
[root@VM-8-11-centos opt]# ./configure
如果报错缺失依赖包有两种解决方式:
1、缺失的包可以配置本地yum源使用yum安装
2、下载缺失的依赖,然后上传进行安装
​
[root@VM-8-11-centos rlwrap-0.42]# make & make install
​
注意:下列配置环境变量要切换至oracle用户下。用户暂时还没创建,可在下面创建用后完成后再继续此步骤。
[oracle@VM-8-11-centos root]$  echo "alias sqlplus='rlwrap sqlplus'" >> /home/oracle/.bashrc
[oracle@VM-8-11-centos root]$  echo "alias rman='rlwrap rman'" >> /home/oracle/.bashrc
[oracle@VM-8-11-centos root]$ source ~/.bashrc
3.4.2 安装JDK

oracle里面可以创建对象什么的 有些内容需要在java虚拟机下运行的 所以我们在安装oracle的时候,建议安装上java运行环境.

不安装可能后期安装程序会报错。

  • 上传jdk软件包至服务器
[root@VM-8-11-centos ~]# ll /opt
total 2485392
-rw-r--r-- 1 root   root   194042837 Mar 14 10:10 jdk-8u202-linux-x64.tar.gz
-rw-r--r-- 1 root   root  1239269270 Mar 14 10:00 linux.x64_11gR2_database_1of2.zip
-rw-r--r-- 1 root   root  1111416131 Mar 14 09:59 linux.x64_11gR2_database_2of2.zip
drwxr-xr-x 2 root   root       12288 Mar 15 09:46 oracle11gRPM
drwxr-xr-x 8 oracle users       4096 Mar 15 09:54 rlwrap-0.42
-rw-r--r-- 1 root   root      279608 Nov 14  2014 rlwrap-0.42.tar.gz
  • 解压jdk压缩包
[root@VM-8-11-centos opt]# tar -zxvf jdk-8u202-linux-x64.tar.gz
[root@VM-8-11-centos opt]# ll     
total 2485392
drwxr-xr-x 7     10   143       4096 Dec 16  2018 jdk1.8.0_202
-rw-r--r-- 1 root   root   194042837 Mar 14 10:10 jdk-8u202-linux-x64.tar.gz
-rw-r--r-- 1 root   root  1239269270 Mar 14 10:00 linux.x64_11gR2_database_1of2.zip
-rw-r--r-- 1 root   root  1111416131 Mar 14 09:59 linux.x64_11gR2_database_2of2.zip
drwxr-xr-x 2 root   root       12288 Mar 15 09:46 oracle11gRPM
drwxr-xr-x 8 oracle users       4096 Mar 15 09:54 rlwrap-0.42
-rw-r--r-- 1 root   root      279608 Nov 14  2014 rlwrap-0.42.tar.gz
[root@VM-8-11-centos jdk1.8.0_202]# cd jdk1.8.0_202/
[root@VM-8-11-centos jdk1.8.0_202]# pwd
/opt/jdk1.8.0_202
  • 使用vim/vi编辑profile文件,添加环境变量
[root@VM-8-11-centos ~]# vim /etc/profile
在末尾添加以下内容:
# setting jdk
export JAVA_HOME=/opt/jdk1.8.0_202    # 这里就是上面jdk的home路径
export JRE_HOME=$JAVA_HOME/jre 
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib
3.4.3 关闭selinux防火墙
[root@VM-8-11-centos ~]# vim /etc/selinux/config
# 修改SELINUX=disabled
​
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

4 安装Oracle数据库

  • 前期准备
  • 开始安装

4.1 前期准备

4.1.1 修改sysctl.conf内核参数
[root@VM-8-11-centos ~]# vim /etc/sysctl.conf    #修改文件
​
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
​
# 把下面这些参数复制进去
fs.aio-max-nr = 1048576                     # 同时可以拥有的的异步IO请求数目
fs.file-max = 6815744                       # 最大打开文件数
kernel.shmmni = 4096                        # 整个系统的内存segment的总个数,设置系统级最大共享内存段数量                              
kernel.sem = 250 32000 100 128               
kernel.shmall = 2097152                     # 所有内存大小(单位:页,1页 = 4Kb),计算公式16G*1024*1024*1024/4KB(页)
kernel.shmmax = 2147483648                  # 单个共享内存段的大小(单位:字节)限制,计算公式64G*1024*1024*1024(字节)
net.ipv4.ip_local_port_range = 9000 65500   # 设置本地端口范围限制也就是可使用的ipv4端口范围
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.core.rmem_default = 262144              # 接收套接字缓冲区大小的缺省值(以字节为单位)
net.core.rmem_max= 4194304                  # 接收套接字缓冲区大小的最大值(以字节为单位)
net.core.wmem_default= 262144               # 发送套接字缓冲区大小的缺省值(以字节为单位)
net.core.wmem_max= 1048576                  # 发送套接字缓冲区大小的最大值(以字节为单位)

修改完后,启用新的配置

[root@VM-8-11-centos ~]# sysctl -p

如果服务器只运行单个实例(数据库),大概的建议值参考:

内存为12G
kernel.shmall = 3145728
kernel.shmmax = 12884901887
​
内存为16G
kernel.shmall = 4194304
kernel.shmmax = 17179869183
​
内存为32G
kernel.shmall = 8388608
kernel.shmmax = 34359738367
​
内存为64G
kernel.shmall = 16777216
kernel.shmmax = 68719476735
4.1.2 修改/etc/pam.d/login文件
[root@VM-8-11-centos ~]# vi /etc/pam.d/login
注意:64位系统时,千万别写成/lib/security/pam_limits.so,否则导致无法登录
添加以下配置:
session  required   /lib64/security/pam_limits.so
session  required   pam_limits.so
4.1.3 修改/etc/profile文件
[root@VM-8-11-centos ~]# vi /etc/profile
添加以下配置:
# Oracle Setting
if [ $USER = "oracle" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
                ulimit -p 16384
                ulimit -n 65536
        else
                ulimit -u 16384 -n 65536
        fi
fi
# 其中oracle是用户,也就是说我们后面会创建一个oracle用户,尽量不要改动,不然后面许多地方都要改动。
​
[root@VM-8-11-centos ~]# source /etc/profile    # 刷新配置,使更改的配置生效
4.1.4 编辑文件 /etc/csh.login
[root@VM-8-11-centos ~]# vim /etc/csh.login
在文件末尾添加如下配置:
# Oracle Setting
if ( $USER == "oracle") then
        limit maxproc 16384
        limit descriptors 65536
endif
4.1.5 修改服务器主机名

注意:非必要操作。根据需要选择是否修改主机名称。

三种方式:

1、主机名称可以用hostnamectl  set-hostname   进行修改
​
2、可以修改/etc/hosts文件,来修改主机名称。
​
3、修改/etc/sysconfig/network文件
4.1.5.1 hostnamectl set-hostname 修改
# hostnamectl  set-hostname  VM-8-11-centos
4.1.5.2 修改/etc/hosts文件
# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 VM-8-11-centos
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
4.1.5.3 修改/etc/sysconfig/network
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=VM-8-11-centos

主机名修改完成后可通过hostname命令查看。

[root@VM-8-11-centos ~]# hostname
VM-8-11-centos
4.1.6 创建所需的操作系统组和用户相关说明
  • Oracle Inventory组(通常为oinstall
  • OSDBA组(通常为dba
  • Oracle软件所有者(通常是oracle
  • OSOPER组(可选。通常,oper

要确定这些组和用户是否存在,请按照以下步骤操作:

  1. 要确定oinstall组是否存在,请输入以下命令:

    [root@VM-8-11-centos ~]# more /etc/oraInst.loc
    

    如果此命令的输出显示oinstall组名称,则该组存在。

    如果oraInst.loc文件存在,则此命令的输出类似于以下内容:

    inventory_loc=/u01/app/oraInventory
    inst_group=oinstall
    

    inst_group参数显示Oracle Inventory组的名称,oinstall

  2. 要确定dba组是否存在,请输入以下命令:

    [root@VM-8-11-centos ~]# grep dba /etc/group
    

    如果此命令的输出显示dba组名称,则该组存在。

  3. 如有必要,请输入以下命令来创建oinstalldba组:

    [root@VM-8-11-centos ~]# /usr/sbin/groupadd oinstall
    [root@VM-8-11-centos ~]# /usr/sbin/groupadd dba
    
  4. 要确定oracle用户是否存在并属于正确的组,请输入以下命令:

    [root@VM-8-11-centos ~]# id oracle
    

    如果oracle用户存在,则此命令显示有关用户所属组的信息。输出应类似于以下内容,表示oinstall是主组,dba是次要组:

    uid=440(oracle) gid=200(oinstall) groups=201(dba),202(oper)
    
  5. 如有必要,请完成以下操作之一:

    • 如果oracle用户存在,但其主组不是oinstall或不是dba组的成员,则输入以下命令:

      [root@VM-8-11-centos ~]# /usr/sbin/usermod -g oinstall -G dba oracle
      
    • 如果oracle用户不存在,请输入以下命令来创建它:

      [root@VM-8-11-centos ~]# /usr/sbin/useradd -g oinstall -G dba oracle
      

      此命令创建oracle用户,并将oinstall指定为主组,将dba为次要组。

4.1.7 创建相应的用户和用户组及相关操作
注意:这里的组名也是可以修改的,但是同理,这里改了后面许多地方都需要改动,所以这里不建议修改。
[root@VM-8-11-centos ~]# groupadd oinstall     # 创建安装Oracle程序用户组
[root@VM-8-11-centos ~]# groupadd dba          # 创建dba用户组
[root@VM-8-11-centos ~]# useradd -g dba -m oracle   # 创建用户Oracle并加入dba用户组
[root@VM-8-11-centos ~]# usermod -a -G oinstall oracle   # 将用户Oracle加入oinstall用户组
> 注意: 后面的-G(一定要的时候会大写),否则后面安装oracle的时候会报[FATAL] [INS-35341] User is not a member of the following chosen OS groups: [oinstall]
[root@VM-8-11-centos ~]# passwd oracle               # 修改Oracle用户的密码
Changing password for user oracle.
New password:    # 设置Oracle用户的密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:   # 再次输入Oracle用户的密码
passwd: all authentication tokens updated successfully.
​
[root@VM-8-11-centos ~]# id oracle           # 查看oracle用户的信息 
uid=1001(oracle) gid=1002(dba) groups=1002(dba),1001(oinstall)
4.1.8 创建相应的目录并修改目录权限
目录位置尽量选择比较大的硬盘上,
​
[root@VM-8-11-centos ~]# mkdir -p /backup/ocdata/oracle   # 创建Oracle主目录
[root@VM-8-11-centos ~]# mkdir -p /backup/ocdata/inventory # 创建Oracle配置目录
[root@VM-8-11-centos ~]# mkdir -p /backup/ocdata/src       # 创建Oracle压缩包解压目录
​
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/oracle      # 修改目录权限
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/inventory  
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/src
​
[root@VM-8-11-centos ~]# ll /backup/ocdata       # 查看目录权限
total 12
drwxr-xr-x 2 oracle oinstall 4096 Mar 15 10:39 inventory
drwxr-xr-x 2 oracle oinstall 4096 Mar 15 10:39 oracle
drwxr-xr-x 2 oracle oinstall 4096 Mar 15 10:39 src
4.1.9 创建/etc/oraInst.loc文件

创建/etc/oraInst.loc文件,否则安装时会报错

SEVERE: [FATAL] [INS-32038] The operating system group specified for central inventory (oraInventory) ownership is invalid.
[root@VM-8-11-centos ~]# vi /etc/oraInst.loc
inventory_loc=/backup/ocdata/inventory     # 这个路径就是上面Oracle配置目录的路径
inst_group=oinstall
4.1.10 修改oracle用户的限制文件
[root@VM-8-11-centos ~]# vim /etc/security/limits.conf
​
添加内容如下:
# 进程的最大数目
oracle soft nproc 2047     # 单个用户可用进程数软限制
oracle hard nproc 16384    # 单个用户可用进程数硬限制
# 系统最大打开文件数
oracle soft nofile 1024    # 打开文件描述符软限制
oracle hard nofile 65536   # 打开文件描述符硬限制
# 最大栈大小
oracle soft stack 10240    # 最大栈大小软限制
4.1.11 修改用户环境变量
[root@VM-8-11-centos ~]# vim /home/oracle/.bashrc
​
添加内容如下:
export PATH
export ORACLE_HOSTNAME=VM-8-11-centos # 这里填写之前设置的hostname
export ORACLE_BASE=/backup/ocdata/oracle    # 是上面,创建Oracle主目录的文件夹路径
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1   # 数据库安装目录
export ORACLE_SID=orcl       # 数据库SID
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib    # 链接库环境变量
export LC_ALL="en_US"
export LANG="en_US"                           # 避免乱码
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"   # 设置客户端的字符集。
# export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export DISPLAY=localhost:0.0 # 解决 配置监听时【DISPLAY environment variable not set!】
4.1.12 激活/home/oracle/.bashrc
[root@VM-8-11-centos ~]# source /home/oracle/.bashrc
4.1.13 解压两个zip安装包并授权
[root@VM-8-11-centos ~]# unzip linux.x64_11gR2_database_1of2.zip -d /backup/ocdata/src/
​
[root@VM-8-11-centos ~]# unzip linux.x64_11gR2_database_2of2.zip -d /backup/ocdata/src/
​
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/src/     # 授权
​
[root@VM-8-11-centos opt]# ll /backup/ocdata/src/
total 4
drwxr-xr-x 8 oracle oinstall 4096 Aug 21  2009 database
4.1.14 重启机器
[root@VM-8-11-centos opt]# reboot

4.2 开始安装

静默安装Oracle11g涉及三个相关配置文件:

  • db_install.rsp:安装应答文件。
  • dbca.rsp:创建数据库应答文件。
  • netca.rsp:建立监听、本地服务名等网络设置应答文件。
4.2.1 进入Oracle用户
[root@VM-8-11-centos ~]# su oracle
[oracle@VM-8-11-centos root]$ 
​
[oracle@VM-8-11-centos response]$ pwd
/backup/ocdata/src/database/response
[oracle@VM-8-11-centos response]$ ll
total 76
-rw-rw-r-- 1 oracle oinstall 45007 Mar 15 14:02 dbca.rsp
-rw-rw-r-- 1 oracle oinstall 22739 Mar 15 13:37 db_install.rsp
-rwxrwxr-x 1 oracle oinstall  5739 Mar 15 13:44 netca.rsp

其中database是Oracle软件解压后生成的目录。可见在response目录下有三个模板,其中dbca.rsp是用来创建数据库的。db_install.rsp是用来安装Oracle软件的。netca.rsp是用来创建监听器的。

4.2.2 编辑静默安装应答文件
[root@VM-8-11-centos ~]# vim /backup/ocdata/src/database/response/db_install.rsp   # 根据安装的实际路径

按esc,进入vim命令模式,输入/+参数名(例如oracle.install.option),根据以下值修改(要细心,一个也不能错!!!)

注意:按esc,输入/+参数名搜索不到可能是空格问题!参数输入时也要注意空格!!!

oracle.install.option=INSTALL_DB_SWONLY                # 安装类型
ORACLE_HOSTNAME=VM-8-11-centos                           # 主机名称,用hostname查看主机名
UNIX_GROUP_NAME=oinstall                                   # 安装组
INVENTORY_LOCATION=/backup/ocdata/inventory                # INVENTORY目录
SELECTED_LANGUAGES=en,zh_CN                                # 选择语言
ORACLE_HOME=/backup/ocdata/oracle/product/11.2.0/db_1      # oracle_home
ORACLE_BASE=/backup/ocdata/oracle                          # oracle_base
oracle.install.db.InstallEdition=EE                        # oracle版本
oracle.install.db.DBA_GROUP=dba                            # dba用户组
oracle.install.db.OPER_GROUP=oinstall                      # oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE    # 数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl       # globalDBName
oracle.install.db.config.starterdb.SID=orcl                # SID
oracle.install.db.config.starterdb.characterSet=AL32UTF8   # 默认数据库编码
oracle.install.db.config.starterdb.memoryLimit=800         # 自动管理内存的最小内存(M)
oracle.install.db.config.starterdb.password.ALL=oracle     # 设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true                              # 设置安全更新
4.2.3 执行安装oracle脚本文件

脚本文件的路径以实际在服务器路径为准

[oracle@VM-8-11-centos root]$  /backup/ocdata/src/database/runInstaller -silent -responseFile /backup/ocdata/src/database/response/db_install.rsp -ignorePrereq
  • 可能遇到的问题:

    • 执行该命令时报 Exception in thread “main” java.lang.NoClassDefFoundError

      原因:系统中设置了DISPLAY环境变量

      解决方法:先执行一下unset DISPLAY,然后再执行上面的命令。

    • 如果是报错:[SEVERE] - Email Address Not Specified

      原因:缺少配置项

      DECLINE_SECURITY_UPDATES=true

4.2.3.1 在另一个窗口输入命令如下
# 需要在root用户下执行本脚本文件
[root@VM-8-11-centos ~]# /backup/ocdata/oracle/product/11.2.0/db_1/root.sh

执行完后,再回到之前窗口按下回车!!!!!!

出现下面的内容就表示安装成功了。
​
The following configuration scripts need to be executed as the "root" user. 
 #!/bin/sh 
 #Root scripts to run
​
/backup/ocdata/inventory/orainstRoot.sh
/backup/ocdata/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
         1. Open a terminal window 
         2. Log in as "root" 
         3. Run the scripts 
         4. Return to this window and hit "Enter" key to continue 
​
Successfully Setup Software.
# 执行成功
4.2.4 编辑监听配置文件
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/src/database/response/netca.rsp

按esc,输入/+参数名(例如INSTALL_TYPE),根据以下值修改(要细心,一个也不能错!!!)

INSTALL_TYPE=""custom""                               # 安装的类型
LISTENER_NUMBER=1                                     # 监听器数量
LISTENER_NAMES={"LISTENER"}                           # 监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"}                       # 监听器使用的通讯协议列表
LISTENER_START=""LISTENER""                           # 监听器启动的名称
4.2.5 执行监听配置文件脚本命令
# /backup/ocdata/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /backup/ocdata/src/database/response/netca.rsp
​
Parsing command line arguments:
    Parameter "silent" = true
    Parameter "responsefile" = /data/src/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Configuring Listener:LISTENER
Listener configuration complete.
Oracle Net Listener Startup:
    Running Listener Control: 
      /data/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener started successfully.
Profile configuration complete.
Oracle Net Services configuration successful. The exit code is 0
# 执行成功
​
成功运行后,会在/backup/ocdata/oracle/product/11.2.0/db_1network/admin/ 中生成listener.ora和sqlnet.ora两个文件。
查看监听端口:netstat -tnulp | grep 1521

配置网络用Oracle用户执行,否则会报错

# /data/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /data/src/database/response/netca.rsp
Oracle Net Configuration Assistant cannot be run as root.
不能以root用户运行Oracle网络配置助手。
4.2.6 编辑数据库实例文件
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/src/database/response/dbca.rsp

按esc,输入/+参数名(例如RESPONSEFILE_VERSION),根据以下值修改(要细心,一个也不能错!!!)

RESPONSEFILE_VERSION ="11.2.0"                              // 不要变哦
OPERATION_TYPE ="createDatabase"                            // 操作为创建实例  
GDBNAME ="orcl"                                             // 数据库实例名
SID ="orcl"                                                 // 实例名字
TEMPLATENAME = "General_Purpose.dbc"                        // 建库用的模板文件
SYSPASSWORD = "oracle"                                      // SYS管理员密码
SYSTEMPASSWORD = "oracle"                                   // SYSTEM管理员密码
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION =/backup/ocdata/oracle/oradata                   // 数据文件存放目录
RECOVERYAREADESTINATION=/backup/ocdata/oracle/flash_recovery_area    // 恢复数据存放目录
CHARACTERSET ="AL32UTF8"                                    // 字符集
NATIONALCHARACTERSET= "AL16UTF16"                           // 字符集
TOTALMEMORY ="1638"                                         // 1638MB,物理内存2G*80%  oracle内存,建议为物理内存70%~85%
4.2.7 执行安装数据库实例脚本
[oracle@VM-8-11-centos root]$ /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /backup/ocdata/src/database/response/dbca.rsp
Cleaning up failed steps
5% complete
Copying database files
7% complete
9% complete
16% complete
23% complete
30% complete
41% complete
Creating and starting Oracle instance
43% complete
48% complete
53% complete
57% complete
58% complete
59% complete
62% complete
64% complete
Completing Database Creation
68% complete
71% complete
75% complete
85% complete
96% complete
100% complete
Look at the log file "/backup/ocdata/oracle/cfgtoollogs/dbca/orcl/orcl0.log" for further details.
  • 可能遇到的问题

    • The file “/data/oracle/oradata/Seed_Database.dfb” containing the datafiles information is not found. Please specify a valid file.

      解决方法: 复制/data/oracle/product/11.2.0/db_1/assistants/dbca/templates/Seed_Database.dfb 到 /data/oracle/oradata

      Seed_Database.dfb 的所在路径根据实际情况更改

4.2.8 查看实例是否运行
[oracle@VM-8-11-centos root]$ ps -ef | grep ora_ | grep -v grep
oracle   19825     1  0 14:06 ?        00:00:00 ora_pmon_orcl
oracle   19827     1  0 14:06 ?        00:00:00 ora_vktm_orcl
oracle   19832     1  0 14:06 ?        00:00:00 ora_gen0_orcl
oracle   19834     1  0 14:06 ?        00:00:00 ora_diag_orcl
oracle   19836     1  0 14:06 ?        00:00:00 ora_dbrm_orcl
oracle   19838     1  0 14:06 ?        00:00:00 ora_psp0_orcl
oracle   19840     1  0 14:06 ?        00:00:00 ora_dia0_orcl
oracle   19842     1  0 14:06 ?        00:00:00 ora_mman_orcl
oracle   19844     1  0 14:06 ?        00:00:00 ora_dbw0_orcl
oracle   19846     1  0 14:06 ?        00:00:00 ora_lgwr_orcl
oracle   19848     1  0 14:06 ?        00:00:00 ora_ckpt_orcl
oracle   19850     1  0 14:06 ?        00:00:00 ora_smon_orcl
oracle   19852     1  0 14:06 ?        00:00:00 ora_reco_orcl
oracle   19854     1  0 14:06 ?        00:00:00 ora_mmon_orcl
oracle   19856     1  0 14:06 ?        00:00:00 ora_mmnl_orcl
oracle   19858     1  0 14:06 ?        00:00:00 ora_d000_orcl
oracle   19860     1  0 14:06 ?        00:00:00 ora_s000_orcl
oracle   19963     1  0 14:06 ?        00:00:00 ora_qmnc_orcl
oracle   19978     1  0 14:06 ?        00:00:00 ora_cjq0_orcl
oracle   20016     1  0 14:07 ?        00:00:00 ora_q000_orcl
oracle   20018     1  0 14:07 ?        00:00:00 ora_q001_orcl
4.2.9 修改启动和关闭实例的程序
4.2.9.1 修改启动实例配置文件
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart
将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=/backup/ocdata/oracle/product/11.2.0/db_1
4.2.9.2 修改关闭实例配置文件
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbshut
同上,将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=/backup/ocdata/oracle/product/11.2.0/db_1
4.2.10 修改/etc/oratab配置文件
[oracle@VM-8-11-centos root]$ vi /etc/oratab
orcl:/backup/ocdata/oracle/product/11.2.0/db_1:Y     # 把N改成Y
4.2.11 启动实例
[oracle@VM-8-11-centos root]$ /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart
4.2.12 开机启动Oracle

注意:以下命令都是在root用户下!!!

[root@VM-8-11-centos ~]# chmod +x /etc/rc.d/rc.local
[root@VM-8-11-centos ~]# vim /etc/rc.d/rc.local

在文件最后追加以下内容:

su oracle -lc "/backup/ocdata/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart"
4.2.13 进入oracle数据库

oracle用户窗口输入以下命令:

# sqlplus / as sysdba
  • 最后使用Navicat或者DataGrip连接的时候用户名为system

可能存在的问题

根据分析服务器内存、cpu、io都正常;plsql和工程访问数据库非常缓慢,而sqlplus则很快;

主要有两中情况:

1、listenner.log 日志过大

解决办法:删除该文件重新创建一个文件名为listener.log的日志文件即可。

2、服务器的DNS解析

查看文件/etc/resolv.conf 可看到有两个代理ip地址,将这两个nameserver给注释掉就可以了。不需要重新启动oracle数据库,即时生效。

你可能感兴趣的:(Oracle,oracle,数据库,运维,服务器,linux)