从Oracle 11g开始,ASM(Automatic Storage Management)作为Grid Infrastructure的一部分,要想在Oracle数据库使用ASM,需要安装GridInfrastructure。而且从RHEL 6起,Oracle不再提供ASMlib的核心驱动,如果想使用ASM必须使用Oracle的Unbreakable Enterprise
从Oracle 11g开始,ASM(Automatic Storage Management)作为Grid Infrastructure的一部分,要想在Oracle数据库使用ASM,需要安装GridInfrastructure。而且从RHEL 6起,Oracle不再提供ASMlib的核心驱动,如果想使用ASM必须使用Oracle的Unbreakable Enterprise Kernel(UEK)代替RedHat的kernel,由于习惯问题个人还是喜欢使用RHEL,所以本文将描述如何在RHEL 6.3上使用UEK安装Oracle 11g并使用ASM存储数据库文件,并且使用FreeNAS作为数据库存储系统。RHEL 6.3和FreeNAS都在VmwareWorkstation 8.0.4中安装。FreeNAS是一套基于FreeBSD操作系统核心的开放源代码的网络存储设备(Network-AttachedStorage,简称NAS)服务器系统,支持众多服务,用户访问权限管理,提供网页设置接口。更多说明可以查看维基百科http://zh.wikipedia.org/zh-cn/FreeNAS和官网http://www.freenas.org。
RHEL6 |
FreeNAS |
|
操作系统 |
RHEL 6 update 3 X86_64 |
FreeNAS-8.3.0-RELEASE-p1 X86_64 |
主机名 |
orae |
|
IP地址/子网掩码 |
192.168.1.7/24 |
192.168.1.8/24 |
一、安装和配置FreeNAS
1.1新建虚拟机
如何新建这里不具体描述,要注意的是新建时Guest Operating System选择other->FreeBSD 64-bit,新建完后如下图所示FreeNAS有5块磁盘,每块磁盘有如下作用:
Hard Disk (5GB)--安装FreeNAS系统
Hard Disk 2 (1GB)--存储CRS(ClusterReady Services)文件
Hard Disk 3 (20GB)--存储数据库文件
Hard Disk 4 (20GB)--存储数据库文件
Hard Disk 5 (15GB)--数据库快速恢复区
1.2安装FreeNAS
FreeNAS安装很简单,记住要把FreeNAS安装到5GB的磁盘上。
1.3配置FreeNAS
如果网络中有dhcp服务器,安装完后会自动获取ip地址,我在这里手工指定ip地址为192.168.1.8/24。
之后我们可以在浏览器中输入192.168.1.8进入FreeNAS的配置页面。点击左边的树形菜单Services->iSCSI->Target GlobalConfiguration进入iSCSI的设置页面,如图图 iSCSI-1。
图 iSCSI-1
1.3.1配置Portal地址
IP Address选择刚设置的地址192.168.1.8,其他默认,如图图 iSCSI-2。
图 iSCSI-2
1.3.2配置Inilator
点击'Add initiator'按钮,在弹出的对话框中直接点'ok'保存,如图iSCSI-3。
图 iSCSI-3
1.3.3配置AuthorizedAccess
点击'Add iSCSI Authorized Access'按钮,在弹出的对话框中填入如图 iSCSI-4所示内容,此处GroupId、User和Sercret的值可以任意填写,此处分别设置为1、grid和gridasm,
图 iSCSI-4
1.3.4配置'TargetGlobal Configuration'
如图 iSCSI-5所示,'Discovery Auth Method'选择'CHAP',Discovery Auth Group选择'1'也就是1.3.3中建立的GroupId,其他值默认即可。
图 iSCSI-5
1.3.5配置Targets
点击'Add Target'按钮,在弹出的对话框中填写如图iSCSI-6内容。
Target Name--任意填写
Target Flags--选择read-write
Portal Group ID--选择1
Initiator Group ID--选择1.3.3中增加的Group Id值1
Auth Method--选择CHAP
其他默认
图 iSCSI-6
1.3.6配置DeviceExtents
点击'Add Device Extent'按钮,在弹出的对话框中设Extent Name并选择Disk Device,如图iSCSI-7所示。添加完四块磁盘后页面显示的内容类似图iSCSI-8。
图 iSCSI-7
图 iSCSI-8
1.3.7配置AssociatedTargets
点击'Add Extent to Target'按钮,在弹出的对话框中Target选择1.3.5中增加的'TargetName',Extents选择1.3.6中添加的Device Extents,如果iSCSI-9。添加完后所有的Extents后得到类似图iSCSI-10的结果。
图 iSCSI-9
图 iSCSI-10
1.3.8启动iSCSI服务
点击页面'Services',在页面中开启iSCSI,如图iSCSI-11。至此FreeNAS已安装并配置完毕。
图 iSCSI-11
二、安装UEK核心
UEk可以从http://public-yum.oracle.com/下载安装:
[root@ora ~]# wget http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/x86_64/kernel-uek-2.6.39-300.17.3.el6uek.x86_64.rpm
[root@ora ~]# wget http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/x86_64/kernel-uek-firmware-2.6.39-300.17.3.el6uek.noarch.rpm
[root@ora ~]# wget http://public-yum.oracle.com/repo/OracleLinux/OL6/3/base/x86_64/oracleasm-support-2.1.5-1.el6.x86_64.rpm
[root@ora ~]# wget http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.4-1.el6.x86_64.rpm
[root@ora Downloads]# rpm -ivhkernel-uek-firmware-2.6.39-300.17.3.el6uek.noarch.rpm
[root@ora Downloads]# rpm -ivhkernel-uek-2.6.39-300.17.3.el6uek.x86_64.rpm
[root@ora Downloads]# rpm -ivhoracleasm-support-2.1.5-1.el6.x86_64.rpm
[root@ora Downloads]# rpm -ivhoracleasmlib-2.0.4-1.el6.x86_64.rpm
因为安装完后要重启所以顺便设置SELINUX为disabled,否则ASM不能加载FreeNAS上的磁盘。
[root@ora ~]# vi /etc/sysconfig/selinux
SELINUX=disabled
安装完后重启在grub的menu菜单选择新安装的2.6.39-300.17.3.el6uek.x86_64核心启动。启动完成后检查linux核心和SELINUX是否disabled。
[root@ora ~]# uname -a
Linuxora 2.6.39-300.17.3.el6uek.x86_64 #1 SMP Wed Dec 19 06:28:03 PST 2012 x86_64x86_64 x86_64 GNU/Linux
[root@ora ~]# /usr/sbin/getenforce
Disabled
三、配置RHEL的iSCSI
3.1查看系统是否安装iscsi软件包
[root@ora ~]# rpm -qa | grep iscsi
iscsi-initiator-utils-6.2.0.872-41.el6.x86_64
该软件包在RHEL的安装光盘Packages目录下。
3.2编辑/etc/iscsi/iscsi.con文件
[root@ora ~]#vi /etc/iscsi/iscsi.con
保证文件中有如下内容,grid和gridasm是在1.3.3中设置的User和Sercret
node.session.auth.username= grid
node.session.auth.password= gridasm
discovery.sendtargets.auth.username= grid
discovery.sendtargets.auth.password= gridasm
3.3查找iSCSI设备
[root@ora ~]# iscsiadm -m discovery -t sendtargets -p192.168.1.8
192.168.1.8:3260,1iqn.2011-03.example.org.istgt:asm
[root@ora ~]# /etc/init.d/iscsi restart
Stoppingiscsi: [ OK ]
Startingiscsi: [ OK ]
运行fdsk命令可以发现有4个新磁盘设备出现,/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde分别对应FreeNAS中设置的四个Disk Extents。
[root@ora ~]# fdisk -l
………………
Disk/dev/sdb: 1073 MB, 1073741312 bytes
34heads, 61 sectors/track, 1011 cylinders
Units= cylinders of 2074 * 512 = 1061888 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0x00000000
Disk/dev/sdc: 21.5 GB, 21474835968 bytes
64heads, 32 sectors/track, 20479 cylinders
Units= cylinders of 2048 * 512 = 1048576 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0x00000000
Disk/dev/sdd: 21.5 GB, 21474835968 bytes
64heads, 32 sectors/track, 20479 cylinders
Units= cylinders of 2048 * 512 = 1048576 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0x00000000
Disk/dev/sde: 32.2 GB, 32212254208 bytes
64heads, 32 sectors/track, 30719 cylinders
Units= cylinders of 2048 * 512 = 1048576 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0x00000000
对新找到的四块磁盘分区,每块磁盘分一个主分区。
[root@ora ~]# fdisk /dev/sdb
Devicecontains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Buildinga new DOS disklabel with disk identifier 0x6dcc40a0.
Changeswill remain in memory only, until you decide to write them.
Afterthat, of course, the previous content won't be recoverable.
Warning:invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING:DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') andchange display units to
sectors (command 'u').
Command(m for help): n
Commandaction
e extended
p primary partition (1-4)
p
Partitionnumber (1-4): 1
Firstcylinder (1-1011, default 1):
Usingdefault value 1
Lastcylinder, +cylinders or +size{K,M,G} (1-1011, default 1011):
Usingdefault value 1011
Command(m for help): w
Thepartition table has been altered!
Callingioctl() to re-read partition table.
Syncingdisks.
[root@ora ~]# fdisk /dev/sdc
……略……
[root@ora ~]# fdisk /dev/sdd
……略……
[root@ora ~]# fdisk /dev/sde
……略……
分区完后再次查看磁盘信息
[root@ora~]# fdisk -l
…………
Disk/dev/sdb: 1073 MB, 1073741312 bytes
34heads, 61 sectors/track, 1011 cylinders
Units= cylinders of 2074 * 512 = 1061888 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0x6dcc40a0
Device Boot Start End Blocks Id System
/dev/sdb1 1 1011 1048376+ 83 Linux
Partition1 does not start on physical sector boundary.
Disk/dev/sdc: 21.5 GB, 21474835968 bytes
64heads, 32 sectors/track, 20479 cylinders
Units= cylinders of 2048 * 512 = 1048576 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0x4de8bcdb
Device Boot Start End Blocks Id System
/dev/sdc1 1 20479 20970480 83 Linux
Disk/dev/sde: 32.2 GB, 32212254208 bytes
64heads, 32 sectors/track, 30719 cylinders
Units= cylinders of 2048 * 512 = 1048576 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0xfe021ea9
Device Boot Start End Blocks Id System
/dev/sde1 1 30719 31456240 83 Linux
Disk/dev/sdd: 21.5 GB, 21474835968 bytes
64heads, 32 sectors/track, 20479 cylinders
Units= cylinders of 2048 * 512 = 1048576 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 4096 bytes / 1048576 bytes
Diskidentifier: 0x0c852d1b
Device Boot Start End Blocks Id System
/dev/sdd1 1 20479 20970480 83 Linux
四、配置Grid Infrastructure和Oracle 11g 数据库安装环境
4.1创建所需要的组和用户
grid用户用来安装GridInfrastructure,oracle用户用来安装Oracle数据库。
[root@ora ~]# groupadd -g 501 oinstall
[root@ora ~]# groupadd -g 502 dba
[root@ora ~]# groupadd -g 503 oper
[root@ora ~]# groupadd -g 601 asmadmin
[root@ora ~]# groupadd -g 602 asmdba
[root@ora ~]# groupadd -g 603 asmoper
[root@ora ~]# useradd -u 500 -g oinstall -G dba,asmdba,operoracle
[root@ora ~]# passwd oracle
Changingpassword for user oracle.
Newpassword:
Retypenew password:
passwd:all authentication tokens updated successfully.
[root@ora ~]# id oracle
uid=500(oracle)gid=501(oinstall) groups=501(oinstall),502(dba),503(oper),602(asmdba)
[root@ora ~]# useradd -u 600 -g oinstall -Gdba,asmadmin,asmdba,asmoper grid
[root@ora ~]# passwd grid
Changingpassword for user grid.
Newpassword:
Retypenew password:
passwd:all authentication tokens updated successfully.
[root@ora ~]# id grid
uid=600(grid)gid=501(oinstall)groups=501(oinstall),502(dba),601(asmadmin),602(asmdba),603(asmoper)
4.2创建安装目录
[root@ora ~]# mkdir -p /u01/app/grid
[root@ora ~]# mkdir -p /u01/app/11.2.0/grid
[root@ora ~]# chown -R grid:oinstall /u01
[root@ora ~]# mkdir -p /u01/app/oracle
[root@ora ~]# chown oracle:oinstall /u01/app/oracle
[root@ora ~]# chmod -R 775 /u01
4.3配置软件环境
设置grid用户的的.bash_profiel文件。
[grid@ora ~]$ cat >> .bash_profile < >ORACLE_SID=+ASM >ORACLE_BASE=/u01/app/grid >ORACLE_HOME=/u01/app/11.2.0/grid >PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin >export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH >EOF [grid@ora ~]$source .bash_profiel 设置oracle用户的的.bash_profiel文件。 [oracle@ora ~]$ cat >> .bash_profile < > ORACLE_SID=orcl > ORACLE_BASE=/u01/app/oracle > ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 > PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin > export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH > EOF [oracle@ora ~]$ source .bash_profiel 设置核心参数。 [root@ora Packages]# cat >> /etc/sysctl.conf < >fs.aio-max-nr = 1048576 >fs.file-max = 6815744 >kernel.shmall = 2097152 >kernel.shmmax = 4294967295 >kernel.shmmni = 4096 >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软件的资源限制。 [root@ora ~]# cat >> /etc/security/limits.conf < >grid soft nproc 2047 >grid hard nproc 16384 >grid soft nofile 1024 >grid hard nofile 65536 >oracle soft nproc 2047 >oracle hard nproc 16384 >oracle soft nofile 1024 >oracle hard nofile 65536 >EOF [root@ora ~]# cat >> /etc/profile < >if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then >if [ \$SHELL = "/bin/ksh" ]; then >ulimit -p 16384 >ulimit -n 65536 >else >ulimit -u 16384 -n 65536 >fi >umask 022 >fi >EOF 修改hosts文件,使里面有如下内容。 [root@ora ~]# vi /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.7 ora 五、创建ASM Disk Volumes 5.1配置并装载ASM核心模块 [root@ora ~]# oracleasm configure -i Configuringthe Oracle ASM library driver. Thiswill configure the on-boot properties of the Oracle ASM library driver. The following questions will determinewhether the driver is loadedon boot and what permissions it will have. The current values willbe shown in brackets ('[]'). Hitting answerwill keep that current value. Ctrl-Cwill abort. Defaultuser to own the driver interface []: grid Defaultgroup to own the driver interface []: asmadmin StartOracle ASM library driver on boot (y/n) [n]: y Scanfor Oracle ASM disks on boot (y/n) [y]: y WritingOracle ASM library driver configuration: done [root@ora ~]# oracleasm init Creating/dev/oracleasm mount point: /dev/oracleasm Loadingmodule "oracleasm": oracleasm MountingASMlib driver filesystem: /dev/oracleasm 5.2创建ASM磁盘 [root@ora ~]# oracleasm createdisk CRSVOL1 /dev/sdb1 Writingdisk header: done Instantiatingdisk: done [root@ora ~]# oracleasm createdisk DATAVOL1 /dev/sdc1 Writingdisk header: done Instantiatingdisk: done [root@ora ~]# oracleasm createdisk DATAVOL2 /dev/sdd1 Writingdisk header: done Instantiatingdisk: done [root@ora ~]# oracleasm createdisk FRAVOL1 /dev/sde1 Writingdisk header: done Instantiatingdisk: done [root@ora ~]# oracleasm listdisks CRSVOL1 DATAVOL1 DATAVOL2 FRAVOL1 dbc使用oracleasm-discover查找ASM磁盘,所以先运行oracleasm-discover查看是否能找到刚创建的4个磁盘 [root@ora ~]# oracleasm-discover UsingASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so [ASMLibrary - Generic Linux, version 2.0.4 (KABI_V2)] Discovereddisk: ORCL:CRSVOL1 [2096753 blocks (1073537536 bytes), maxio 512] Discovereddisk: ORCL:DATAVOL1 [41940960 blocks (21473771520 bytes), maxio 512] Discovereddisk: ORCL:DATAVOL2 [41940960 blocks (21473771520 bytes), maxio 512] Discovereddisk: ORCL:FRAVOL1 [62912480 blocks (32211189760 bytes), maxio 512] 六、安装GridInfrastructure 用grid用户安装Grid Infrastructure,安装版本为11.2.0.1 x86_64位版,安装过程不具体描述,但是在安装过程中有几步有以下几个要注意的地方: 在'Step 2 of 9'时选择第二个'Configure Oracle Grid Infrastructurefor a Standalone Server',如图grid-1。 图grid-1 在'Step 4 of 11'时只选择一个ASM磁盘CRSVOL1,如图grid-2。 图grid-2 在'Step 7 of 11'时会弹出警告对话框,可以不用理会,直接点击'Yes',如图grid-3。 图grid-3 在'Step 9 of 12'会提示找不到pdksh-XXX的包,在RHEL6中已经移出此包,只要系统中有ksh-XXX包即可,选中'IgnoreAll'后点击"Next'按钮,如图grid-4。 [root@ora ~]# rpm -qa | grep ksh ksh-20100621-16.el6.x86_64 图grid-3 最后按照屏幕提示以root用户执行两个脚本,再等待oracle自动完成最后的配置,Grid Infrastructure就安装完成,如图grid-4、grid-5。 图grid-4 图grid-5 安装完后可以查看ASM实例是否启动。 [root@ora~]# ps -ef | grep asm grid 23212 1 0 17:24 ? 00:00:00 asm_pmon_+ASM grid 23214 1 0 17:24 ? 00:00:00 asm_psp0_+ASM grid 23246 1 0 17:24 ? 00:00:01 asm_vktm_+ASM grid 23250 1 0 17:24 ? 00:00:00 asm_gen0_+ASM grid 23252 1 0 17:24 ? 00:00:00 asm_diag_+ASM grid 23254 1 0 17:24 ? 00:00:00 asm_dia0_+ASM grid 23256 1 0 17:24 ? 00:00:00 asm_mman_+ASM grid 23258 1 0 17:24 ? 00:00:00 asm_dbw0_+ASM grid 23260 1 0 17:24 ? 00:00:00 asm_lgwr_+ASM grid 23262 1 0 17:24 ? 00:00:00 asm_ckpt_+ASM grid 23264 1 0 17:24 ? 00:00:00 asm_smon_+ASM grid 23266 1 0 17:24 ? 00:00:00 asm_rbal_+ASM grid 23269 1 0 17:24 ? 00:00:00 asm_gmon_+ASM grid 23271 1 0 17:24 ? 00:00:00 asm_mmon_+ASM grid 23273 1 0 17:24 ? 00:00:00 asm_mmnl_+ASM root 25068 3291 0 17:26 pts/2 00:00:00 grep asm 七、创建ASMdisk groups 以grid用户使用图形界面创建ASM磁盘组,也可以在SQL*PLUS中用CREATE DISKGROUP语句创建。 [grid@ora grid]$ asmca 默认会看到安装Grid Infrastructure已经创建的CRS磁盘组如图ASM-1,点击'Create'按钮增加新的磁盘组DATA和FRA。 DATA磁盘组包含DATAVOL1和DATAVOL2,用来保存数据库文件,FRA磁盘组包含FRAVOL1,用来做快速恢复区。在这里DATA磁盘组没有设置任何冗余。 图ASM-1 图ASM-2 图ASM-3 图ASM-4 设置完成后显示如图ASM-4的结果。 七、安装Oracle11g数据库 以Oracle用户安装安装版本为11.2.0.1 x86_64位版,安装过程不再详述,同样有几点要注意的: 在'Step 2 of 10'选择第二项'Install database software only',如图db-1。 图db-1 在'Step 4 of 10'选择第一项'Single instance database installation',如图db-2。 图db-2 在'Step 9 of 12'也会出现包pdksh-XXX没有安装的提示,选中'Ignore All'点击'Next'按钮即可,如图db-3。 图db-3 最后按照屏幕提示以root用户执行一个脚本,再等待oracle自动完成最后的配置,Oracle 11g数据库就安装完成,如图db-4。 图db-4 八、创建数据库实例 用oracle用户执行dbca命令创建数据库,同样创建过程也不再详述,只是在指定数据库文件保存位置和快速恢复区位置时需要注意。 在'Step 6 of 12'时Storge Type'选择'Automatic Storage management(ASM)'并选择'UseOracle-Managed Files',如图db-5。然后点击'Browse...'按钮选择ASM磁盘组,如图db-6。ASM磁盘组选择完后会弹出对话框要求输入ASMSNMP的密码如图db-7,此密码在安装Grid Infrastructure 'Step 5 of 11'时会提示输入。 图db-5 图db-6 图db-7 在'Step 7 of 12'指定快速恢复区时选择ASM磁盘组,如图db-8、db-9。 图db-8 图db-9 安装完后我们建立的表空间就保存在FreeNAS中的磁盘中了。其实安装数据库时就可以创建实例,只是因为个人习惯用dbca创建数据库,所以把安装数据库和创建数据库实例分开。另外Grid Infrastructure和database的安装也没有具体描述,具体安装过程可以参考其他文档。如果单纯想用虚拟机测试ASM可以不用iSCSI和FreeNAS,直接在虚拟机上多添加几块磁盘就行,对磁盘的操作和上面的步骤一样。