Oracle 11g ASM详细配置

来源:互联网 发布:iphone库存查询软件 编辑:程序博客网 时间:2024/05/18 04:49

目录

0,说明
1,查看系统版本号
2,检查asm依赖的oracleasm-support和kernel-uek包是否存在
3,在VMware Workstation 9.0 虚拟机添加4个大小为5G的磁盘为虚拟裸设备使用
4,扫描已经mount的硬盘
5,给磁盘分区
6,查看分区后的硬盘信息
7,将已经分区的磁盘绑定为裸设备 raw
8,给裸设备设置权限
9,启动绑定的裸设备
10,配置ASM磁盘
11,在ASM实例中查看ASM磁盘信息
12,在DB实例中使用ASM磁盘


0, 说明
环境>
操作系统:Oracle Enterprise Linux6.2
数据库:Oracle11.2.0.3.0 with Grid
裸设备虚拟环境:VMware Workstation 9.0

一般是oracle用户对应DB实例,grid用户对应ASM实例,为了便于管理,将两个实例统一由oracle用户管理,通过每次启动实例前,运行. .asm和. .db这两个环境变量实现在oracle一个用户下启动和使用不同的实例。

两个环境变量配置如下。

[oracle@updba ~]$ cat .asm# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsexport  ORACLE_BASE=/u01/app/oracleexport  GRID_HOME=/u01/app/grid/11g ——Grid主目录export  ORACLE_HOME=$GRID_HOMEexport  ORACLE_SID=+ASMPATH=$GRID_HOME/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:export PATH[oracle@updba ~]$ cat .db# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsexport  ORACLE_BASE=/u01/app/oracleexport  DB_HOME=/u01/app/oracle/11g ——DB主目录export  ORACLE_SID=updbexport  ORACLE_HOME=$DB_HOMEPATH=$DB_HOME/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:export PATH


1,查看系统版本号
[root@updba rules.d]# uname -aLinux updba.uplooking.com 2.6.32-300.3.1.el6uek.x86_64 #1 SMP Fri Dec 9 18:57:35 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

2,检查asm依赖的oracleasm-support和kernel-uek包是否存在

[oracle@updba ~]$ rpm -qa|grep oracleasm-supportoracleasm-support-2.1.5-1.el6.x86_64[oracle@updba ~]$ rpm -qa|grep kernel-uekkernel-uek-firmware-2.6.32-300.3.1.el6uek.noarchkernel-uek-headers-2.6.32-300.3.1.el6uek.x86_64kernel-uek-2.6.32-300.3.1.el6uek.x86_64

包的版本号和系统的版本号一致。

由于我用的是 Oracle Enterprise Linux6.2,所以系统自带这两个包。如果是用的redhat6.X,需要在 yum.oracle.com 上下载与之版本号相匹配的包,小版本号也最好相同,安装包后需要重新启动系统。

3,在VMware Workstation 9.0 虚拟机添加4个大小为5G的磁盘为虚拟裸设备使用


 




4,扫描已经mount的硬盘

共有4个,依次是:sdb,sdc,sde,sdd


[root@updba ~]# fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000bb795Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1          64      512000   83  LinuxPartition 1 does not end on cylinder boundary./dev/sda2              64        3917    30944256   8e  Linux LVMDisk /dev/sdb: 5368 MB, 5368709120 bytes255 heads, 63 sectors/track, 652 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/sdb doesn't contain a valid partition table  -- sdb --磁盘1Disk /dev/sdc: 5368 MB, 5368709120 bytes – sdc--磁盘2255 heads, 63 sectors/track, 652 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/sdc doesn't contain a valid partition tableDisk /dev/sde: 5368 MB, 5368709120 bytes – sde--磁盘3255 heads, 63 sectors/track, 652 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/sde doesn't contain a valid partition tableDisk /dev/sdd: 5368 MB, 5368709120 bytes – sdd--磁盘4255 heads, 63 sectors/track, 652 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/sdd doesn't contain a valid partition tableDisk /dev/mapper/VolGroup-lv_root: 27.5 GB, 27489468416 bytes255 heads, 63 sectors/track, 3342 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition tableDisk /dev/mapper/VolGroup-lv_swap: 4194 MB, 4194304000 bytes255 heads, 63 sectors/track, 509 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table


5,给磁盘分区
[root@updba ~]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0xdc9eee33.Changes will remain in memory only, until you decide to write them.After that, 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') and change display units to         sectors (command 'u').Command (m for help): n   ——此处输入 n 新建分区(下同)Command action   e   extended   p   primary partition (1-4)p     ——此处输入 p新建主分区(下同)Partition number (1-4): 1   ——此处输入1建将这块磁盘分为一个区(下同)First cylinder (1-652, default 1):  ——默认全部分给主分区(下同)Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): Using default value 652Command (m for help): w   ——输入W保存设置(下同)The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.依次为其他已经mount而没有分区的设备进行分区[root@updba ~]# fdisk /dev/sdcDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x63634766.Changes will remain in memory only, until you decide to write them.After that, 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') and change display units to         sectors (command 'u').Command (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-652, default 1): Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): Using default value 652Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@updba ~]# fdisk /dev/sdeDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x323654a6.Changes will remain in memory only, until you decide to write them.After that, 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') and change display units to         sectors (command 'u').Command (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-652, default 1): Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): Using default value 652Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@updba ~]# fdisk /dev/sddDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x36a34693.Changes will remain in memory only, until you decide to write them.After that, 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') and change display units to         sectors (command 'u').Command (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-652, default 1): Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): Using default value 652Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.


6,查看分区后的硬盘信息

[root@updba ~]# fdisk -l|grep sdDisk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition tableDisk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition tableDisk /dev/sda: 32.2 GB, 32212254720 bytes/dev/sda1   *           1          64      512000   83  Linux/dev/sda2              64        3917    30944256   8e  Linux LVMDisk /dev/sdb: 5368 MB, 5368709120 bytes/dev/sdb1               1         652     5237158+  83  Linux ——对应sdbDisk /dev/sdc: 5368 MB, 5368709120 bytes/dev/sdc1               1         652     5237158+  83  Linux ——对应sdcDisk /dev/sde: 5368 MB, 5368709120 bytes/dev/sde1               1         652     5237158+  83  Linux ——对应sdeDisk /dev/sdd: 5368 MB, 5368709120 bytes/dev/sdd1               1         652     5237158+  83  Linux ——对应sdd

7,将已经分区的磁盘绑定为裸设备 raw(也称做字符设备)

然后就可以通过ASM实例去管理和使用
编辑60-raw.rules文件,拷贝4行,有几个裸设备就要添加几行配置,映射磁盘和raw设备的关系

[root@updba ~]# cat /etc/udev/rules.d/60-raw.rules# Enter raw device bindings here.## An example would be:#   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"# to bind /dev/raw/raw1 to /dev/sda, or#   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"# to bind /dev/raw/raw2 to the device with major 8, minor 1.ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw10 %N"ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw11 %N"ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw12 %N"ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw13 %N"

验证

[root@updba ~]# tail -4 /etc/udev/rules.d/60-raw.rulesACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw10 %N"ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw11 %N"ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw12 %N"ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw13 %N"

8,给裸设备设置权限

权限必须是oracle用户和其所在的组的用户有权限去访问

[oracle@updba ~]$ id oracle -auid=500(oracle) gid=110(oinstall) groups=110(oinstall),111(dba),112(oper),120(asmdba),121(asmadmin),122(asmoper)[root@updba rules.d]# cat 99-fuse.rulesKERNEL=="fuse", MODE="0666",OWNER="root",GROUP="root"[root@updba rules.d]# vi 99-asm.rulesNEL=="raw1[0-3] MODE="0644",OWNER="oracle",GROUP="dba"

9,启动绑定的裸设备


[root@updba rules.d]# start_udevStarting udev:                                             [  OK  ]

可以产看绑定的设备是否正确

[root@updba rules.d]# ls -l /dev/raw/raw*crw-rw----. 1 root dba 162, 10 Oct 28 21:42 /dev/raw/raw10crw-rw----. 1 root dba 162, 11 Oct 28 21:42 /dev/raw/raw11crw-rw----. 1 root dba 162, 12 Oct 28 21:42 /dev/raw/raw12crw-rw----. 1 root dba 162, 13 Oct 28 21:42 /dev/raw/raw13crw-rw----. 1 root dba 162,  0 Oct 28 21:42 /dev/raw/rawctl


10,配置ASM磁盘
运行.asm实例,两个点之间有空格
[oracle@updba ~]$ . .asm


执行asmca命令
[oracle@updba ~]$ asmca

稍等出现如下界面,并设定密码


 

然后点击 Specify Disk Group … 按钮


如果配置的正确,在弹出的这个界面中会看到已经绑定的裸设备,此时表示可以创建磁盘组了。选中raw10,raw11分组为DB,存放数据文件,数据文件冗余方式选择 External
冗余方式简介
NORMAL 即ASM将为每一个extent创建一个额外的拷贝以便实现冗余;默认情况下所有的文件都会被镜像,这样每一个file extent都有2份拷贝。若写错误发生在2个Disk上且这2个Disk是partners时将导致disk Disk Group被强制dismount。若发生失败的磁盘不是partners则不会引起数据丢失和不可用。
HIGH 即ASM为每一个extent创建两个额外的拷贝以便实现更高的冗余。2个互为partners的Disk的失败不会引起数据丢失,当然不能有更多的partners Disk失败了。
EXTERNAL即ASM本身不做镜像,而依赖于底层存储阵列资深实现镜像;在External下任何的写错误都会导致Disk Group被强制dismount。在此模式下所有的ASM DISK必须都存在健康,否则Disk Group将无法MOUNT




然后点击 OK 到如下界面
 

点击 Yes
 
创建磁盘组

创建成功


 

然后选中raw12分组为FRA,存放快速闪回区的文件,选中raw13分组为VOTEDISK,作为表决磁盘,留做RAC用,如下图:
 

此时可以在系统进程中查看到+ASM的实例了

[root@updba rules.d]# ps -ef|grep asm_oracle   25377     1  0 21:54 ?        00:00:00 asm_pmon_+ASMoracle   25379     1  0 21:54 ?        00:00:00 asm_psp0_+ASMoracle   25381     1  0 21:54 ?        00:00:01 asm_vktm_+ASMoracle   25385     1  0 21:54 ?        00:00:00 asm_gen0_+ASMoracle   25387     1  0 21:54 ?        00:00:00 asm_diag_+ASMoracle   25389     1  0 21:54 ?        00:00:00 asm_dia0_+ASMoracle   25391     1  0 21:54 ?        00:00:00 asm_mman_+ASMoracle   25393     1  0 21:54 ?        00:00:00 asm_dbw0_+ASMoracle   25395     1  0 21:54 ?        00:00:00 asm_lgwr_+ASMoracle   25397     1  0 21:54 ?        00:00:00 asm_ckpt_+ASMoracle   25399     1  0 21:54 ?        00:00:00 asm_smon_+ASMoracle   25401     1  0 21:54 ?        00:00:00 asm_rbal_+ASMoracle   25403     1  0 21:54 ?        00:00:00 asm_gmon_+ASMoracle   25405     1  0 21:54 ?        00:00:00 asm_mmon_+ASMoracle   25407     1  0 21:54 ?        00:00:00 asm_mmnl_+ASMroot     25522 22418  0 21:57 pts/1    00:00:00 grep asm_


11,在ASM实例中查看ASM磁盘信息
切换到oracle用户下,确认SID

[oracle@updba ~]$ echo $ORACLE_SID+ASM[oracle@updba ~]$ sqlplus / as sysasmSQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 28 22:00:46 2013Copyright (c) 1982, 2011, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Automatic Storage Management option

查询磁盘信息
SQL> select name from v$asm_diskgroup;NAME------------------------------DBFRAVOTEDISKSQL> alter diskgroup VOTEDISK dismount;Diskgroup altered.[oracle@updba ~]$ asmcmdASMCMD> ls DB/FRA/ASMCMD> du *Used_MB      Mirror_used_MB      1                   1ASMCMD> du DBUsed_MB      Mirror_used_MB      1                   1ASMCMD> du FRAASMCMD>

也可以添加和删除文件夹,和在操作系统里面相似,但他是字符设备,存放的全部是1和0,它没有文件夹这个概念,只是在表象上看到有文件夹。


12,在DB实例中使用ASM磁盘 

[oracle@updba ~]$ . .db[oracle@updba ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 28 22:08:18 2013Copyright (c) 1982, 2011, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Partitioning, Oracle Label Security, OLAP, Data Mining,Oracle Database Vault and Real Application Testing options

查询磁盘信息

SQL> select name from v$asm_diskgroup;    NAME------------------------------DBFRAVOTEDISK

在+DB上创建表空间tbs_ivyuasm

SQL> create tablespace tbs_ivyuasm datafile '+DB' size 10m;Tablespace created.

在创建的这个表空间上创建一张表,并指定所存储的表空间在tbs_ivyuasm上

SQL> create table test_asm (id number,name varchar2(100)) tablespace TBS_IVYUASM;Table created.

插入一些数据
SQL> insert into test_asm select object_id,object_name from dba_objects;75263 rows created.SQL> commit;Commit complete.


查看ASM磁盘的使用情况,说明ASM存储配置成功,over。

ASMCMD> du DBUsed_MB      Mirror_used_MB     12                  12


数据也可正常读取

SQL> select * from test_asm where rownum<6; ID NAME---------- ----------------------------------------------------------------------------------------------------       870 I_XSTREAM_DML_CONF_HANDLER2       871 XSTREAM$_DML_CONFLICT_COLUMNS       873 SYS_IL0000000871C00011$$       872 SYS_LOB0000000871C00011$$       874 I_XSTREAM_DML_CONFLICT_COLS1ASM 磁盘的相关视图    v$asm_disk(_stat)       --查看磁盘及其状态信息    v$asm_diskgroup(_stat)  --查看磁盘组及其状态信息    v$asm_operation         --查看当前磁盘的操作信息    v$asm_client            --返回当前连接的客户端实例信息    v$asm_file              --返回asm文件的相关信息    v$asm_template          --返回asm文件样本的相关信息    v$asm_alias             --返回asm文件的别名信息


原创粉丝点击