在 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 的大小
检测操作系统 RAM 和 Swap 的命令如下:
grep MemTotal /proc/meminfo grep SwapTotal /proc/meminfo free
Oracle 11g 包含 自动内存管理 特性,该特性需要更多的共享内存 /dev/shm
和文
件描述符,可以通过以下命令查看可用的共享内存大小,需要注意的是可用的共享内存
值需要比 MEMORY_MAX_TARGET
和 MEMORY_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
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 stop
和lsnrctl start
4.4 数据库 GUI 管理工具
dbca
数据库配置助手netca
监听器配置助手netmgr
网络配置管理工具
5 参考链接
- DBAORA Tomasz Lesinski 的个人博客
- Quick Installation Guide for Linux x86-64
- Linux 内核参数优化(for oracle)