技术开发 频道

管理Oracle RAC中的存储

    6、ASM管理——ASM file

    ASM file是存储在ASM disk groups中的Database files。当一个文件被创建,某些file属性被永久的设定。这些属性是它的保护策略和striping策略。

    ASM files是oracle-managed files。任何由ASM创建的file,在其不被需要时,就会被自动删除。然而,那些被user指定了alias的ASM files不认为是oracle-managed file,将不会被自动的删除。

    当ASM 创建一个data file用于永久的tablespace(或是临时file用于临时tablespace),data file被设置为可自动增长到无限的、size为100MB的。一个AUTOEXTEND子句可以覆盖此默认设置。

    在Database必须创建新的file的所有情况允许指定disk group自动产生一个唯一的文件名。

    对于ASM,file操作是通过Database objects指定的。对数据库的管理是无需知道file name的,尽管这些文件名是可以通过查询某些data dictionary 视图或是通过backup controlfile获得的。

    因为每个file在物理上是被分配到disk group上的所有disks上的,对一个disk的backup是无用的。对ASM files的Database backup必须通过RMAN。

    1)ASM file name

    ASM file name有六种不同的形式,分别适合于不同的使用环境。

    三种使用环境是:

    *  引用一个已经存在的file
    *  一个将要被创建的file
    *  多个将要被创建的files

    具体情况使用的file name形式如下图:

    图中六中file name的语法如下:

    ①fully qualified ASM file names:主要用于已经存在的ASM files。具体形式:

    +<group>/<dbname>/<file_type>/<tag>.<file#>.<incarnation#>

    其中:

    <group> 是disk group的name
    <dbname> 是file所属的Database的name
    <file_type> 是oracle 的文件类型(CONTROLFILE,DATAFILE等)
    <tag> 关于file的特定类型信息(例如data file的tablespace名)
    <file>.<incarnation> 是file/incarnation 号码对,是唯一的

    一个具体的实例为:+dgroupA/db1/controlfile/CF.257.8675309

    fully qualified name是为在文件创建时为每个ASM file自动生成的。这些names可以在与alias names相同的等级的目录结构中找到。所有在name中的信息都是ASM自动派生出来的。它也可被称为是系统alias,表明此name是由ASM创建并维护的。终端用户不能对其进行修改。

    ②number ASM file names:用于引用已经存在的ASM file。具体形式:

    +<group>.<file#>.<incarnation#>

    此name不会出现在ASM的目录中。它们是从fully qualified name中派生出来的。ASM不会提供此类name的report,但此类name可以被用于许多需要使用已存在的file的接口中。具体实例:+dgroupA.257.8675309

    ③alias ASM file name:即可用于指引已经存在的ASM file,也可用于创建新的ASM file。具体形式:

    +<group>/<diretory1>/…/<directoryn>/<file_name>

    alias names不同于fully qualified 或是numberic name,不含有以“.”间隔的数据对结尾。它便于用户人性化的引用file。它是通过/分隔的层级目录结构组成的。file_name是UTF-8格式的,最长为48 bytes,不可含有/。整个alias file name不可超过256 bytes。

    每个ASM file在创建时都会根据其属性为其创建一个fully qualified name。管理员可以在创建file时,为其添加一个alias name,或是通过ALTER DISKGROUP ADD ALIAS命令为已经存在的file创建一个alias。alias ASM file name一般会在CONTROL_FILES中的初始化参数中使用。

    ④alias ASM file names with templates:只能用于ASM的创建操作。这里template(模版)name请见后续的部分介绍。具体形式:

    +<group>/<directiory1>/…/<directoryn>/<file_name>(<temp>)

    ⑤incomplete ASM file names:只用于文件的创建操作。ASM通过其文件类型,使用默认的template为Incomplete ASM file names定义name。具体形式:

    +<group>

    ⑥Inomplete ASM file names with template:也只用与文件的创建操作。使用指导的template为ASM file创建name。具体形式:

    +<group>(<temp>)
    
    2)ASM file name的映射

    ASM支持Database所需的绝大多数file类型。每个文件类型都关联一个相应的模板template。上表显示了ASM所支持的文件类型和它们相应的命名约定。ASM应用在创建是指明的文件属性选用相应的默认模板。

    3)ASM file 模板(template)

    它是在创建文件时使用的用于命名的文件属性的集合。template通过将复杂的文件属性映射到指定的简单的name上来简化file的创建工作。在应用于files上时,template是与disk group相关联的。

    当创建disk group时,ASM会建立初始的系统默认template集合,这是与disk group相关联的。这些template为oracle Database各种文件类型包含了默认的属性。管理员可以改变默认template的属性。此外,管理员可以添加自己的template。但是系统默认的template是不能被删除的。

    如果需要改变一个已经被创建的文件的属性,则此文件必须通过RMAN拷贝到新的具有新属性的文件中。这是改变文件属性的唯一方法。

    依赖disk group冗余特征的定义,系统template被创建如下表:

    当定义或是修改template时,可以指明files是否被镜像。也可指明被创建的files是细粒度还是粗粒度的被striped。

    note:对于ASM 元数据文件的冗余和striping方式是由ASM预先定义的,是不能改变的。

    4)一些template和alias的实例

    ALTER DISKGROUP dgroupA ADD TEMPLATE reliable ATTRIBUTES (MIRROR);
    #创建dgroupA上的template —— reliable,它是two-way镜像的
    ALTER DISKGROUP dgroupA DROP TEMPLATE reliable;
    #删除template reliable
    ALTER DISKGROUP dgroupA DROP FILE ‘+dgroupA.268.8675309′;
    #从disk group中删除指定的file
    ALTER DISKGROUP dgroupA ADD DIRECTORY ‘+dgroupA/mydir’;
    #创建user的目录MYDIR
    ALTER DISKGROUP dgroupA ADD ALIAS ‘+dgroupA/mydir/datafile.dbf’ FOR ‘+dgroupA.274.38745′;
    #为指定的文件创建alias name
    ALTER DISKGROUP dgroupA DROP ALIAS ‘+dgroupA/mydir/datafile.dbf’;
#删除相应的alias name

    5)aliases的获取

    SELECT reference_index INTO :alias_id FROM V$ASM_ALIAS WHERE name = ‘+dgroupA’;
    SELECT reference_index INTO :alias_id FROM V$ASM_ALIAS WHERE parent_index = :alias_id AND name = ‘mydir’;
    SELECT name FROM V$ASM_ALIAS WHERE parent_index = :alias_id;
    通过上面的三条sql,可以获得+dgroupA/mydir路径下的files的alias

    7、Database Instance parameter 的改变

    主要有:

    INSTANCE_TYPE = RDBMS  –默认是RDBMS

    LOG_ARCHIVE_FORMAT  –如果参数LOG_ARCHIVE_DEST被设置为一个不完整的ASM file name(如+dGroupA)此参数的设置将被忽略;如果LOG_ARCHIVE_DEST被设置为ASM 目录(如 +dGroupA/myarchlogdir/)则LOG_ARCHIVE_FORMAT将被使用并且文件时non-OMF的。归档日志的唯一的file name将由oracle Database自动被创建。

    DB_BLOCK_SIZE  –必须被设置为标准block size之一(2KB、4KB、8KB、16KB、32KB),不支持非标准的block size

    下面的参数可以接受multifile creation context form的ASM file names的值

    DB_CREATE_ONLINE_DEST_n
    DB_CREATE_FILE_DEST_n
    DB_RECOVERY_FILE_DEST
    CONTROL_FILES
    LOG_ARCHIVE_DEST_n
    LOG_ARCHIVE_DEST
    STANDBY_ARCHIVE_DEST

    此外,SGA相关参数需要做稍微的修改,以支持ASM AUs映射和ASM的其他信息。主要注意如下:

    *  至少增大600KB的LARGE_POOL_SIZE,并且该值至少为8MB

    *  为了存储AU maps,需要增加额外的shared pool 。通过下面的查询语句获得当前Database 存储 size(DB_SPACE),Database要么是已经在ASM上,或是将要在ASM上。随后确定冗余的类型,增加相应的shared pool size。

    SELECT d+l+t DB_SPACE
    FROM (SELECT SUM(bytes)/(1024*1024*1024) d FROM v$datafile),
    (SELECT SUM(bytes)/(1024*1024*1024) l FROM v$logfile a, v$log b WHERE a.group#=b.group#),
    (SELECT SUM(bytes)/(1024*1024*1024) t FROM v$tempfile WHERE status=’ONLINE’);

    对于使用external 冗余的disk groups:每100GB空间,需要1MB额外的shared pool,再加上固定的2MB的shared pool需求

    对于normal redundancy:每50GB空间需要1MB额外的shared pool,再加上固定的4MB的shared pool需求

    对于使用high redundancy的情况:每33GB空间需要1MB额外的shared pool,再加上固定的6MB的shared pool需求

    *  为PROCESSES初始化参数的设置至少增加16

    如果是使用自动内存管理(AMM)特性,则上述data的sizing可以进作为信息对待,或是追加SGA的最好值。oracle公司强烈推荐使用AMM。



  

0
相关文章