在这篇文章中,咱们将对11gR2 的新特性任务角色分离(Job Role Separation)进行介绍。linux
在11gR2,操做系统用户grid成为了集群件(GI)的owner,而且ASM成为了集群件的一部分,因此grid用户也成为了ASM 磁盘的owner。数据库
一般有3种方式配置ASM磁盘,asmlib, 裸设备和块设备。oracle
1. asmlib操作系统
配置asm 磁盘的owner和group。blog
# /etc/init.d/oracleasm configureget
…..it
Default user to own the driver interface : gridio
Default group to own the driver interface : asmadminasm
……集群
查看ASM磁盘的设置:
ls –l /dev/oracleasm/disks
brw-rw---- 1 grid asmadmin 8, 33 Jul 2 18:21 DATA
注意: 从linux 2.6 内核开始,块设备的权限和路径配置在重启以后再也不被保留,除非使用udev 建立规则文件固定。例如块设备/dev/sda在重启以后可能变成/dev/sdb。若是使用udev,那么在添加新磁盘时,须要修改规则文件以确保设备名和权限在重启以后不发生改变。
若是使用asmlib, 只须要肯定做为asm 磁盘的范围,asmlib会维护磁盘的标签和权限,以便在操做系统升级后磁盘标签仍然有效。 因此,asmlib 和udev实现的功能基本是相同的。
2. 裸设备。按照如下设置配置磁盘的owner和group:
crw-rw---- 1 grid asmadmin 162, 1 Jul 18 21:40 /dev/raw/raw1
3.块设备。按照如下设置配置磁盘的owner和group:
# chown grid:asmadmin /dev/rhdiskn
# chmod 660 /dev/rhdiskn
接下来解释任务角色分离中oracle可执行文件的权限和group 设置。
在上面的例子中,ASM磁盘的group是asmadmin,这意味着组asmadmin中的成员能够对asm磁盘进行读写操做,固然grid用户也能够。而其余用户,例如oracle,则须要经过oracle_home/bin下的oracle可执行文件访问asm 磁盘。
这意味着oracle可执行文件不只须要黏着位(stick bit),还须要是设置group 为asmadmin。当使用srvctl(srvctl start database/instance)启动数据库时oracle会自动调用<rdbms_home>/bin/setasmgid设置oracle 可执行文件的group为asmadmin。
因此,若是问题出如今oracle不能访问asm 磁盘,须要检查如下的内容。固然因为oracle 能够直接访问asm磁盘,而不须要经过asm 实例,因此问题的症状可能不少,甚至ora-600错误均可能是这个缘由。
1. Asmlib标识过的磁盘的权限和group设置
brw-rw---- 1 grid asmadmin 8, 49 Dec 31 12:14 DATA
2. 裸设备或者块设备的权限和group设置
crw-rw---- 1 grid asmadmin 162, 1 Jul 18 21:40 /dev/raw/raw1
3. RDBMS和GI 主目录下的oracle可执行文件的权限和group设置
rdbms_home : -rwsr-s--x 1 oracle asmadmin 188832561 Oct 30 21:22 oracle
gi_home: -rwsr-s--x 1 grid oinstall 166530359 Nov 16 14:31 oracle
注意黏着位(stick bit)的设置
最后咱们对11gR2中安装oracle 集群件和数据库软件中的一些group进行简单的介绍。
* oinstall : 这个group是GI 和RDBMS软件的拥有者。
* dba : 这个group是数据库的dba group, 对数据库具备最高权限。
* asmdba : 这个group是asm实例的dba group, 能够启动/关闭实例,挂载/卸载asm 磁盘组。
* asmadmin: 这个group是asm的管理员group,它包含asmdba的所有权限,同时还能够增长/删除 asm 磁盘,磁盘组等。