CentOS7.3安装单节点Oracle 12c数据库详细配置操作

前言:因为测试需求需要搭建oracle将底层存储对接为ceph集群提供iscsi磁盘。所以被迫需求所致又得从头开始数据库的搭建安装配置以及各种增删查改操作。这里主要讲述在CentOS7.3的系统上如何搭建Oracle 12c数据库。

官方安装文档请点击这里

先决条件准备

这里主要说下官档中提及到的有关CentOS安装Oracle部分所需要硬件和软件的条件审查。同时给出了我的配置步骤。

硬件条件检查

  1. 确认服务器的架构为x86。
  2. 确认Linux启动级别,确保开机的启动级别为runlevel3或者runlevel5.
  3. 确保显卡能提供的的分辨率至少在1024x768以上。这里需要注意的是如果使用的VNC服务的话,那么需要修改VNC的相应的配置文件来满足分辨率的需求。
  4. 至少需要6.9GB的剩余硬盘空间来安装Oracle数据库。
  5. 至少剩余1GB的内存空间来安装Oracle数据库,如果要安装Oracle Linux的话,需要准备至少4GB的内存空间。
  6. 至少要给/tmp保留有1GB的硬盘空间。
  7. 需要配置专用的存储网卡来提供给Oracle数据库使用。

软件条件检查

关于Oracle 12c所需包,从官方文档看,不同版本的操作系统似乎有所不同,Oracle Linux 5 and Red Hat Enterprise Linux 5需要安装下面一些包:
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-58
glibc-2.5-58 (32 bit)
glibc-devel-2.5-58
glibc-devel-2.5-58 (32 bit)
ksh
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
libXext-1.0.1
libXext-1.0.1 (32 bit)
libXtst-1.0.1
libXtst-1.0.1 (32 bit)
libX11-1.0.3
libX11-1.0.3 (32 bit)
libXau-1.0.1
libXau-1.0.1 (32 bit)
libXi-1.0.1
libXi-1.0.1 (32 bit)
make-3.81

sysstat-7.0.2

本次试验配置

  1. 准备一台4核8G内存50G硬盘配置的虚拟机,配置网卡可访问互联网,安装CentOS7.3时需要注意选择图形化安装的方式。这里需要注意12C不支持32位的linux操作系统,当然CentOS7之后也不再release32位的版本了,所以如果是选择了该版本的CentOS操作系统可以无视了。
  2. 安装完CentOS7.3系统之后配置yum源,这里推荐还是讲原先自带的yum源替换为阿里,163等国内yum源,方便下载。
  3. 配置完yum源之后需要提前将一些用于安装Oracle的库文件包和编译包下载下来。这里想问为什么要装这些包的建议你去看下上方官档链接的第三部分。
yum -y install binutils compat-libcap1 gcc gcc-c++ glibc glibc.i686 glibc-devel glibc.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++l7.i686 libstdc++-devel libstdc++-devel.i686 compat-libstdc++-33 compat-libstdc++-33.i686 libXi libXi.i686 libXtst libXtst.i686 make sysstat
  1. 下载Oracle12c 软件安装包
    这里给出官方的下载地址请点击这里
    Oracle的安装包一般是分为两个部分,一个是Oracle数据库软件,另外一个是Oracle发行的Linux操作系统。这里我们主要是下载Oracle的软件。一般是配套食用风味更佳,Oracle Linux主要是针对Oracle集群做了优化添加了ASM管理器和ASM文件系统。在这里我们不需要安装RAC集群的话就没有特意使用Oracle Linux系统了。下载下来的软件包会长的像是这个样子。(linuxamd64_12102_database_1of2.zip,linuxamd64_12102_database_2of2.zip)

系统配置

在首次执行安装Oracle安装包之前我们还需要在系统上设置一些参数,追加用户和对安装路径的文件夹属组修改。
这里为了节约时间精力我默认将Selinux关闭,并且禁用了firewalld服务。

#setenforce 0
#vim /etc/selinux/conf
    SELINUX=disabled
#systemctl stop firewalld
#systemctl disable firewalld

那么首先我们先来解决系统参数配置调优问题。

系统主要参数详解

kernel相关参数设置

这里是解释参数配置,如果没有兴趣可以直接跳到实战阶段。
- kernel.sem有关的参数

kernel.sem是指 semmsl,semmns,semopm,semmni这4个参数。SEMMSL、SEMMNS、SEMOPM、SEMMNI这四个核心参数,具体含义和配置如下。

SEMMSL :用于控制每个信号集的最大信号数量。
Oracle 建议将 SEMMSL 设置为 init.ora 文件(用于 Linux 系统中的所有数据库)中的最大 PROCESS 实例参数的设置值再加上 10 。此外, Oracle 建议将 SEMMSL 的值设置为不少于 100 。

SEMMNS:用于控制整个 Linux 系统中信号(而不是信号集)的最大数。
Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加 10 。
使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:SEMMNS 或 (SEMMSL * SEMMNI)

SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。一个信号集能够拥有每个信号集中最大数量的SEMMSL 信号,因此建议设置 SEMOPM 等于SEMMSL 。
Oracle 建议将 SEMOPM 的值设置为不少于 100 。
SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量。Oracle 建议将 SEMMNI 的值设置为不少于 100 。

  • kernel.shmall

kernel.shmall 参数是控制共享内存页数 。Linux共享内存页大小为4KB, 共享内存段的大小都是共享内存页大小的整数倍。

  • kernel.shmmax

shmmax是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax设置应足够大,能在一个共享内存段下容纳下整个的SGA,设置的过低可能会导致需要创建多个共享内存段,可能导致系统性能的下降 。

Oralce建议一个大的共享内存段能容纳整个SGA,这样在任何时候都不会有性能下降的隐患。

Oracle安装文档建议,32位Linux设置shmmax 为32位最大限制值(settingshmmax to the 32-bit number limit),即4G,所以1-4G 的物理内存,可以直接设置shmmax 为最大物理内存即可,SGA 肯定在一个共享内存段中,32位Linux 物理内存大于4G 的设置为4G 即可

  • kernel.shmmni

shmmni 内核参数是共享内存段的最大数量(注意该参数不是shmmin,是shmmni,shmmin 表示内存段最小大小 ) 。

网络相关的内核参数设置

  • net.core.rmem_default

net.core.rmem_default 指网络套接字的默认接收缓冲区的大小,oracle建议设置为265K即262144

  • net.core.rmem_max

net.core.rmem_max 指网络套接字的最大接收缓冲区的大小,oracle10g及以前版本建议设置为256k即262144 oracle11g建议设置为4M 即4194304

  • net.core.wmem_default

net.core.wmem_default指网络套接字的默认发送缓冲区的大小,oracle建议设置为265K即262144

  • net.core.wmem_max

net.core.wmem_max 指网络套接字的最大发送缓冲区的大小,oracle10g及以前版本建议设置为256k即262144 oracle11g建议设置为1M即1048576

  • net.ipv4.ip_local_port_range

net.ipv4.ip_local_port_range ,指本地的允许打开随机端口范围
oracle10g前建议端口范围为1024 65000,oracle11g建议端口范围为:
9000 65500 并忽略oracle安装程序任何关于这个参数的警告

Asynchronous I/O相关的内核参数设置

  • fs.aio-max-nr

fs.aio-max-nr 指系统允许的最大的异步IO请求大小
oracle默认设置为1M即1048576,一般不用更改

配置系统参数

这里要在sysctl文件中改的东西比较多,所以为了方便和安全起见,建议使用参数来接受变量,然后在做sysctl配置修改之前首先将该文件备份保存一份。

[root@localhost ~]# MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}')
[root@localhost ~]# SHMMAX=$(expr $MEMTOTAL / 2)
[root@localhost ~]# SHMMNI=4096
[root@localhost ~]# PAGESIZE=$(getconf PAGE_SIZE)
[root@localhost ~]# cat >> /etc/sysctl.conf << EOF
  fs.aio-max-nr = 1048576
  fs.file-max = 6815744
  kernel.shmmax = $SHMMAX
  kernel.shmall = `expr $SHMMAX / $PAGESIZE \* $SHMMNI / 16`
  kernel.shmmni = $SHMMNI
  kernel.sem = 250 32000 100 128
  net.ipv4.ip_local_port_range = 9000 65500
  net.core.rmem_default = 262144
  net.core.rmem_max = 4194304
  net.core.wmem_default = 262144
  net.core.wmem_max = 1048576
  EOF

配置Oracle用户,用户组已经安装文件路径

配置Oracle用户,用户组

这里需要配置相关oracle用户,其实这里配置的话最简化的配置是只需要添加一个oracle的用户和用户组即可,但是为了完整性,我这里把相关的用户组都配置上。

[root@localhost ~] i=1000; for group in oinstall dba backupdba oper dgdba kmdba; do
groupadd -g $i $group; i=`expr $i + 1`
done
[root@localhost ~] useradd -u 1200 -g oinstall -G dba,oper,backupdba,dgdba,kmdba -d /home/oracle oracle
[root@localhost ~] passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

配置安装文件路径

[root@localhost ~] mkdir -p /u01/app/oracle
[root@localhost ~] chown -R oracle:oinstall /u01/app
[root@localhost ~] chmod -R 775 /u01

配置审核策略

[root@localhost ~] vi /etc/pam.d/login
# near line 14: 添加如下新的配置项
session required pam_selinux.so open
session required pam_namespace.so


session required pam_limits.so


session optional pam_keyinit.so force revoke
session include system-auth
session optional pam_ck_connector.so

配置用户限制

[root@localhost ~] vi /etc/security/limits.conf
# add to the end

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

图形化安装Oracle

设置环境变量

这里需要将用户切换到oracle用户来执行操作。

[oracle@localhost ~] vi ~/.bash_profile
# add to the end
umask 022
export ORACLE_BASE=/u01/app/oracle
# create a temporary directory for installation

解压安装镜像文件

我这里将Oracle数据库安装文件直接拷贝在了oracle的用户家目录下解压执行的。当然也可以放在tmp下,我看很多安装指导文档都在tmp下,这个有没有必要没有深究。

[oracle@localhost ~] unzip V38500-01_1of2.zip
[oracle@localhost ~] unzip V38500-01_1of2.zip

安装Oracle

解压出来之后会有一个database的目录,该目录下有一个runinstall的脚本,运行该脚本,待安装审查通过之后就可以正常看到图形化的安装界面了。

[oracle@localhost ~] ./database/runInstaller

第一步是设置的你邮箱账号,用于订阅和技术支持,这个填不填都可以略过。
这里写图片描述

第二步有三个选项,“create and configure a database”适用于安装一个新的数据库并且配置数据库管理软件。“install database software only”是仅仅安装数据库管理软件。“upgrade anexisting database”则是更新已有的数据库。在这里我们选择第一个选项“create and configure a database”。
这里写图片描述

第三步选择安装什么样的版本,这里我们选择安装服务器版。
这里写图片描述

第四步选择安装数据库的类型,这里我们只是安装一个单数据库,并不安装集群,所以选择第一个。
这里写图片描述

这里为了能详细配置一下我选择了高级选项设置。
这里写图片描述

选择数据库的语言,没有中文当然是选择英语啦ORZ
这里写图片描述

这里选择数据库安装的版本,如果上面你选择类型的时候选择的是单实例的安装那么这里保持默认即可。
这里写图片描述

这里选择数据库存放的位置和数据库软件存放的位置,这里选择的路径是我们在上一步中创建的文件路径。一定要注意这里的文件路径要让oracle用户属组有读写执行权限。
这里写图片描述
这里写图片描述

创建数据库,这里由于我的目的很简单只要有数据库就行所以就保持了默认。
这里写图片描述

确认你数据库的标识符,因为我这没有连接外网所以这个填写只需要符合他的命名规范就行了。
这里写图片描述

保持默认的内存选项
这里写图片描述

在字符集这里一定需要注意一下,要讲字符集修改为UTF-8,否则以后使用数据库出现乱码会头疼。
这里写图片描述

这里保持默认下一步
这里写图片描述

设置存储设备,因为我的测试目标是为了测试iscsi的性能所以我这里选用了文件存储系统
这里写图片描述

保持默认继续
这里写图片描述

这里写图片描述

设置密码这一块我为了简单方便,将所有系统预账户的用户名和密码统一的进行了设置
这里写图片描述

每一个数据库的属组,这里如果你在之前创建用户和属组的时候全部创建了的话那这里会显示每个组。如果你只创建了DBA那这里五个组都会是DBA。
这里写图片描述

所有配置项概览总结,这里建议保存一份以防止以后忘了再改某些配置项就非常麻烦。
这里写图片描述

等待安装https://img-blog.csdn.net/20170911181206506?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWlueGlob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast” alt=”这里写图片描述” title=”” />/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

在安装的过程当中会弹出一个对话框提示你用root用户来执行以下两个脚本,这个时候需要先把这两个脚本执行完然后再回来继续安装。
这里写图片描述

等待安装过程结束完成

这里写图片描述

如果预检测项里面出现fail,请点击“Fix & Check Again”,会弹出提示让你运行脚本来解决。
这里写图片描述

但是安装完成之后你会发现没有sqlplus命令,这意味着使用命令行没有办法链接到数据库。我们需要修改一下oracle用户的环境变量。

vi ~/.bash_profile
# add to the end

export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl

[oracle@localhost database]$ source ~/.bash_profile
 vi /etc/oratab
# change like follows
[oracle@localhost database]$ vim /etc/oratab
# change like follows
orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y

创建服务开机自动开启

#创建启动服务
[oracle@localhost ~] vim /etc/sysconfig/orcl.oracledb
# create new : define environment variables

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
ORACLE_SID=orcl
# 配置监听服务

[oracle@localhost ~] vim /usr/lib/systemd/system/orcl@listner.service
[Unit]
Description=oracle net listener
After=network.target listner.service

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/orcl.oracledb
ExecStart=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart /u01/app/oracle/product/12.1.0/dbhome_1
ExecStop=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbshut /u01/app/oracle/product/12.1.0/dbhome_1
User=oracle

[Install]
WantedBy=multi-user.target
#配置数据库服务
[oracle@localhost ~] vi /usr/lib/systemd/system/orcl@oracledb.service

[Unit]
Description=oracle net listener
After=network.target lsnrctl.service

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/orcl.oracledb
ExecStart=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart /u01/app/oracle/product/12.1.0/dbhome_1
ExecStop=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbshut /u01/app/oracle/product/12.1.0/dbhome_1
User=oracle

[Install]
WantedBy=multi-user.target

[oracle@localhost ~] systemctl daemon-reload
[oracle@localhost ~] systemctl enable orcl@listner orcl@oracledb

安装中错误排错

在解压完Oracle软件包之后运行runIinstaller安装脚本时,脚本会检查临时文件夹空间,交换空间和显示器情况,只有在三者都通过之后图形化安装界面才能出来。博主就遇到了检查不同的情况,错误如下:

$ ./runInstaller 
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 42451 MB Passed
Checking swap space: must be greater than 150 MB. Actual 4031 MB Passed
Checking monitor: must be configured to display at least 256 colors
>>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<
Some requirement checks failed. You must fulfill these requirements before
continuing with the installation,
Continue? (y/n) [n] n

如果是直接连接的方式出现了该问题可按照以下方法来解决。

1.首先登陆到root用户执行
#xdpyinfo记录下name of display:后面的字符串,如127.0.0.1:1.0

如果没有的话则使用命令# xhost +SI:localuser:oracle 添加一个

2.#xhost +
返回信息为: access control disabled,clients can connect from any host

或者xhost +SI:localuser:oracle

3.切换到Oracle用户: 
#su - oracle

4.在Oracle用户下执行命令:
export DISPLAY=:1.0

5.在Oracle下执行xdpyinfo命令,如果能正常显示,说明设置成功

当然网上的方法也是有局限性,因为博主正好不能用这种情况来解决。博主是用的服务器当中的一台虚机,所以自然而然的使用的是VNC远程桌面协议来链接到的虚机。在虚拟里面安装的是tigervnc来实现的可视化。
如果这里是用了VNC的话则需要考虑VNC是使用什么账号来开的session。在我最开始的配置文件中我是用的是root账户

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid

所以导致了su - oracle时 无法执行可视化安装程序。这里需要在给oracle用户再单独开一个vnc的session来解决这个问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值