UP | HOME

在 Oracle Linux 上安装 Oracle 11g 数据库

Table of Contents

1 安装文件

1.1 操作系统的选择

本教程是基于 Oracle Linux Release6 Update9 操作系统来安装的,准备文件为

$ cksum OracleLinux-R6-U9-Server-x86_64-dvd.iso
3134304474 4048551936 OracleLinux-R6-U9-Server-x86_64-dvd.iso

1.2 数据库安装文件

Oracle 数据库选择 11g R2 下面两个是数据的安装文件

  • p13390677_112040_Linux-x86-64_1of7.zip
  • p13390677_112040_Linux-x86-64_2of7.zip

将两个文件解压到统一个文件夹中,得到一个 database 的文件夹

unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
[oracle@orange219 Downloads]$ cksum p13390677_112040_Linux-x86-64_1of7.zip
153454328 1395582860 p13390677_112040_Linux-x86-64_1of7.zip
[oracle@orange219 Downloads]$ cksum p13390677_112040_Linux-x86-64_2of7.zip
2027415580 1151304589 p13390677_112040_Linux-x86-64_2of7.zip
[oracle@orange219 Downloads]$

2 前置准备和检验工作

在安装操作系统时就需要提前注意以下的配置

2.1 检验操作系统的内存

官方文档中说操作系统的 RAM 至少 1G,但是建议分配 2G 以上。另外,还需要 swap 分 区的分配,在安装操作系统时就要提前预留好对应的 swap 分区大小,根据官网文档建议如下:

RAM swap
1G 到 2G 之间 RAM 大小的 1.5 倍
2G 到 16G 之间 和 RAM 同等大小
16G 以上 16G

但是注意,这里有一个坑,如果系统内存为 32G 的话,最好把 swap 分区设计得和内存 的大小差不多,也就是 swap 也修改成 32G,否则后面装 Oracle 数据库是分配数据库 内存是不允许超过 swap 的大小

oinstall-target-database-memory-config.png

检测操作系统 RAM 和 Swap 的命令如下:

grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
free

Oracle 11g 包含 自动内存管理 特性,该特性需要更多的共享内存 /dev/shm 和文 件描述符,可以通过以下命令查看可用的共享内存大小,需要注意的是可用的共享内存 值需要比 MEMORY_MAX_TARGETMEMORY_TARGET 都要大

df -h /dev/shm/
SQL> show parameter target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
db_flashback_retention_target        integer     1440
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
memory_max_target                    big integer 0
memory_target                        big integer 0
parallel_servers_target              integer     512
pga_aggregate_target                 big integer 3217M
sga_target                           big integer 9664M

2.2 检验操作系统的存储大小

为了配合 Oracle 安装包释放安装程序,操作系统的 /tmp 文件夹需要有超过 1G 的可 用存储空间

df -h /tmp

另外 Oracle 11g 数据库安装后大约要占用低于 5G 的硬盘存储

2.3 系统的内核版本要求

在 Oracle Linux 6.9 中需要内核版本大于 2.6.32-71.el6.x86_64 ,默认的内核就 满足要求

[oracle@orange139 database]$ uname -r
4.1.12-61.1.28.el6uek.x86_64

2.4 必要的软件包

Oracle 11g 有一些必要的安装文件包,在 Oracle Linux 6 中所需要的包

安装 database 所需要的包

binutils-2.20.51.0.2-5.11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6.i686
ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6.i686
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)

安装 client 需要的包

unixODBC-2.2.14-11.el6 (x86_64) or later
unixODBC-2.2.14-11.el6.i686 or later
unixODBC-devel-2.2.14-11.el6 (x86_64) or later
unixODBC-devel-2.2.14-11.el6.i686 or later

查看一个软件包是否安装可以使用下面命令

rpm -q package_name

2.4.1 配置本地的 yum 源

将系统安装的 iso 包加载的 cdrom 中

mkdir -p /mnt/cdrom && mount /dev/cdrom /mnt/cdrom

添加本地的 repo 配置文件

vim /etc/yum.repos.d/local-yum.repo
[local_server]
name=Oracle Linux 6 Local DVD
baseurl=file:///mnt/cdrom/Server
gpgcheck=0
enabled=1

检测是否配置成功

# 下载缓存
yum makecache
# 列出可安装包
yum list

2.4.2 安装相关依赖包

直接使用 yum 管理器安装

yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc \
    glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make \
    sysstat unixODBC unixODBC-devel oracleasm-support

安装 rlwrap 工具 (可选项)

./configure --prefix=/usr/local
make
make install

3 操作系统相关配置

配置 IP 、主机名、用户、用户组、防火墙等一系列参数

3.1 配置系统的 IP

修改操作系统的 /etc/sysconfig/network-scripts/ifcfg-eth1 文件

TYPE=Ethernet
BOOTPROTO=none
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth1
ONBOOT=yes
IPADDR=192.168.0.131
PREFIX=24
GATEWAY=192.168.0.1
DEFROUTE=yes

3.2 配置计算机名

编辑 /etc/hosts 文件,添加如下主机名到 IP 的映射

192.168.0.131 orange131 orange131.localdomain

配置 /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=orange131

测试是否修改成功

hostname

3.3 配置 swap 分区大小

为了操作系统能探测到 sawp 的大小,显示指定 size 值,编辑 /etc/fstab 文件

shmfs /dev/shm tmpfs size=16g 0 0

3.4 创建基本的用户和用户组

新建如下用户组

  • The Oracle Inventory group (typically, oinstall )
  • The OSDBA group (typically, dba )
  • The OSOPER group (optional. Typically, oper )

新建 oracle 用户

  • The Oracle software owner (typically, oracle )

新建 oinstall, dba 和 oper 用户组

groupadd oinstall
groupadd dba
groupadd oper

新建 oracle 用户

useradd -g oinstall -G dba,oper oracle
# 如果 oracle 用户已经存在,则直接加入对应用户组即可
# usermod -g oinstall -G dba,oper oracle

配置 oracle 用户的密码

echo system | passwd --stdin oracle

检验建立好的 oracle 用户

id oracle
[root@orange ~]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

3.5 配置内核参数

添加或修改配置文件 /etc/sysctl.conf , 如下内核参数。内核参数一般是要大于如 下要求的最小值,对于实际的系统可以需要参考系统默认参数,并计算调优一些参数, 修改默认设置

# 共享内存 cat /proc/sys/kernel/shmall
# shmmni 缺省 4096 即可,shmmax 最小 536870912, 最大为物理内存减小 1 字节
# 32G 内存大约需要: 32*1024*1024*1024-1 = 34359738367
kernel.shmmax = 536870912
kernel.shmmni = 4096
# Linux 的共享内存页大小为 4K,
# 对于 32G 内存的系统大约需要最大的页数为: 32*1024*1024/4 = 8388608
kernel.shmall = 2097152

# 进程之间通信消息大小的最大值
kernel.msgmax = 65536
# 信号量参数: semmsl semmns semopm semmni
kernel.sem = 250 32000 100 128

# 文件句柄数量限制
fs.aio-max-nr = 1048576
fs.file-max = 6815744

# 应用程序可用的 ipv4 端口范围
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

可以使用如下命令查看一些内核参数

# 配置的参数,确保配置文件格式正确
sysctl -p
# 打印当前所有的参数大小
sysctl -a

内核参数文件修改后重启生效

3.6 修改用户的限制

一些用户的限制需配置成下表中所描述的格式

Resource Shell Limit Resource Soft Limit Hard Limit
打开文件描述符数量 nofile 最小 1024 最小 65536
用户可用的进程数量 nproc 最小 2047 最小 16384
进程的栈空间的大小 stack 最小 10240 KB 最小 10240 KB,最多 32768 KB
echo "nofile: soft=$(ulimit -Sn) hard=$(ulimit -Hn)"
echo "nproc:  soft=$(ulimit -Su) hard=$(ulimit -Hu)"
echo "stack:  soft=$(ulimit -Ss) hard=$(ulimit -Hs)"

编辑 /etc/security/limits.conf 文件,添加如下配置行

oracle   soft   nproc    131072
oracle   hard   nproc    131072
oracle   soft   nofile   131072
oracle   hard   nofile   131072
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   soft   core     unlimited
oracle   hard   core     unlimited
oracle   soft   memlock  50000000
oracle   hard   memlock  50000000

3.7 添加如下的环境变量

为了后面操作简单,需要添加一些常用的环境变量和命令别名

# 基础变量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=ora11g

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

# export NLS_LANG="AMERICAN.AL32UTF8"
export NLS_LANG=".AL32UTF8"

# 常用别名
alias cdob='cd $ORACLE_BASE'
alias cdoh='cd $ORACLE_HOME'
alias cdtns='cd $TNS_ADMIN'
alias cdod='cd $ORACLE_BASE/oradata'
alias envo='env | grep ORACLE'

# rlwrap must be install
alias sp='rlwrap sqlplus'
alias rman='rlwrap rman'

3.8 创建安装目录

使用如下命令

mkdir -p /u01/app
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app

3.9 禁用 SELINUXX 和系统防火墙

编辑 /etc/selinux/config 文件

SELINUX=disabled

3.10 关闭系统的防火墙

在图形界面中关闭防火墙 system-config-firewall-tui

oracle-linux-fireware.png

4 安装和配置 Oracle 11g 数据库软件

4.1 启动安装程序

启动安装程序,直接运行 runInstaller 二进制程序即可

# export DISPLAY=192.168.0.106:0.0
./runInstaller

4.2 配置 Oracle 11g 数据库随操作系统启动而自启动

修改数据库 /etc/oratab 配置文件,将最后一行的 N 改成 Y

ora11g:/u01/app/oracle/product/11.2.0/dbhome_1:Y

添加启动任务, 编辑 /etc/rc.local 文件,在最后添加启动 Oracle 监听和 Oracle 数据库的命令

# start oracle database
su - oracle -c 'lsnrctl start'
su - oracle -c 'dbstart /u01/app/oracle/product/11.2.0/dbhome_1'
# su - oracle -c 'emctl start dbconsole'

4.3 Oracle 11g 连通性测试命令行工具

  • tnsping 工具探测工具
  • lsnrctl 可以开启关闭 Oracle 的监听

在启动、关闭或者重启 oracle 监听器之前确保使用 lsnrctl status 命令检查 oracle 监听器的状态:

  • lsnrctl status 检查当前监听器的状态
  • lsnrctl start [listener-name] 启动所有的监听器,可以指定名字来启动特定的监 听器
  • lsnrctl stop [listener-name] 关闭所有的监听器,可以指定名字来关闭特定的监 听器
  • lsnrctl reload 重启监听器,此命令可以代替 lsnrctl stoplsnrctl start

4.4 数据库 GUI 管理工具

  • dbca 数据库配置助手
  • netca 监听器配置助手
  • netmgr 网络配置管理工具

5 参考链接

Last Updated 2020-03-28 Sat 20:07. Created by Jinghui Hu at 2020-01-08 Wed 11:33.