暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ASM基本操作与使用

原创 逆风飞翔 2021-10-12
329

(1)添加磁盘组
SQL> create diskgroup FLASH_DISK external redundancy disk '/dev/oracleasm/disks/ASMDISK1' name flashdisk;

SQL> create diskgroup ARCH_DISK external redundancy disk '/dev/oracleasm/disks/ASMDISK2' name archdisk1;

SQL> create diskgroup DATA_DISK normal redundancy disk '/dev/oracleasm/disks/ASMDISK4' name datadisk1, '/dev/oracleasm/disks/ASMDISK5' name datadisk2;


(2)查看磁盘组状态
SQL> select name,state from v$asm_diskgroup;

(4)挂载FLASH_DISK磁盘组
SQL> alter diskgroup FLASH_DISK mount;


(5)查看磁盘名与裸设备对应关系
SQL> select name,path from v$asm_disk_stat;

查看每个磁盘组可用大小
SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;

(7)向磁盘组中增加一个磁盘
SQL> ALTER DISKGROUP ARCH_DISK ADD DISK '/dev/oracleasm/disks/ASMDISK3' name ARCHDISK2;

(8)从磁盘组中删除一个磁盘:
SQL> ALTER DISKGROUP ARCH_DISK DROP DISK ARCHDISK2;

(9)删除一个磁盘组:
SQL> drop diskgroup FLASH_DISK;

当有数据库使用ASM的磁盘组时,是无法卸载和删除的。ASM实例如果宕掉,那么使用ASM的数据库实例也会宕掉。RAC环境中,在删除一个磁盘组之前,其它节点的ASM实例必须要将这个要删除的磁盘组卸载。

(1.1)创建ASM磁盘
可以使用RAID划分的LUN,分区,裸设备等来创建ASM磁盘,但是在使用LUN、分区或裸设备时,要注意将属主和属组改为oracle用户及其对应的组,这个在前面章节已经讲述过,另外还有一种简单的方法就是使用oracle提供的ASMLIB来完成ASM磁盘的创建,下面我们将讲述这种方法。
在创建ASM实例之前,首先应该确保节点上已经安装了ASMlib包,同时确认ASMLib是否已经自动加载:
[root@node1 ~]# lsmod | grep oracleasm
oracleasm 46356 1
然后,通过ASMlib提供的oracleasm将已经分区好的磁盘分区转化为ASM磁盘,例如:
[root@node1 ~]#/etc/init.d/oracleasm createdisk ASMDISK1 /dev/sdc5
Marking disk "/dev/sdc5" as an ASM disk [ OK ]
[root@node1 ~]#/etc/init.d/oracleasm createdisk ASMDISK2 /dev/sdc6


3、 管理ASM实例
ASM磁盘创建完毕,可以查看系统的/dev/oracleasm/disks/目录下是否已经生成磁盘设备。可以通过如下命令查看asm磁盘:
[root@node1 ~]# ll /dev/oracleasm/disks/ASMDISK*

也可以用如下方式查看:
[root@node1 ~]#service oracleasm listdisks

如果要删除 ASM磁盘通过以下命令:
[root@node1 ~]#/etc/init.d/oracleasm deletedisk ASMDISK5
Removing ASM disk "ASMdisk5" [ OK ]
在RAC环境中,要注意另外一个节点是否能发现对应的asm disk,执行如下命令,让另外节点来获取这种变化。
[root@node2 ~]#/etc/init.d/oracleasm scandisks


管理ASM实例
(2)初始化参数
启动asm实例只需要如下几个参数即可,并且asm实例的内存会自动分配并自动管理。
下面讲述下ASM实例初始化参数:
instance_type=asm
cluster_database=true
DB_UNIQUE_NAME=+ASM
ASM_POWER_LIMIT=1
large_pool_size=60M
asm_diskgroups='FLASH_DISK','ARCH_DISK','DATA_DISK'
asm_diskstring='/dev/oracleasm/disks/*'
对每个参数的含义解释如下:
 instance_type:指定实例的类型,对于ASM实例,应设置为ASM。
 cluster_database:指定是否是数据库集群,true表示是ASM集群。
 DB_UNIQUE_NAME:指定ASM实例的名称,默认是+ASM。
 ASM_POWER_LIMIT:该参数用来控制ASM中数据的负载均衡速度。
 large_pool_size:设置大池的大小,由于ASM文件的分配单元映射是从LARGE_POOL分配的,因此LARGE_POOL_SIZE至少要8M,建议越大越好。
 asm_diskgroups:指定实例启动时可用的ASM磁盘组,ASM实例将在启动时自动挂载这些磁盘组。
 asm_diskstring:用于限制ASM实例可用于创建磁盘组的磁盘设备。如果该值为NULL,则ASM实例可见的所有磁盘都可以成为创建磁盘组的可选磁盘。

3、 管理ASM实例
(3)创建密码文件
[oracle@node1 ~]$su - oracle
[oracle@node1 ~]$ cd $ORACLE_HOME/dbs
[oracle@node1 ~]$orapwd file=orapw+ASM password=oracle
(4)创建目录结构
[oracle@node 1~]$su – oracle
[oracle@node1 ~]$cd $ORACLE_HOME/dbs
[oracle@node1 ~]$mkdir –p $ORALCE_BASE/admin/+ASM/udump
[oracle@node1 ~]$ mkdir –p $ORALCE_BASE/admin/+ASM/bdump
[oracle@node1 ~]$mkdir –p $ORALCE_BASE/admin/+ASM/adump
[oracle@node1~]$ mkdir –p $ORALCE_BASE/admin/+ASM/cdump

启动ASM实例
无论在RAC环境中还是单实例环境,ASM实例都需要用到CSS进程,在RAC环境中,启动CRS后CSS已经运行,而在单实例环境下,需要以root用户运行脚本,进行初始化CSS服务,否则,在启动ASM实例时会报如下错误:
ORA-29701: unable to connect to Cluster Manager
启动ASM实例:
[oracle@node1 ~]$export ORACLE_SID=+ASM
[oracle@node1 ~]$sqlplus / as sysdba
SQL> startup





「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论