感谢支持
我们一直在努力

虚拟机上实施ASM

此文档旨在让初学者以最快的速度完成ASM部署,初步了解ASM的部署流程,以及简单的ASM管理。ASM并不难,Oracle利用这种技术能轻松的实现对存储的管理。在书上和网络上都查找了一些资料,都不是太尽人意。要么说得太复杂,要么就是比较笼统。自己部署时也遇到一些小问题,和大家一起分享。

系统环境:

虚拟机:VMware Workstation 9

操作系统:RHEL5.4

数据库:Oracle10g

详细步骤:

一、在虚拟机上添加虚拟磁盘

在虚拟机上安装好操作系统与Oracle数据库之后,就可以开始准备部署ASM了,当然也可以在创建Oracle数据库的时候一同创建ASM实例。为了简化理解,我们安装好Oracle数据库之后再创建ASM实例。

在虚拟机上添加虚拟磁盘非常简单,如下图所示,添加3个500M的虚拟磁盘。

虚拟机上实施ASM

二、创建磁盘分区
 
 
 
在虚拟机中新添加的磁盘是看不到的,如果想要看到新添加的磁盘有两种方法,第一种是重启虚拟机。第二种就是发送命令让系统扫描主机外设,这种方法不用重启虚拟机。我们选择第二种:
 
命令:echo “- – -” > /sys/class/scsi_host/host0/scan
 
执行完这条命令后,查看是否发现了新加载的磁盘。
 
[root@ora10 ~]# fdisk -l
 
Disk /dev/sda: 21.4 GB, 21474836480 bytes
 
255 heads, 63 sectors/track, 2610 cylinders
 
Units = cylinders of 16065 * 512 = 8225280 bytes
 
  Device Boot      Start        End      Blocks  Id  System
 
/dev/sda1  *          1          25      200781  83  Linux
 
/dev/sda2              26        1172    9213277+  83  Linux
 
/dev/sda3            1173        1433    2096482+  82  Linux swap / Solaris
 
/dev/sda4            1434        2610    9454252+  5  Extended
 
/dev/sda5            1434        2610    9454221  8e  Linux LVM
 
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
 
255 heads, 63 sectors/track, 1305 cylinders
 
Units = cylinders of 16065 * 512 = 8225280 bytes
 
Disk /dev/sdb doesn’t contain a valid partition table
 
Disk /dev/sdc: 536 MB, 536870912 bytes
 
64 heads, 32 sectors/track, 512 cylinders
 
Units = cylinders of 2048 * 512 = 1048576 bytes
 
  Device Boot      Start        End      Blocks  Id  System
 
/dev/sdc1              1        512      524272  83  Linux
 
Disk /dev/sdd: 536 MB, 536870912 bytes
 
64 heads, 32 sectors/track, 512 cylinders
 
Units = cylinders of 2048 * 512 = 1048576 bytes
 
  Device Boot      Start        End      Blocks  Id  System
 
/dev/sdd1              1        512      524272  83  Linux
 
Disk /dev/sde: 536 MB, 536870912 bytes
 
64 heads, 32 sectors/track, 512 cylinders
 
Units = cylinders of 2048 * 512 = 1048576 bytes
 
  Device Boot      Start        End      Blocks  Id  System
 
/dev/sde1              1        512      524272  83  Linux
 
从上面可以看出/dev/sdc  /dev/sdd  /dev/sdd三块新添加磁盘都已经被加载。加载完磁盘之后需要创建磁盘分区,这个也很简单。
 
依次执行完以下命令:
 
命令:fdisk /dev/sdc
 
命令:n  #新建分区
 
命令:p  #创建主分区
 
命令:1  #第一个分区
 
命令:直接回车 #默认将整个磁盘划到一个分区
 
命令:w  #保存
 
命令:q    #退出
 
对每一块新添加的磁盘都依次执行以上命令,最后我们通过fdisk -l磁盘列表就可以查看到/dev/sdc1  /dev/sdd1  /dev/sde1这三个磁盘分区了。三、安装ASM相关支持包
 
 
 
ASM相关的支持包共有三个,可以去Oracle官网下载,下载的时候一定要注意操作系统的内核,下载与之对应的内核支持包。
 
命令:uname -r  #查看系统内核版本
 
命令:rpm -aq |grep oracleasm  #查看已经安装的oracleasm包
 
[root@ora10 ~]# rpm -aq|grep oracleasm
 
oracleasmlib-2.0.4-1.el5
 
oracleasm-support-2.1.8-1.el5
 
oracleasm-2.6.18-164.el5-2.0.5-1.el5
 
以上是本机已经安装的oracleasm相关包,具体怎么安装就不说了。
 
 
 
四、配置并创建ASM磁盘
 
 
 
Oracleasm相关的包安装好之后,可以查看下文件安装的目录,这里最重要的配置文件目录位于/etc/init.d/oracleasm
 
来看下这个脚本可以做些什么。
 
[root@ora10 init.d]# oracleasm -h
 
Usage: oracleasm [–exec-path=<exec_path>] <command> [ <args> ]
 
      oracleasm –exec-path
 
      oracleasm -h
 
      oracleasm -V
 
The basic oracleasm commands are:
 
    configure        Configure the Oracle Linux ASMLib driver
 
    init            Load and initialize the ASMLib driver
 
    exit            Stop the ASMLib driver
 
    scandisks        Scan the system for Oracle ASMLib disks
 
    status          Display the status of the Oracle ASMLib driver
 
    listdisks        List known Oracle ASMLib disks
 
    querydisk        Determine if a disk belongs to Oracle ASMlib
 
    createdisk      Allocate a device for Oracle ASMLib use
 
    deletedisk      Return a device to the operating system
 
    renamedisk      Change the label of an Oracle ASMlib disk
 
    update-driver    Download the latest ASMLib driver
 
英文再差应该也可以理解,通过这个脚本可以创建、删除、列表、重命名、验证、卸载、重加载ASM磁盘。操作非常简单。
 
首先要配置一下。
 
命令:/etc/init.d/oracleasm configure
 
配置项中的owner为oracle,group 为dba ,引导加载asm驱动项选择y就行了,其它保持默认。
 
接下来要创建asm磁盘了。
 
命令:/etc/init.d/oracleasm createdisk SDC ‘/dev/sdc1’
 
      /etc/init.d/oracleasm createdisk SDD ‘/dev/sdd1’
 
      /etc/init.d/oracleasm createdisk SDE ‘/dev/sde1’
 
查看下我们创建好的asm磁盘
 
命令:/etc/init.d/oracleasm listdisks
 
[root@ora10 init.d]# oracleasm listdisks
 
SDC
 
SDD
 
SDE
 
当然你也可以删除asm磁盘
 
命令:/etc/init.d/oracleasm deletedisk SDC
 
验证asm磁盘是否有效
 
命令:/etc/init.d/oracleasm querydisk SDC

五、添加CSS服务

这里要添加CSS服务,这个服务具体什么用,就不详细说,可以去问下百度哥,或者是谷歌妹。

命令:[Oracle@ora10 bin]$ cd $ORACLE_HOME/dbs/bin

[oracle@ora10 bin]$ ./localconfig add

六、创建ASM实例

创建ASM实例可以直接编写asm初始化参数文件,口令文件的方式,这里我们采用最简单直观的方式,通过图形化界面。

以oracle用户登陆服务器执行dbca,打开创建数据库助手窗口。在第三步选择配置ASM

到四步选择“Create New”

有可能发现不了磁盘,需要修改一下磁盘下现路径“Change Disk Discovery Path”,磁盘发现路径有2种方式,一种是通过字符串实别,如本例“ORCL:*”,另一种是通过全路径实别,可以输入asm磁盘设备所在完全路径,默认路径为“/dev/oracleasm/disks/*”。这两种方式皆可。但这两种方式略有差别,采用全路径识别的方式,ASM会自动为asm磁盘命名,而自符串识别方式,会使用创建时所用的asm磁盘名,个人觉得还是用字符串的方式方便管理一些。

输入磁盘组名,选择冗余模式,这里选择“Normal”也就是镜像,Normal冗余组至少要有2块磁盘。然后选择asm磁盘。

七、管理ASM磁盘组
 
经过上面的一番辛苦,最令人兴奋的时刻终于到了。赶紧去看看我们的成果吧。
切换到+ASM,测试下实例能否正常启动吧。
export Oracle_SID=+ASM
sqlplus / as sysdba
SQL> startup
ASM instance started
Total System Global Area 130023424 bytes
Fixed Size 2082208 bytes
Variable Size 102775392 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
ASM管理最重要的2个动态性能视图“v$asm_diskgroup”和“v$asm_disk”,查看下磁盘组及asm磁盘的相关信息。
SQL> set line 120
SQL> col name for a10
SQL> select group_number,name,total_mb,free_mb,state from v$asm_diskgroup;
GROUP_NUMBER NAME TOTAL_MB FREE_MB STATE
———— ———- ———- ———- ———————-————————————
1 DGROUP01 1022 920 MOUNTED
从查询结果可以得知我们刚才创建的组名为“DGROUP01”,编号为1,目前处于挂载状态,以及总空间与空闲空间。
SQL> col path for a45
SQL> col path for a10
SQL> select group_number,disk_number,name,path,total_mb,free_mb from v$asm_disk;
GROUP_NUMBER DISK_NUM BER NAME PATH TOTAL_MB FREE_MB
———— ———– ———- ———- ———- ———-———————————————
0 2 ORCL:SDE 511 0
1 0 SDC ORCL:SDC 511 460
1 1SDD ORCL:SDD 511 460
从查询结果可以得知“DGROUP01”组有2块磁盘,分别是“SDC”和“SDD”,及未分配的磁盘“SDE”,自磁盘的总容量与空闲容量。
接下来我们来删除,创建磁盘组,挂载,卸载磁盘组,向组里加磁盘,删除组里的磁盘,及在磁盘组上创建表空间等操作,真正的实现ASM磁盘管理。
1、删除磁盘组
命令:drop diskgroup dgroup01 including contents
SQL> drop diskgroup dgroup01 including contents;
Diskgroup dropped.
SQL> select group_number,name,total_mb,free_mb,state from v$asm_diskgroup;
no rows selected
2、创建磁盘组
  命令:create diskgroup dgroup02 normal redundancy disk ORCL:SDC disk ORCL:SDD
SQL> create diskgroup dgroup02 normal redundancy disk ‘ORCL:SDC’ disk ‘ORCL:SDD’;
Diskgroup created.
SQL> select group_number,name,total_mb,free_mb,state from v$asm_diskgroup;
GROUP_NUMBER NAME TOTAL_MB FREE_MB STATE
———— ———- ———- ———- ———————-————————————–
1 DGROUP02 1022 920MOUNTED
3、卸载磁盘组
命令:alter diskgroup dgroup02 dismount;
SQL> alter diskgroup dgroup02 dismount;
Diskgroup altered.
SQL> select group_number,name,total_mb,free_mb,state from v$asm_diskgroup;
GROUP_NUMBER NAME TOTAL_MB FREE_MB STATE
———— ———- ———- ———- ———————-————————————
0 DGROUP02 0 0 DISMOUNTED
4、挂载磁盘组
命令:alter diskgroup dgroup02 mount;
SQL> alter diskgroup dgroup02 mount;
Diskgroup altered.
SQL> select group_number,name,total_mb,free_mb,state from v$asm_diskgroup;
GROUP_NUMBER NAME TOTAL_MB FREE_MB STATE
———— ———- ———- ———- ———————- ————————————-
1 DGROUP02 1022 920 MOUNTED
5、添加磁盘到磁盘组
命令:alter diskgroup dgroup02 add disk ORCL:SDE
SQL> select group_number,disk_number,name,path,total_mb,free_mb from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME PATH TOTAL_MB FREE_MB
———— ———– ———- ———- ———- ———-—————————————
1 0 SDC ORCL:SDC 511 460
1 1 SDD ORCL:SDD 511 460
1 2 SDE ORCL:SDE 511 460
这里需要注意的是往磁盘组里添加磁盘时添加的PATH字段的字符串。
6、从磁盘组中删除磁盘
命令:alter diskgroup dgroup02 drop disk SDC;
SQL> select group_number,disk_number,name,path,total_mb,free_mb from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME PATH TOTAL_MB FREE_MB
———— ———– ———- ———- ———- ———-—————————————
0 0 ORCL:SDC 511 0
1 1 SDD ORCL:SDD 511 460
1 2 SDE ORCL:SDE 511 460
ASM添加磁盘组后会自动做数据平衡,将数据分布到新添加的磁盘当中去,反之从磁
盘组中删除磁盘后会将删除磁盘上的数据分配到组中其它磁盘上去。
7、创建表空间
命令:
SQL> create tablespace asmtest
2 datafile ‘+DGROUP02/asmtest01.dbf’
3 size 10m
4 autoextend on
5 /
Tablespace created.
可以在表空间上创建表,插入数据,做下读写测试。整个ASM部署流程就讲完了。

补充知识:

如果因为条件限制不能使用Oracle服务器控制台,也可以配置,关键是编辑参数文件和口令文件。这里将init+ASM文件内容贴出来,这是个文件文件,可以直接用VI编辑工具处理。

*.asm_diskgroups=’DGROUP01′

+ASM.asm_diskgroups=’DGROUP02’#Manual Mount

*.asm_diskstring=’ORCL:*’

*.background_dump_dest=’/opt/app/oracle/admin/+ASM/bdump’

*.core_dump_dest=’/opt/app/oracle/admin/+ASM/cdump’

*.instance_type=’asm’

*.large_pool_size=12M

*.remote_login_passwordfile=’SHARED’

*.user_dump_dest=’/opt/app/oracle/admin/+ASM/udump’

创建口令文件

orapwd file=’$ORACLE_HOME/dbs/orapw+ASM’ password=*****

创建日志文件目录

mkdir -p /opt/app/oracle/admin/+ASM/bdump

mkdir -p /opt/app/oracle/admin/+ASM/udump

mkdir -p /opt/app/oracle/admin/+ASM/cdump

然后就可测试下+ASM实例是否能正常启动了。

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

赞(0) 打赏
转载请注明出处:服务器评测 » 虚拟机上实施ASM
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏