一、简介
1.1 ASMLib
在Red Hat Enterprise Linux (RHEL)6以前,Oracle均是使用ASMLib这个内核支持库配置ASM。ASMLIB是一种基于Linux module,专门为Oracle Automatic Storage Management特性设计的内核支持库(kernel support library)。但是,在2011年5月,甲骨文发表了一份Oracle数据库ASMLib的声明,声明中称甲骨文将不再提供Red Hat Enterprise Linux (RHEL)6的ASMLib和相关更新。
甲骨文在这份声明中表示,ASMLib更新将通过Unbreakable Linux Network (ULN)来发布,并仅对Oracle Linux客户开放。ULN虽然为甲骨文和红帽的客户服务,但如果客户想要使用ASMlib,就必须使用Oracle的kernel来替换掉红帽的。
因此,目前在Red Hat Enterprise Linux (RHEL)6以上使用Oracle+ASM,已不再使用ASMLib,而是采用udev设备文件来配置ASM。
什么是 udev?
udev 是Linux2.6 内核里的一个功能,它替代了原来的devfs,成为当前Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的uevent 来管理/dev目录下的设备文件。不像之前的设备管理工具,udev 在用户空间(user space) 运行,而不在内核空间(kernel space) 运行。
ASMLIB是一种基于Linux module,专门为Oracle Automatic Storage Management特性设计的内核支持库(kernel support library)。
理论上可以从ASMLIB API中得到的以下益处:
总是使用direct,async IO
解决了永久性设备名的问题,即便在重启后设备名已经改变的情况下
解决了文件权限、拥有者的问题
减少了I/O期间从用户模式到内核模式的上下文切换,从而可能降低cpu使用率
减少了文件句柄的使用量
ASMLIB API提供了传递如I/O优先级等元信息到存储设备的可能
ASMLIB可能带来的缺点:
对于多路径设备(multipathing)需要在/etc/sysconfig/oracleasm-_dev_oracleasm配置文件中设置ORACLEASM_SCANORDER及ORACLEASM_SCANEXCLUDE,以便ASMLIB能找到正确的设备文件,具体可以参考Metalink Note
因为ASM INSTANCE使用ASMLIB提供的asm disk,所以增加了额外的层面
每次Linux Kernel更新,都需要替换新的ASMLIB包
增加了因人为错误造成宕机downtime的可能
使用ASMLIB意味着要花费更多时间去创建和维护
因为ASMLIB的存在,可能引入更多的bug,这是我们最不想看到的
使用ASMLIB创建的disk,其disk header并不会和普通的asm disk header有什么不同,仅仅是在头部多出了ASMLIB的属性空间。
二、安装过程
2.1环境工具准备
在 CentOS7.3上安装 Oracle 11gR2 + ASM 使用udev
实验环境:
OS: CentOS7.3
Database: Oracle Database 11gR2 x64 (11.2.0.3.0)
VMware: VMware Workstation
软件:
xmanager-passive
XSHELL
2.2检查硬件
在正式安装开始前,请先检查你的软硬件条件是否满足安装需要。
硬件上可以使用命令查看内存情况和 CPU 特性:
其中内存的要求是不低于 1G,这里我分配2G内存
[root@test soft]# cat /proc/meminfo
df -kh /dev/shm //检查共享内存
df -kh /tmp //检查临时磁盘空间
more /proc/version //检查操作系统版本
uname -r //检查内核版本
grep MemTotal /proc/meminfo //内存
grep SwapTotal /proc/meminfo //交换空间
2.2安装软件包检查
没有安装过的包会提示is not installed :
[root@test soft]# rpm -q binutils \
compat-libstdc++-33 \
elfutils-libelf \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
ksh \
libaio \
libaio-devel \
libgomp \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel \
numactl-devel
检查结果如下,有些包没有安装,使用yum安装没有安装的包
检查下列包是否安装,若未安装则要先安装:
建议用 rpm –q packagename 逐个检查,因为是官方要求,所以为了不在安装时出现不必要的麻烦,还是确认都全部安装为好。
rpm -qa | grep binutils-
rpm -qa | grep compat-libstdc++-
rpm -qa | grep elfutils-libelf-
rpm -qa | grep elfutils-libelf-devel-
rpm -qa | grep glibc-
rpm -qa | grep glibc-common-
rpm -qa | grep glibc-devel-
rpm -qa | grep gcc-
rpm -qa | grep gcc-c++-
rpm -qa | grep libaio-
rpm -qa | grep libaio-devel-
rpm -qa | grep libgcc-
rpm -qa | grep libstdc++-
rpm -qa | grep libstdc++-devel-
rpm -qa | grep make-
rpm -qa | grep sysstat-
rpm -qa | grep unixODBC-
rpm -qa | grep unixODBC-devel-
[root@test soft]# rpm -qa | grep binutils-
binutils-2.25.1-22.base.el7.x86_64
[root@test soft]# rpm -qa | grep binutils-
binutils-2.25.1-22.base.el7.x86_64
[root@test soft]# rpm -qa | grep compat-libstdc++-
compat-libstdc++-33-3.2.3-72.el7.x86_64
[root@test soft]# rpm -qa | grep elfutils-libelf-
elfutils-libelf-0.166-2.el7.x86_64
[root@test soft]# rpm -qa | grep elfutils-libelf-devel-
[root@test soft]# rpm -qa | grep glibc-
glibc-devel-2.17-307.el7.1.x86_64
glibc-common-2.17-307.el7.1.x86_64
glibc-2.17-307.el7.1.x86_64
glibc-headers-2.17-307.el7.1.x86_64
[root@test soft]# rpm -qa | grep glibc-common-
glibc-common-2.17-307.el7.1.x86_64
[root@test soft]# rpm -qa | grep glibc-devel-
glibc-devel-2.17-307.el7.1.x86_64
[root@test soft]# rpm -qa | grep gcc-
libgcc-4.8.5-39.el7.x86_64
gcc-4.8.5-39.el7.x86_64
gcc-c++-4.8.5-39.el7.x86_64
[root@test soft]# rpm -qa | grep gcc-c++-
gcc-c++-4.8.5-39.el7.x86_64
[root@test soft]# rpm -qa | grep libaio-
libaio-0.3.109-13.el7.x86_64
libaio-devel-0.3.109-13.el7.x86_64
[root@test soft]# rpm -qa | grep libaio-devel-
libaio-devel-0.3.109-13.el7.x86_64
[root@test soft]# rpm -qa | grep libgcc-
libgcc-4.8.5-39.el7.x86_64
[root@test soft]# rpm -qa | grep libstdc++-
libstdc++-4.8.5-39.el7.x86_64
compat-libstdc++-33-3.2.3-72.el7.x86_64
libstdc++-devel-4.8.5-39.el7.x86_64
[root@test soft]# rpm -qa | grep libstdc++-devel-
libstdc++-devel-4.8.5-39.el7.x86_64
[root@test soft]# rpm -qa | grep make-
make-3.82-23.el7.x86_64
[root@test soft]# rpm -qa | grep sysstat-
sysstat-10.1.5-11.el7.x86_64
[root@test soft]# rpm -qa | grep unixODBC-
unixODBC-devel-2.3.1-14.el7.x86_64
unixODBC-2.3.1-14.el7.x86_64
[root@test soft]# rpm -qa | grep unixODBC-devel-
unixODBC-devel-2.3.1-14.el7.x86_64
2.3修改主机名,永久生效:
[root@test soft]# hostnamectl set-hostname te