etl2007 发表于 2015-2-6 19:20:18

感觉ASM_DISKSTRING没有什么用啊?

按照Oracle官方文档的说法


Default value

The null string; Automatic Storage Management discovery finds all disks in an operating system-specific location to which the Automatic Storage Management instance has read/write access.

ASM_DISKSTRING specifies an operating system-dependent value used by Automatic Storage Management to limit the set of disks considered for discovery. When a new disk is added to a disk group, each Automatic Storage Management instance that has the disk group mounted must be able to discover the new disk using the value of ASM_DISKSTRING.

In most cases, the default value will be sufficient. Using a more restrictive value may reduce the time required for Automatic Storage Management to perform discovery, and thus improve disk group mount time or the time for adding a disk to a disk group. A "?" at the beginning of the string gets expanded to the Oracle home directory. Depending on the operating system, wildcard characters can be used. It may be necessary to dynamically change ASM_DISKSTRING before adding a disk so that the new disk will be discovered.

An attempt to dynamically modify ASM_DISKSTRING will be rejected and the old value retained if the new value cannot be used to discover a disk that is in a disk group that is already mounted.


他这个说法看似有道理,但是以我当前环境为例
SQL> select  path from v$asm_disk;

PATH
--------------------------------------------------------------------------------
/dev/diskgroup/dg_backup
/dev/diskgroup/dg_index
/dev/diskgroup/dg_data
/dev/diskgroup/dg_ora

如果新加一个disk
用命令 直接 指定“ALTER DISKGROUP DATA5 ADD DISK /dev/diskgroup/dg_testXXX” 这样就好了

何必单独 定义这样一个ASM_DISKSTRING,去发现对应的DISK呢?
用path出来的结果不就自然发现了吗?

Liu Maclean(刘相兵 发表于 2015-2-7 00:17:03

那asm启动时 到哪里去找合适的asm disk呢? 没有这个参数 的话 他只能到几个默认的地方去找

etl2007 发表于 2015-2-7 12:59:50

本帖最后由 etl2007 于 2015-2-7 13:02 编辑

Liu Maclean(刘相兵 发表于 2015-2-7 00:17 static/image/common/back.gif
那asm启动时 到哪里去找合适的asm disk呢? 没有这个参数 的话 他只能到几个默认的地方去找 ...

我还是有些疑问
  ASM instacne完全可以在启动完成后,读取V$ASM_DISK中path字段,不就找到了ASMDISK了吗?而且这是最直接精确的方式啊,用ASM_DISKSTRING 很大程序上还是个模糊匹配啊?

Liu Maclean(刘相兵 发表于 2015-2-8 11:54:45

V$ASM_DISK中的path是平白出来的吗?

etl2007 发表于 2015-2-8 12:17:41

Liu Maclean(刘相兵 发表于 2015-2-8 11:54 static/image/common/back.gif
V$ASM_DISK中的path是平白出来的吗?

这就是我疑惑的地方之一

我通过“ALTER DISKGROUP DATA5 ADD DISK /dev/diskgroup/dg_testXXX” 这样的命令就吧DISK加入的进来了,所以我的理解 V$ASM_DISKSTRING的值完全可以来自 添加磁盘的结果。
不用依赖ASM_DISKSTRING这个参数啊

稍微抬杠扯远一下,我们之前将数据文件添加到表空间,也没有说要提供一个
datafile_string这样参数,需要事先给出哪些路径下面的文件才有资格被作为数据文件加入到表空间中啊。
但是用v$datafile不也是可以查到吗?

Liu Maclean(刘相兵 发表于 2015-2-8 13:12:47

但是用v$datafile不也是可以查到吗?==> 那是因为有控制文件啊

etl2007 发表于 2015-2-9 09:51:28

Liu Maclean(刘相兵 发表于 2015-2-8 13:12 static/image/common/back.gif
但是用v$datafile不也是可以查到吗?==> 那是因为有控制文件啊

这个v$datafile确实我理解不对
这个v$datafile确实我依赖的是控制文件

etl2007 发表于 2015-2-9 09:54:33

Liu Maclean(刘相兵 发表于 2015-2-8 13:12 static/image/common/back.gif
但是用v$datafile不也是可以查到吗?==> 那是因为有控制文件啊

我思考了一下,与其说我不理解ASM_DISKSTRING
不如说我不理解 ASM disk discovery这个机制

按照 这个文档
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmdiskgrps.htm#CHDHDDBE
的说法


While an ASM instance is initialized, ASM discovers and examines the contents of all of the disks that are in the paths that you designated with values in the ASM_DISKSTRING initialization parameter. Disk discovery also occurs when you:

Run the ALTER DISKGROUP...ADD DISK and ALTER DISKGROUP...RESIZE DISK commands


Query the V$ASM_DISKGROUP and V$ASM_DISK views


After ASM successfully discovers a disk, the disk appears in the V$ASM_DISK view. Disks that belong to a disk group, that is, disks that have a disk group name in the disk header, show a status of MEMBER. Disks that were discovered, but that have not yet been assigned to a disk group, have a status of either CANDIDATE or PROVISIONED.




这就是我一直疑惑的地方
就是开始我说
用命令 直接 指定“ALTER DISKGROUP DATA5 ADD DISK /dev/diskgroup/dg_testXXX” 这样就好了
/dev/diskgroup/dg_testXXX这就是一个完整路径,何必还要用
ASM_DISKSTRING=/dev/diskgroup/dg* 这样的参数来约束一把 呢?

Liu Maclean(刘相兵 发表于 2015-2-9 10:49:14

那么 asm从哪里找出来 /dev/diskgroup/dg_testXXX 这个路径?

只有2种做法 , 1:/dev下面全部扫描(但问题是disk甚至可能不在/dev下面),  2: 用一个参数或一个文件指向

etl2007 发表于 2015-2-13 19:22:15

Liu Maclean(刘相兵 发表于 2015-2-9 10:49 static/image/common/back.gif
那么 asm从哪里找出来 /dev/diskgroup/dg_testXXX 这个路径?

只有2种做法 , 1:/dev下面全部扫描(但问 ...

这就是我没有理解 的地方
既然 “/dev/diskgroup/dg_testXXX ” 这是一个直接路径,不就直接指定了这个文件路径,为何还要扫描呢?我们从前给表空间添加数据文件的时候,也没有说先要定义一个datafile_string这样的参数,来指定datafile所在的路径 啊

Liu Maclean(刘相兵 发表于 2015-2-13 20:32:02

既然 “/dev/diskgroup/dg_testXXX ” 这是一个直接路径,不就直接指定了这个文件路径
===》
谁或哪里 指定了 这个文件路径?

etl2007 发表于 2015-2-14 00:22:00

Liu Maclean(刘相兵 发表于 2015-2-13 20:32 static/image/common/back.gif
既然 “/dev/diskgroup/dg_testXXX ” 这是一个直接路径,不就直接指定了这个文件路径
===》
谁或哪里 指定 ...

http://docs.oracle.com/cd/E11882_01/server.112/e18951/asmdiskgrps.htm#CHDBIFGA

基于这个文档
ALTER DISKGROUP data1 ADD DISK   
   '/devices/diska5' NAME diska5,   
   '/devices/diska6' NAME diska6,   
   '/devices/diska7' NAME diska7,   
   '/devices/diska8' NAME diska8;

这个   '/devices/diska5'
            '/devices/diska6'
  '/devices/diska7'
  '/devices/diska8'
不都是完整路径吗?

Liu Maclean(刘相兵 发表于 2015-2-14 20:41:46

ASM 如何知道 有这个 /devices/diska7的, ASM如何知道有/devices这个路径?
页: [1]
查看完整版本: 感觉ASM_DISKSTRING没有什么用啊?