centos 6 oracle 11G DB install
因业务迁移,需重新部署oracle DB,此文仅作部署记录,部署文档主要参考官方文档http://docs.oracle.com/cd/E11882_01/install.112/e47689/toc.htm
概要:
主机:OpenStack 云主机
系统:Completing a Minimal Linux centos 6.8 x86_64
DB:Oracle Database 11g Release 2(11.2)
内存:2Gb
硬盘:/dev/vda 20Gb
/dev/vdb 30Gb
swap:0
一 系统要求:
Oracle DB是使用图形界面进行安装的,这也就要求,系统必须支持图形界面。
注:此处做下说明,图形界面安装并不是必须的。ORACLE 同样支持命令行安装,只是貌似不能自定义安装
对于Minimal安装的Linux 默认是没有图形界面的,使用如下命令安装X Window System
#yum groupinstall -y "Desktop" "X Window System"
其次要能远程连接到系统,这就需要openssh-server。如下命令确认,没有就安装
#rpm -qa | grep ssh#yum install openssh-server
确认系统防火墙允许ssh端口通过
使用如下命令,可远程调用图形界面
#ssh -X name@example.com
二 硬件要求:
系统必须满足以下最低硬件要求
1. 内存:
最低: 1 GB of RAM
推荐: 2 GB of RAM or more
通过如下命令确认内存大小
#grep MemTotal /proc/meminfo
注:下表说明了RAM和swap space 之间的关系
RAM | Swap Space |
---|---|
1 GB < RAM < 2 GB | 1.5 倍RAM大小 |
2 GB < RAM < 16 GB | 等于 RAM 实际大小 |
RAM >16 GB | 16 GB |
通过如下命令确认Swap空间
#grep SwapTotal /proc/meminfo
查看可用内存和Swap
#free
自动内存管理:
Oracle 11G开始,自动内存管理特性需要更多的共享内存(/dev/shm)和文件描述符。共享内存的大小要大于每个实例的memory_max_target和memory_target的参数。如果参数设置为非零或一个不正确的大小,将导致oracle启动时报错ora-00845。
如下命令确认共享可用容量:
#df -h /dev/shm/
如遇ora-00845错误,增加/dev/shm挂载点大小。
例如:
#mount -t tmpfs shmfs -o size=7g /dev/shm
在/etc/fstab添加条目:
shmfs /dev/shm tmpfs size=7g 0
2. 系统架构:
确认系统可以运行oracle
uname -m
3. 磁盘空间:
/tmp:1Gb空闲空间
查看可用空间
df -h /tmp
注:如空闲空间不满足要求,可配置oracle用户的TMP 和TMPDIR 环境变量。
The following tables describe the disk space requirements for software files and data files for each installation type on Linux x86-64:
Installation Type | Requirement for Software Files (GB) |
---|---|
Enterprise Edition | 4.7 |
Standard Edition | 4.6 |
Installation Type | Disk Space for Data Files (GB) |
---|---|
Enterprise Edition | 1.7 |
Standard Edition | 1.5 |
如下命令确认可用磁盘空间
#df -h
显示:
oracle 11G R2 需要不低于1024*768的分辨率
确认系统版本:
#cat /proc/version或#lsb_release
确认内核:
#uame -r
2.6.32-573.el6.x86_64
依赖包:
Oracle Linux 6, Red Hat Enterprise Linux 6, and Asianux Server 4 | The following packages (or later versions) must be installed: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.i686gcc-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.i686kshlibgcc-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.i686libstdc++-devel-4.4.4-13.el6 (x86_64)libstdc++-devel-4.4.4-13.el6.i686libaio-0.3.107-10.el6 (x86_64)libaio-0.3.107-10.el6.i686libaio-devel-0.3.107-10.el6 (x86_64)libaio-devel-0.3.107-10.el6.i686make-3.81-19.el6sysstat-9.0.4-11.el6 (x86_64) |
如下命令确认是否安装依赖包:
#rpm -q package_name
三 准备:
创建swap分区:
因私有云主机系统默认未分配swap,需手工建立swap
1.创建2G大小的swap分区
#dd if=/dev/zero of=/mnt/swap bs=1M count=2048
2.设置swap分区文件
#mkswap /mnt/swap
3.启用swap分区
#swapon /mnt/swap
4.设置开机挂载swap分区
#echo "/mnt/swap swap swap defaults 0 0" >> /etc/fstab
安装依赖包:
sudo yum install binutils \compat-libcap1 \compat-libstdc++-33 \compat-libstdc++-33.i686 \gcc \gcc-c++ \glibc \glibc-devel \glibc-devel.i686 \ksh \libgcc \ libstdc++ \libstdc++.i686 \libstdc++-devel \libstdc++-devel.i686 \libaio \libaio.i686 \libaio-devel \libaio-devel.i686 \make \sysstat \unixODBC.i686 \unixODBC-devel
调整内核参数:
以下kernel 值是满足oracle运行的最小值,如在生产系统,建议调整这些值优化系统。关于内核参数信息,请查看操作系统文件
1.编辑/etc/sysctl.conf 文件,修改以下参数值
fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 4294967295kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576
2.更新kernel 当前值
#/sbin/sysctl -p
3.确认kernel 值更新
#/sbin/sysctl -a
4.更新kernel 参数值后,重启系统或运行命令,让/etc/sysctl.conf 的修改立即生效
集群共享磁盘验证 cvuqdisk包,这里使用本地目录做为数据目录,对cvuqdisk不做说明
主机名解析:
1.查看主机名
#cat /etc/sysconfig/network
NETWORKING=yesHOSTNAME=dev-oracle.novalocalNOZEROCONF=yes
2.编辑/etc/hosts 文件,增加如下一行
127.0.0.1 dev-oracle.novalocal
3.确认主机名解析成功
#ping -c 3 dev-oracle.novalocal
PING dev-oracle.novalocal (127.0.0.1) 56(84) bytes of data.64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.109 ms64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.109 ms64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.054 ms
关闭transparent_hugepage
linux 6 transparent_hugepage是默认启用的。内存动态分配的问题,可能导致内存分配延迟。因此oracle建议禁用transparent_hugepage,避免性能问题。
Red Hat Linux kernels:
#cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
Other kernels
#cat /sys/kernel/mm/transparent_hugepage/enabled
如下的输出,代表启用
[always] madvise never
禁用transparent_hugepage
在kernel 引导文件/etc/grub.conf 添加一下条目
transparent_hugepage=never
如:
title CentOS (2.6.32-642.4.2.el6.x86_64) root (hd0,0) kernel /boot/vmlinuz-2.6.32-642.4.2.el6.x86_64 ro \ root=UUID=4b816de7-ec12-431c-a571-5f3d828bf0e1 rd_NO_LUKS rd_NO_LVM \ LANG=en_US.UTF-8 rd_NO_MD console=ttyS0,115200 SYSFONT=latarcyrheb-sun16 \ crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet \ transparent_hugepage=never initrd /boot/initramfs-2.6.32-642.4.2.el6.x86_64.img
重启系统生效
创建系统用户和组:
角色权限分离:
Oracle建议创建一个拥有软件安装权限的所有者。
创建单独的用户和独立的操作提同权限的组
dba
第一次在系统上安装Oracle 数据库,必须创建此组。此组辨别操作系统用户有管理数据库的权限(sysdba privilege)
oper
这是一个可选组。如果想创建一个有限的数据库管理权限,创建此组。
创建角色分离的组和用户:
创建oinstall组
#groupadd oinstall
创建dba组
#groupadd -g 502 dba
创建per组
groupadd -g 503 oper
创建软件所有者用户
1. 创建一个Oracle用户
#useradd -u 502 -g oinstall -G dba,oper oracle
2. 设置用户密码
#passwd oracle
检查安装用户的资源限制:
参考以下推荐范围值
Resource Shell Limit | Resource | Soft Limit | Hard Limit |
---|---|---|---|
Open file descriptors | nofile | at least 1024 | at least 65536 |
Number of processes available to a single user | nproc | at least 2047 | at least 16384 |
Size of the stack segment of the process | stack | at least 10240 KB | at least 10240 KB, and at most 32768 KB |
1.使用安装用户登录
2.检查文件描述符、软硬限制。确保结果在推荐范围内
$ ulimit -Sn1024$ ulimit -Hn65536
3.检查用户进程数限制。确保结果在推荐范围内
$ ulimit -Su2047$ ulimit -Hu16384
4.检查堆栈设置。确保在推荐范围内
$ ulimit -Ss10240$ ulimit -Hs32768
编辑 /etc/security/limits.conf 在文件尾增加如下参数,可调限制
* soft nofile 65535* hard nofile 65535oracle soft nproc 2047oracle hard nproc 16384oracle soft stack 10240
创建目录
使用root用户登录
创建Oracle 根目录
这里是用户目录,根据用户名设定的,如果你的用户名为ora,那就将oracle替换成ora
#mkdir -p /data/app/oracle#chown -R oracle:oinstall /data/app/oracle#chmod -R 775 /data/app/oracle
创建数据库文件目录(用于自动存储)
#mkdir /data/oradata#chown oracle:oinstall /data/oradata#chmod 775 /data/oradata
创建恢复文件目录(快速恢复,用于自动存储)
#mkdir /data/fast_recovery_area#chown oracle:oinstall /data/fast_recovery_area#chmod 775 /data/fast_recovery_area
设置语言
$export LANG=en_US.UTF-8
使用英文语言安装,以防出现乱码问题
或下载中文字库zysong.ttf 放到/usr/share/fonts/zh_CN/TrueType 目录下,即可使用中文语言安装
$export LANG=zh_CN.UTF-8
设置用户环境
此环境变量可在数据库安装完成并建立数据库实例后设置
ORACLE_BASE:为数据库用户根目录
ORACLE_HOME:为实际数据库软件安装目录
ORACLE_SID:为实际数据库实例名称
$vim ~/.bash_profile
PATH=$PATH:$HOME/binexport PATHumask 022export ORACLE_BASE=/data/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1export PATH=$PATH:$ORACLE_HOME/binexport ORACLE_SID=orcl
四 安装oracle:
通过使用ssh -X 开启远程窗口调用支持以oracle用户连接服务器
执行数据库安装脚本
$./runInstaller
Starting Oracle Universal Installer...Checking Temp space: must be greater than 120 MB. Actual 10608 MB PassedChecking swap space: must be greater than 150 MB. Actual 2047 MB PassedChecking monitor: must be configured to display at least 256 colors. Actual 16777216 PassedPreparing to launch Oracle Universal Installer from /tmp/OraInstall2016-09-12_08-22-04PM. Please wait ...
客户端会弹出图形安装界面,按照图形界面提示,一步步安装。
注意,安装方式有两种选择
一种是安装并配置数据库,另一种是仅安装数据库。本案例选择默认安装并配置数据库
两种安装方式没有太大区别,图形界面均有说明
选择仅安装数据库,安装后可执行 `dbca` 命令调用图形界面创建数据库,`netca`命令调用图形界面创建监听,具体可参见此链接后半部分http://dengqsintyt.iteye.com/blog/1991930/
取消勾选,下一步 没有购买oracle支持,就全部为空
yes 继续
默认 创建并配置数据库
选择服务器类
单实例模式
高级安装模式
默认语言
默认选择企业版
Oracle Base: 选择oracle 根目录
Software Location:选择软件安装目录
默认为 通用/事物处理
数据库名及服务名。配置用户环境时的ORACLE_SID 要与此相同
开启自动内存管理
设置编码为UTF8
启用Oracle 企业管理控制台OEM
选择数据库文件目录,选择之前建立的数据库文件目录/data/oradata
自动备份设置,生产环境建议开启,选择之前建立的快速恢复目录/data/fast_recovery_area
设置数据库用户和密码,可为每个用户设置独立的密码,也可选择下面的Use the same password for all accounts 使用统一的密码
选择授权组,一般默认即可,如果之前创建了oper组,则OSOPER 应该选择oper组
检查安装要求,确认相关包已安装,可选择"Ignore All"直接忽略,否则不能继续。这里显示缺少包是因为版本的问题
安装结束后,会弹出如下窗口,点击红色圈可重新设置用户密码
最后会弹出如下窗口,使用root 用户执行两个脚本
# /bin/sh /data/app/oraInventory/orainstRoot.sh
Changing permissions of /data/app/oraInventory.Adding read,write permissions for group.Removing read,write,execute permissions for world.Changing groupname of /data/app/oraInventory to oinstall.The execution of the script is complete.
# /bin/sh /data/app/oracle/product/11.2.0/dbhome_2/root.sh
Running Oracle 11g root.sh script...The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /data/app/oracle/product/11.2.0/dbhome_2Enter the full pathname of the local bin directory: [/usr/local/bin]: Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ...Creating /etc/oratab file...Entries will be added to the /etc/oratab file as needed byDatabase Configuration Assistant when a database is createdFinished running generic part of root.sh script.Now product-specific root actions will be performed.Finished product-specific root actions.
安装到此全部结束
如何将oracle加入系统服务,可参考之前一篇文档http://morrowind.blog.51cto.com/1181631/1696145