ASM 磁盘、目录的管理

--========================

-- ASM 磁盘、目录的管理

--========================

ASM磁盘是ASM体系结构的重要组成部分,ASM磁盘由ASM实例来定位、管理,本文主要讲述ASM磁盘组、故障组等等。

有关ASM实例及ASM数据库的创建请参考:创建ASM实例及ASM数据库

一、相关概念

1.ASM 磁盘组

ASM存储管理除了ASM实例之外,最大的组成部分就是ASM磁盘组。一个ASM磁盘组由过多个ASM磁盘组成

一个磁盘组内可以存放多个数据文件,一个数据文件仅仅只能位于一个磁盘组内,不能跨磁盘组

多个数据库可以共享相同的或多个磁盘组

磁盘组的冗余类型可以分为三类:标准冗余,高度冗余,外部冗余

对于已创建的磁盘组,不能够更改其冗余级别,如要更改,需要删除该磁盘组后再重新创建

2.ASM 磁盘

ASM磁盘通过标准的OS接口来访问,由Oracle用户来读写,在聚集的所有节点可以被访问

ASM磁盘在不同的节点可以使用不同的名字

ASM磁盘可以使网络文件系统

ASM磁盘上的对象被冗余保护

每一个ASM磁盘的第1块用于定义磁盘的头部信息,ASM磁盘名字编号,创建的时间戳等

ASM文件会均匀分布在一个ASM组内的各个磁盘中

3.ASM 故障组

一个磁盘组可以由两个或多个故障组组成

一个故障组由一个或多个ASM磁盘组成

故障组提供了共享相同资源的冗余,我们可以这样来理解标准冗余

假定有磁盘组DG1,且创建了两个故障组fgroup1,fgroup2,每个故障组由2个ASM磁盘组成,则对标准冗余而言,两个故障组互为镜像

failgroup1  --> asmdiskA , asmdiskB

failgroup2  --> asmdiskC , asmdiskD

假定文件datafileA大小为4MB,则4个extent均匀分布到asmdiskA,asmdiskB,同样asmdiskC,asmdiskD也包含该文件的1至4个extent

即只要有一个extent在故障组fgroup1中存在,必定有一个镜像的extent存在于fgroup2中,反之亦然,两个extent互为镜像。

当一个故障组中的某个磁盘损坏,假定为asmdiskA ,则asmdiskA中原来保存的extent将会从failgroup2中复制到asmdiskB中。

总之,故障组failgroup1和failgroup2必定有相同的extent副本

标准冗余至少需要2个故障组,高度冗余则至少需要3个故障组。事实上对于未明确指定故障组的情况下,一个标准冗余至少需要2个

asm磁盘,而高度冗余至少需要3个asm磁盘

4.分配单元

ASM磁盘的最小粒度是分配单元,大小默认是1M,也可设置为128K进行细粒度访问

支持粗粒度和细粒度分配单元进行读写来实现装载平衡和减少延迟

ASM文件由一些分配单元的集合组成

5.ASM 文件

对Oracle自身而言,实际上与标准的文件并没有太多区别

ASM文件一般位于磁盘组内创建的子目录内,磁盘组以加号开头,相当于Linux系统的根目录

如+DG1/oradb/datafile/system.258.346542

ASM可以为控制文件,数据文件,联机日志文件,参数文件,归档日志,备份等

不支持trace文件,可执行文件,OCR,Votingdisk等,注:Oracle 11g R2可支持

使用extent maps来记录文件到磁盘的映射

6.I/O分布

可以使用条带化和镜像来保护数据

文件被平均分布在一个组内的所有磁盘中

磁盘的添加与删除,ASM会自动重新分配AU,因此也不存在碎片的问题

将I/O分配到不同的磁盘控制器提高了读写数据

7.Rebalance

ASM 文件被均衡地分布在一个磁盘组的所有磁盘中

磁盘添加时,当前磁盘组加载的所有磁盘中共享的部分extent将会被移植到新的磁盘中,直到重新分布完成才正常提供I/O均衡

磁盘删除或故障时,删除磁盘或故障磁盘的extent将会被均匀的分布到剩余的磁盘中

未使用force关键字drop磁盘操作,该磁盘上所有数据rebalance完毕后才被释放.即完毕后磁盘脱机,置磁盘头部状态为former

总之,任意存储性质改变(磁盘增加,删除,故障)都将导致rebalance,且由asm自动完成,无需人工干预,在一个时间段通常会锁定一个盘区

8.ASM磁盘组的管理

通常建议创建两个磁盘组,一个用于保存数据文件,一个用于保存闪回,备份恢复使用

Flash Recovery Area 的大小取决于闪回内容需要保留的时间长短

尽可能将数据区与闪回区使用不同的物理通道

尽可能一次性mount所有需要用到的磁盘

建议使用性能,磁盘大小相近的磁盘。假定两个故障组FG1,FG2各使用一块磁盘,则FG1内的磁盘应保持与FG2内的磁盘大小相同,

否则会以最小的磁盘空间作为可使用空间

9.ASM磁盘组的管理方式

SQLPlus

OEM

DBCA

ASMCMD

二、ASM磁盘创建及管理

1.查看ASM配置磁盘搜索信息

SQL> show parameter instance_type

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_type                        string      ASM

SQL> show parameter asm_diskst

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

asm_diskstring                       string      /dev/oracleasm/disks/VOL*

2.使用oracleasm创建磁盘

[[email protected] ~]#  /etc/init.d/oracleasm createdisk VOL1 /dev/sdd1

Marking disk "VOL1" as an ASM disk: [  OK  ]

[[email protected] ~]#  /etc/init.d/oracleasm createdisk VOL2 /dev/sdd2

Marking disk "VOL2" as an ASM disk: [  OK  ]

[[email protected] ~]#  /etc/init.d/oracleasm createdisk VOL3 /dev/sde1

Marking disk "VOL3" as an ASM disk: [  OK  ]

[[email protected] ~]#  /etc/init.d/oracleasm createdisk VOL4 /dev/sde2

Marking disk "VOL4" as an ASM disk: [  OK  ]

[[email protected] ~]#  /etc/init.d/oracleasm listdisks

VOL1

VOL2

VOL3

VOL4

3.创建磁盘组语法

CREATE DISKGROUP diskgroup_name

[ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ]

[ FAILGROUP failgroup_name ]

DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...;

4.创建磁盘组

SQL> create diskgroup DG1 normal redundancy disk ‘/dev/oracleasm/disks/VOL1‘ name VOL1;

create diskgroup DG1 normal redundancy disk ‘/dev/oracleasm/disks/VOL1‘ name VOL1

*

ERROR at line 1:

ORA-15018: diskgroup cannot be created    --标准冗余至少需要两块磁盘

ORA-15072: command requires at least 2 failure groups, discovered only 1

SQL> create diskgroup DG1 normal redundancy

2  disk ‘/dev/oracleasm/disks/VOL1‘ name DG1_VOL1 ,‘/dev/oracleasm/disks/VOL2‘ name DG1_VOL2;

SQL> create diskgroup DG2 normal redundancy                            --使用标准冗余创建磁盘组DG2

2  failgroup FG1 disk ‘/dev/oracleasm/disks/VOL3‘ name DG2_FG1_VOL3

3  failgroup FG2 disk ‘/dev/oracleasm/disks/VOL4‘ name DG2_FG2_VOL4;

SQL> create diskgroup DG_ext external redundancy disk ‘/dev/oracleasm/disks/VOL10‘ name DG_ext_VOL10; --外部冗余

SQL> select group_number gno,name,state,type,total_mb,free_mb,   --查看创建的磁盘组

2  required_mirror_free_mb rmfmb,usable_file_mb ufmb

3  from v$asm_diskgroup;

GNO NAME            STATE       TYPE     TOTAL_MB    FREE_MB      RMFMB       UFMB

---------- --------------- ----------- ------ ---------- ---------- ---------- ----------

1 DG1             MOUNTED     NORMAL       3066       2964          0       1482

2 DG2             MOUNTED     NORMAL       3066       2964          0       1482

3 DG_EXT          MOUNTED     EXTERN        100         50          0         50

SQL> select group_number gno,name,failgroup fgno,state,total_mb,free_mb,header_status from v$asm_disk;

GNO NAME            FGNO            STATE      TOTAL_MB    FREE_MB HEADER_STATU

---------- --------------- --------------- -------- ---------- ---------- ------------

2 DG2_FG2_VOL4    FG2             NORMAL         1537       1486 MEMBER

2 DG2_FG1_VOL3    FG1             NORMAL         1529       1478 MEMBER

1 DG1_VOL2        DG1_VOL2        NORMAL         1537       1486 MEMBER

1 DG1_VOL1        DG1_VOL1        NORMAL         1529       1478 MEMBER

3 DG_EXT_VOL10    DG_EXT_VOL10    NORMAL          100         50 MEMBER

5.磁盘组添加故障组和成员

--为非故障组添加成员

SQL> alter diskgroup DG1 add disk ‘/dev/oracleasm/disks/VOL5‘ name DG1_VOL5;

--为DG2添加一个故障组FG3及成员

SQL> alter diskgroup DG2

2  add failgroup FG3 disk ‘/dev/oracleasm/disks/VOL6‘ name DG2_FG3_VOL6;  --添加故障组及成员

--为DG2的个故障组各添加一个成员

SQL> alter diskgroup DG2

2  add failgroup FG1 disk ‘/dev/oracleasm/disks/VOL7‘

3  add failgroup FG2 disk ‘/dev/oracleasm/disks/VOL8‘

4  add failgroup FG3 disk ‘/dev/oracleasm/disks/VOL9‘;

6.删除磁盘组中的磁盘,故障组中的成员,磁盘组

SQL> alter diskgroup DG1 drop disk DG1_VOL5;   --删除磁盘组DG1中的磁盘VOL5

SQL> alter diskgroup DG2 drop disk DG2_0003;  --删除故障组中的单个成员

SQL> alter diskgroup DG2 drop disks in failgroup FG3;  --删除故障组及所有成员,注意此时为drop disks 复数形式

SQL> alter diskgroup DG1 drop disk DG1_VOL4            --删除磁盘组中的磁盘,同时添加故障组FG3

add failgroup FG3 disk ‘/dev/oracleasm/disks/VOL9‘ name DG1_VOL11;

SQL> drop diskgroup DG1;    --删除磁盘组

7.调整磁盘组的容量

----故障组FG3的容量将被调整到G,如果磁盘空间不足,则调整失败

SQL> alter diskgroup DG2  resize disks in failgroup FG3 size 10G;

8.手动Rebalance

SQL> alter diskgroup DG2 rebalance power 3 wait;

9.磁盘组的加载与卸载及内部一致性检查

SQL> alter diskgroup all dismount;

SQL> alter diskgroup DG2 mount;

SQL> alter diskgroup DG2 check all;

10.查看磁盘组的partner

SQL>  select name,state,type from v$asm_diskgroup where group_number=3;   --查看磁盘组DG3的信息

NAME            STATE       TYPE

--------------- ----------- ------

DG3             MOUNTED     NORMAL

SQL> select grp,disk,number_kfdpartner from x$kfdpartner where grp=3;

GRP       DISK NUMBER_KFDPARTNER

---------- ---------- -----------------

3          0                 1        --磁盘组DG3使用了3个磁盘,且冗余度为标准冗余

3          0                 2        --磁盘组0的partner 为磁盘组1,2

3          1                 0        --磁盘组1的partner 为磁盘组0,2

3          1                 2

3          2                 0        --磁盘组2的partner 为磁盘组0,1

3          2                 1

三、磁盘组中目录、文件的管理

1.为磁盘组增加目录

SQL> alter diskgroup DG2 add directory ‘+DG2/datafile‘;                      --为磁盘组增加目录

SQL> alter diskgroup DG2 rename directory ‘+DG2/datafile‘ to ‘+DG2/dtfile‘;  --重命名目录

SQL> alter diskgroup DG2 drop directory ‘+DG2/dtfile‘;                       --删除目录

SQL> alter diskgroup DG2 add directory ‘+DG2/asmdb/datafile‘;   --为磁盘组增加目录

alter diskgroup DG2 add directory ‘+DG2/asmdb/datafile‘

*

ERROR at line 1:

ORA-15032: not all alterations performed

ORA-15173: entry ‘asmdb‘ does not exist in directory ‘/ ‘       --收到错误提示,asmdb目录不存在,必须要先创建

SQL> alter diskgroup DG2 add directory ‘+DG2/asmdb/‘;           --首先添加asmdb

SQL> alter diskgroup DG2 add directory ‘+DG2/asmdb/datafile‘;   --再次添加目录成功

2.为文件添加别名,重命名别名

SQL> alter diskgroup DG1 add alias ‘+DG1/asmdb/datafile/users.dbf‘   --添加别名

2  for ‘+DG1/asmdb/datafile/users.263.734885485‘ ;

SQL> select name,group_number,file_number,alias_index,alias_directory,system_created

2  from v$asm_alias where file_number=263;

NAME                      GROUP_NUMBER FILE_NUMBER ALIAS_INDEX A S

------------------------- ------------ ----------- ----------- - -

USERS.263.734885485                 1         263          215 N Y

users.dbf                           1         263          216 N N

SQL> alter diskgroup DG1 rename alias ‘+DG1/asmdb/datafile/users.dbf‘   --重命名一个别名

2  to ‘+DG1/asmdb/datafile/users01.dbf‘;

SQL> select name,group_number,file_number,alias_index,alias_directory,system_created

2  from v$asm_alias where file_number=263;

NAME                      GROUP_NUMBER FILE_NUMBER ALIAS_INDEX A S

------------------------- ------------ ----------- ----------- - -

USERS.263.734885485                 1         263          215 N Y

users01.dbf                         1         263          216 N N

3.为文件删除别名

SQL> alter diskgroup DG1 drop alias ‘+DG1/asmdb/datafile/users01.dbf‘;

四、TEMPLATE的管理

TEMPLATE是一个模板,为数据库中新增的文件定义了缺省分配单元大小,以及冗余级别。对于不同类型的文件,使用了不同的AUs以及

不同的冗余度。如对控制文件采用高度冗余,条带使用精细化条带(128kb),而参数文件,数据文件则采用标准冗余,粗级别条带(1MB)。

这个特性正是Oracle asm 管理不同于外部冗余的特性,即可以基于文件的不同属性而使用不同级别的冗余度和不同大小的条带化分配单

元。当然,我们可以根据不同的需求来修改该模板,使得创建新的文件时根据需要来应用其冗余和条带花特性。系统管理人员能改变系统缺

省template, 但不能删除该删除,管理员能增加自己的template,然后在该模板上创建数据文件。

下面是缺省情况下DG1中新增文件所使用的缺省的条带化及其冗余级别

SQL> select * from v$asm_template where group_number=1;

GROUP_NUMBER ENTRY_NUMBER REDUND STRIPE S NAME

------------ ------------ ------ ------ - -----------------------------------

1            0 MIRROR COARSE Y PARAMETERFILE

1            1 MIRROR COARSE Y DUMPSET

1            2 HIGH   FINE   Y CONTROLFILE

1            3 MIRROR COARSE Y ARCHIVELOG

1            4 MIRROR FINE   Y ONLINELOG

1            5 MIRROR COARSE Y DATAFILE

1            6 MIRROR COARSE Y TEMPFILE

1            7 MIRROR COARSE Y BACKUPSET

1            8 MIRROR COARSE Y AUTOBACKUP

1            9 MIRROR COARSE Y XTRANSPORT

1           10 MIRROR COARSE Y CHANGETRACKING

1           11 MIRROR FINE   Y FLASHBACK

1           12 MIRROR COARSE Y DATAGUARDCONFIG

1.创建TEMPLATE的语法

ALTER DISKGROUP disk_group_name ADD TEMPLATE template_name

ATTRIBUTES ([{MIRROR|HIGH|UNPROTECTED}] [{FINE|COARSE}]);

2.添加TEMPLATE

SQL> alter diskgroup DG1 add template template_one attributes (high fine);

SQL> alter diskgroup DG1 add template template_two attributes (unprotected);

3.修改已存在的TEMPLATE

SQL> alter diskgroup DG1 alter template template_one attributes (coarse);

4.删除TEMPLATE

SQL> alter diskgroup DG1 drop template template_two;

5.基于模板创建数据文件

SQL> create tablespace test datafile ‘+DG1/asmdb/datafile/test.dbf(template_one)‘ size 10M;

6.查看当前系统中文件使用的模板

SQL> select name,redundancy,striped

2  from v$asm_alias a join v$asm_file b

3  on a.file_number=b.file_number

4  and a.group_number=b.group_number

5  order by name;

NAME                                REDUND STRIPE

----------------------------------- ------ ------

Current.256.734885363               HIGH   FINE

SYSAUX.260.736463679                MIRROR COARSE

TBS_RMAN.265.735409761              MIRROR COARSE

TEMP.262.734885475                  MIRROR COARSE

SYSTEM.259.734885389                MIRROR COARSE

五、使用OMF 创建ASM文件涉及的一些参数

DB_CREATE_FILE_DEST           --Oracle创建数据文件、临时文件时,在未明确指定路径的情况下的缺省路径

--当db_create_online_log_dest_n未指定时,也作为联机日志文件和控制文件的缺省路径

DB_CREATE_ONLINE_LOG_DEST_n   --Oracle创建联机日志文件和控制文件时,在未明确指定路径的情况下的缺省路径

DB_RECOVERY_FILE_DEST         --适用于rman, archivelog,onlinelog

CONTROL_FILES

LOG_ARCHIVE_DEST_n

LOG_ARCHIVE_DEST

STANDBY_ARCHIVE_DEST

查看OMF相关参数的设置

SQL> show parameter db_reco

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      +RECOVERYDEST

db_recovery_file_dest_size           big integer 1500M

SQL> show parameter db_create

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_create_file_dest                  string      +DG1

有关OMF请参考:Oralce OMF 功能详解

六、ASM 磁盘的相关视图

v$asm_disk(_stat)       --查看磁盘及其状态信息

v$asm_diskgroup(_stat)  --查看磁盘组及其状态信息

v$asm_operation         --查看当前磁盘的操作信息

v$asm_client            --返回当前连接的客户端实例信息

v$asm_file              --返回asm文件的相关信息

v$asm_template          --返回asm文件样本的相关信息

v$asm_alias             --返回asm文件的别名信息

转:http://blog.csdn.net/leshami/article/details/6134071

时间: 2024-11-07 15:52:52

ASM 磁盘、目录的管理的相关文章

linux分区,磁盘系统的管理,文件系统制作

最近又开始重新拾起linux了,因为工作中用的很少,所以看得东西很容易就忘记了. 这几天看了下linux的分区,以及如何制作文件系统等相关命令的用法,下面就按照这个流程来讲一讲,免得自己日后忘记了. 1.分区 磁盘分区,即指定分区的起始和结束柱面.我们在安装linux系统的时候,都会将磁盘划分为独立的几块,这就是分区,柱面是分区的最小单位,柱面由扇区构成,第一个扇区是最重要的,里面有MBR(446byte)和分区表(64byte),扇区大小固定为512byte. 2.文件系统 文件系统是怎么来的

用户/磁盘/内存/网络 管理

用户管理 一些细节 root 用户为根用户,也就是 系统管理员 拥有全部权限 一个用户只能拥有一个 GID ,但是还可以归属于其它附加群组 用户管理的重要配置文件: /etc/passwd 用户名 密码位 UID 归属GID 姓名 $HOME目录 登录Shell /etc/shadow 用户名 已加密密码 密码改动信息 密码策略 /etc/group 群组名 密码位 GID 组内用户 /etc/gshadow 群组密码相关文件,不重要 /etc/sudoers 用户名 权限定义 权限 可以使用

Ubuntu 查看文件以及磁盘空间大小管理

Ubuntu 查看文件以及磁盘空间大小管理 (1)查看文件大小 查看当前文件夹下所有文件大小(包括子文件夹) du -sh # du -h15M     ./package16K     ./.fontconfig4.0K    ./.cache5.1M    ./.rpmdb20M     . 查看指定文件夹下所有文件大小(包括子文件夹) # du -h ftp3.8G    ftp/sanya/doc3.8G    ftp/sanya4.0K    ftp/testftp/doc1.4M  

11G ORACLE RAC DBCA 无法识别asm磁盘组

ASM磁盘无法识别几种现象: 1) gi家目录或者其子目录权限错误 2)asm磁盘的权限错误 3)asm实例未启动或者asm磁盘组没有mount上 4)asm磁盘组资源没有在线 5)oracle用户的权限错误 6)oracle($ORACLE_HOME/bin)可执行文件的权限错误 OK,那我就按照上面的分析结果进行逐一排查: 1) gi家目录或者其子目录权限错误 [[email protected] ~]# ls -ld /u01/app/11.2.0/grid/drwxr-x--- 66 r

Linux管理磁盘及LVM管理

LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上,文件系统之下的一个逻辑层,在建立文件系统时屏蔽下层的磁盘分区布局,能够保持现有数据不变的情况下动态调整磁盘容量,提高磁盘灵活性 在虚拟机中安装一块新硬盘,大小为8G fdisk -l 识别系统中的磁盘设备 [[email protected] ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 26

计算机操作系统学习笔记_11_文件管理 --磁盘组织与管理

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { fon

ORACLE 11G RAC ASM磁盘组全部丢失后的恢复

一.环境描述(1)Oracle 11.2.0.3 RAC ON Oracle Linux 6 x86_64,只有一个ASM外部冗余磁盘组--DATA:(2)OCR,VOTEDISK,DATAFILE,CONTROLFILE,SPFILE全部位于这个磁盘组上:二.故障描述(1)存储故障导致ASM磁盘丢失.(2)CRS因为OCR和VOTEDISK的丢失,除了OHAS还联机外,CLUSTERWARE服务都已经停止.三.备份情况(1)RMAN备份:包括controlfile,database,spfil

AIX使用LV创建ASM磁盘组

纠结啊为毛感觉只过了一天,就有两天没写了,今天晚上的机票离开上海.希望小叶子不会难为我. 昨晚研究了一下插卡小哥的业务流程,发现他并不是每个房间都插的,时间在每晚的9点到11点之间.估计是会在周边每个宾馆巡回一遍,插广告的房间有两种可能,第一种就是他们和宾馆沆瀣一气,知道哪个房间有人,第二种可能就是他们只给大床房的房间发,7天没有单间所以单身旅客一般会选择大床房,这绝对是优质潜在用户哇. 晚上看了个 正者无敌 还挺好看的样子,里面男主娶了3房姨太太,不错不错~ 晚上做了个梦,醒来后还是格外清晰,

通用报文解析服务的演进之路(基于磁盘目录的分布式消息消费者服务)之一

通用报文解析服务,用C#开发,经历了三版更新,支撑起了关区内的绝大多数数据交换业务,截止至今,每日收发报文约20万,数据量约5G,平均延迟在1分钟内. 回想起那些半夜处理积压报文的场景,不胜唏嘘,决定把这个演进过程向大家讲述一下.回顾历史,展望未来,如果能给大家一些启发,是再好不过的了. 由于某些历史和非历史原因,我们的数据交换在已经有IBMMQ等中间件做支撑的情况下,还需要将报文落地到磁盘目录下再做下一步解析.入库.因此就有了这么一个需求,基于磁盘目录的报文解析服务. 初步计划,按照演进过程中