如何验证磁盘/分区是否正在被 Oracle ASM 使用、
如何检查磁盘是否被 Oracle ASM 使用
如何查看磁盘是否从未被 Oracle ASM 使用
下面的小 C 程序我们识别磁盘/分区是否仍在被 ASM 使用、已被 ASM 使用或者未被 ASM 在 Unix 或者 Linux 平台上使用。
- 首先,我们需要编译下面的C代码:
#include <stdio.h>
#include <fcntl.h>
#define BLOCK_SIZE 4096
int main(int argc, char *argv[])
{
char buf[BLOCK_SIZE];
char *fname;
int fd;
int count;
if (argc != 2)
{
fprintf(stderr, "Exactly one argument required\n");
return (-1);
}
fname = argv[1];
fd = open(fname, O_RDONLY);
if (fd < 0)
{
perror(fname);
return (-1);
}
count = read(fd, buf, sizeof(buf));
if (count < 0)
{
perror(fname);
return (-1);
}
if (count < sizeof(buf))
{
return (1);
}
if ( buf[32] == 'O' && buf[33] == 'R' && buf[34] == 'C' && buf[35] == 'L'
&& buf[36] == 'D' && buf[37] == 'I' && buf[38] == 'S' && buf[39] == 'K')
{
if (buf[71] != 4) {
printf("This disk %s still used by ASM\n",argv[1]);
return (0);
}
else
printf("This disk %s has been used by ASM\n",argv[1]);
return (0);
}
printf("This disk %s has not been used by ASM\n",argv[1]);
return (1);
}
- 将上述代码保存为ASCII文件,然后使用C编译器编译如下:
$ ls -rw-r--r-- 1 oracle oinstall 2014 Jun 16 15:57 checkasmdisk.c
$ cc checkasmdisk.c -o checkasmdisk
$ ls -rwxr-xr-x 1 oracle oinstall 5670 Jun 16 15:57 checkasmdisk -rw-r--r-- 1 oracle oinstall 2014 Jun 16 15:57 checkasmdisk.c
- 用编译好的脚本检查所需的磁盘。
作为脚本的结果,我们可以获得如下所示的 4 个状态:
1.磁盘没有被ASM使用过
Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> !dd if=/dev/zero of=/dev/sda14 bs=8192 count=12800 12800+0 records in 12800+0 records out SQL> !checkasmdisk /dev/sda14 This disk /dev/sda14 has not been used by ASM
2.磁盘仍然被ASM使用
SQL> create diskgroup DATADG external redundancy disk '/dev/sda14'; Diskgroup created. SQL> !checkasmdisk /dev/sda14 This disk /dev/sda14 still used by ASM
3.磁盘已被ASM使用
SQL> drop diskgroup DATADG; Diskgroup dropped. SQL> !checkasmdisk /dev/sda14 This disk /dev/sda14 has been used by ASM
4.磁盘无法访问
# ls -l /dev/sda14 brw-rw---- 1 oracle dba 8, 14 Jun 11 19:12 /dev/sda14 # chown root:disk /dev/sda14 # ls -l /dev/sda14 brw-rw---- 1 root disk 8, 14 Jun 11 19:12 /dev/sda14 SQL> !checkasmdisk /dev/sda14 /dev/sda14: Permission denied brw-rw---- 1 root disk 8, 14 Jun 11 19:12 /dev/sda14
日期:2020-09-17 00:13:15 来源:oir作者:oir
