第十篇:ASM中的offline和drop操作
- 格式:pdf
- 大小:104.72 KB
- 文档页数:2
ASM A 管理正做 与 o A自动㈡ASM orac 启动NOMM 与LVMASM 是OMF 理,在底层将做到了“3M 融LVM 的对比oracle 块在它 ASM diskgASM disk ASM file ASM 可以条带动平衡 I/O 以 与RDBMS M 实例和ora cle 实例管理动和停止实例MOUNT:仅 的一个扩展将存储进行自融合”。
同时也它所管理的磁group ∽ ∽ ∽ 带化和镜像磁以删除“热点实例的对比cle 实例都是的是数据库,例的命令也基仅启动实例AS ,通过ASM 我管理。
同时也是向上兼容盘组的磁盘上 VG PVLV磁盘,从而实”。
LVM 不做是由SGA 和一,而ASM 实基本一样。
SM 介和OMF 的结时,ASM 模式容的体现,简上,与LVM 实现了在数据做硬件级别的一堆后台进程实例用于对磁介绍结合,oracle 式下,备份恢简化RAC 中存基本对应。
据库被加载的的容灾,ASM 程构成,但他盘组的管理在上层将数恢复只能由r 存储端的配置的情况下添加可以实现硬他们所面对的。
数据文件进行rman 来承担置。
加或移除磁盘硬件级别的容的对象是不同行自我担,真盘以及容灾。
的,MOUNT 、OPEN:启动实例并加载磁盘,注意加载的是磁盘组,OPEN选项对于ASM实例无意义,等同于MOUNTFORCE :相当于先执行shutdown abort,然后再startup。
但是,ASM 实例没有数据字典之类的东东存储用户系统。
ASM实例的初始化参数ASM实例的初始化参数形式上与RDBMS实例相同,也有pfile和spfile,如:spfile+ASM1.ora. 但是,毕竟,ASM只有实例,而且加载的是磁盘组,所以相对RDBMS实例的初始化参数要简单。
ASM 需要的内存不多:对大多数系统,只需 64 MB。
因此内存这块相关参数就不说了。
下面说说几个ASM实例特别需要的参数。
㈠INSTANCE_TYPE> show parameter instance_typeNAME TYPE VALUE‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐ instance_type string asm初始化参数文件中的INSTANCE_TYPE,该参数必须被设置为ASM,标识要启动的实例是ASM,而不是rdbms实例.㈡ ASM_DISKSTRING> show parameter asm_diskstringNAME TYPE VALUE‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐asm_diskstring string设置ASM启动时检查的磁盘,该选项可以同时指定多个值,并且支持通配符。
ASM详解ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成,也可以通过sqlplus 工具来维护。
ASM 实例的创建和删除也可以用DBCA 这个命令来操作。
在dbca 的第一个界面选择配置自动存储管理就可以了。
ASM 实例需要CSS 进程,如果是非RAC 环境,在启动ASM 实例之前会提示用脚本$ORACLE_HOME/bin/localconfig add 启动CSS。
1. ASM 实例由SGA 和后台进程组成。
1.1 SGA 组成:ASM 实例的SGA包括Buffer Cache, Share Pool, Large Pool等。
需要注意的是Share Pool,因为Extent Map 要放在这部分的内存中,需要更具数据量来估计Extent Map 的大小做相应的调整。
Extent Map 的大小可以根据所有文件大小的和来估算,使用下面的语句来计算所有文件和:Select sum(bytes)/(1024*1024*1024) from v$datafile;Select sum(bytes)/(1024*1024*1024) from v$logfile a, v$log b where a.Group#=b.Group#;Select sum(bytes)/(1024*1024*1024) from v$tempfile where status='online';这3个sum 的总和对应着数据库存放ASM中所有文件大小总和,对于使用External Redundancy 的磁盘组,每100G 需要1MB 的Extent Map,根据这个比例计算Extent Map 所需要的空间,在加上额外的2M B就可以了。
在实际工作中一般不需要考虑ASM SGA的配置,使用Oracle 提供的缺省值就可以了。
oracleasm磁盘管理基础篇(一)今天是2014-02-27,从今天开始准备记录一系列的asm笔记。
在此记录一下。
(一)asm常见参数:和database实例一样,asm同样具有启动实例的相关参数,具体如下:asm_diskgroups:指定asm实例启动的时候需要mount的disk group名字:asm_disktsring :指定一个asm实例寻找磁盘的路径名可以有通配符。
asm_power_limit:指定在磁盘组中平衡数据的时候默认的power 大小。
asm_preferred_read_failure_groups:指定优先读取的故障组diagnostic_dest:asm实例diagnostics的目录instance_type:实例类型,对于asm实例必须为asmremote_login_passwordfile:验证是否需要去读密码文件(二)asm实例和数据库实例参数文件搜索过程:对于asm实例在启动的时候需要参数文件,那么一般搜索过程为:1、先根据GPNP profile文件指定的参数文件位置进行寻找2、如果没有在GPNP profile中指定的目录找到,那么将寻找$ORACLE_HME/dbs/spfile+ASM.ora3、如果没有spfile+ASM.ora,那么将寻找pfile文件。
如果上述没有找到则无法启动asm对于数据库实例启动的时候需要参数文件,那么搜素过程为:1、寻找 $ORACLE_HOME/dbs/spfile.ora,2、寻找 $ORACLE_HOME/dbs/spfile.ora3、寻找 $ORACLE_HOME/dbs/init.ora如果上述没有找到参数文件,那么数据库实例无法启动。
(三)使用sql命令create diskgroup创建磁盘组当创建磁盘组之前需要注意一下几点:1、指定磁盘组的唯一名字(注:不要使用对象名字)2、指定磁盘组的平衡等级,一旦自定将无法修改3、指定的磁盘将被格式化为oracle asm磁盘组的磁盘4、选择指定磁盘组属于指定的故障组5、选择指定故障组的类型(有QUORUM和REGULAR故障组)6、指定磁盘组的属性(如软件兼容版本或是au大小等)注意:一个磁盘只能属于一个磁盘组,且所有刚刚创建的磁盘都是有唯一的地址路径不属于现有的所有磁盘组,如果一个磁盘原先属于一个磁盘组,但是坏掉了当修复后,这个磁盘将不在是磁盘组的一部分,但是asm实例依然在磁盘组中保留该磁盘的成员信息,可以使用force参数将该磁盘加入磁盘组。
ASM的备份恢复10G:+ASM一、验证备份级的有效性1)、备份级或者备份RMAN> validate backupset 1;RMAN> validate backup;channel ORA_DISK_1: validation complete, elapsed time: 00:00:59—–complete2)、转储某个对象是否在备份级中RMAN> restore tablespace users validate;3)、某个特定转储操作所必须的备份文件—不真正的转储RMAN> restore database preview;RMAN> restore tablespace users preview;RMAN> restore datafile 3 preview;RMAN> restore database preview summary;4)、监控RMAN作业的状态sql> select operation,status from v$rman_status; 正在运行的和已经完成的RMAN作业sql> desc v$rman_output RMAN备份和恢复过程中产生的消息5)、确定需要恢复的数据文件sql> select file#,error,online_status,change#,time from v$recovery_file; 可以与v$tablespace ,v$datafile连接6)、确定需要使用的归档文件,和所有的归档文件sql> select NAME,THREAD#,SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE# fromv$archived_log; 所有归档sql> select * from v$recovery_log; 需要恢复使用的归档Select name,enabled,status from v$datafile;数据文件7)、将磁盘组中的数据文件备份到文件系统中8)、在数据文件没有备份的情况下被误删除RMAN> alter database datafile 3 offline;RMAN> sql ‘alter database create datafile 3′;RMAN> recover datafile 3RMAN> sql ‘alter database datafile 3 online’;9)、在RMAN 恢复过程中自动应用归档RMAN> recover database autorecover;10)、使用RMAN进行热转储必需要有单个文件的映相副本如:RMAN> backup as copy format=’/oracle/oradata/system01.dbf’ datafile ‘+DGROUP1/cuug/datafile/system01.dbf’;SWITCH热转储命令以节省转储时间,加快恢复速度,同时可以利用此方法将数据库从ASM迁移到文件系统RMAN> switch datafile 1 to copy; 与SQL语句中的ALTER DATABASE RENAME FILE相同11)、在对归档文件CP并删除的时候,如果需要用到归档可以使用FROM 子句指定归档文件位置:switch 好象不能放在RUN快中RMAN> set logsource /oracle/arch_cpRMAN> alter database recover from /oracle/arch_cp12)、恢复类型以及那些数据文件需要恢复,做何种恢复–介质恢复还是实例恢复sql> select file#,status,error,recover,tablespace_name,name fromv$datafile_headerwhere recover=’YES’ OR (RECOVER IS NULL AND ERROR IS NOT NULL)当error 为NULL 而RECOVER 为YES时,不需要转储数据文件的拷贝—-实例恢复当error 不为NULL,可能存在介质恢复,当RECOVER 为NULL时,存在硬件错误13)、建立映像副本RMAN> copy datafile 5 to ‘new_file_name’; —backup as copy format = ‘new_file_name’ datafile 5;RMAN> copy current controlfile to ‘new_file_name’ –backup as copy format = ‘new_file_name’ current controlfile;并行建立映像副本RMAN> CONFIGURE device type disk parallelism 3; —-configure device type disk clear;RMAN> backup as copy format=’new_file_name’ datafile 1,2,3;指定映像标记RMAN> backup as copy format=’new_file_name’ datafile 5 tag=df_5; 14)、不完全恢复基于时间点 /SCN /日志序列SEQUENCE# 的恢复RMAN> RUN{SET UNTIL TIME ‘Mar 21 2005 10:00:00′ /set until scn 1000 /set until sequence 220restore database;recover database;SQL ‘alter database open resetlogs’;}注意:有时候需要设置时间格式:RMAN> SET nls_data_format=yyyy-mm-dd hh24:mi:ss15)、基于控制文件丢失的不完全恢复RMAN> STARTUP NOMOUNTRMAN> set dbid=122334RMAN> restore controlfile from autobackup maxseq 6;RMAN> ALTER DATABASE MOUNTRMAN> RUN{SET UNTIL TIME ‘Mar 21 2005 10:00:00′ /set until scn 1000 /set until sequence 220restore database;recover database;SQL ‘alter database open resetlogs’;}用户管理的恢复控制文件:在NOMOUNT状态下,在重建的时候如果有连机日志,则用NORESETLOGS,否则用RESETLOGSSQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE16)、用户管理的不完全恢复SQL>recover database unitil cancel /until time ‘Mar 21 2005 10:00:00′ /until time ‘Mar 21 2005 10:00:00′ using backup controlfile /until change 3243sql> alter database open resetlogs;17)、当需要在数据库文件转储的时候,可以通知数据库控制文件转储到新的指定的位置—用RMAN中的SET命令相当于SQL中的ALTER DATABASE RENAME FILE RMAN> RUN{SET newname for datafile 1 to ‘+dgroup1/datafile/system01.dbf’; restore datafile 1 ;}18)、管理ASM磁盘组别名ALIASsql> alter diskgroup dgroup1 add alias‘+DGROUP1/cuug/datafile/system01.dbf’ for‘/oracle/oradata/system01.dbf’;sql> alter diskgroup dgroup1 drop alias‘+DGROUP1/cuug/datafile/system01.dbf’19)、表空间的时间点恢复TSPITR(tablespace point-in-time-recover)——-辅助数据库auxiliary数据库的创建A.对于需要TSPITR 的表空间首先要检查这个表空间是否为自包含的表空间,方法如下:sql> execute dbms_tts.transport_set_check(‘tbs_name’,true) 产生临时表transport_set_violationssql> select * from transport_set_violations; 如果有数据行,说明表空间不是自包含的,不能进行TSPITR恢复,需要转换成自包含的B.需要有在执行TSPITR时间点之前的备份RMAN> backup database format=’/oracle/rman_bak/excluded_%d.bk’;备份中需要包含SYSTEM,UNDOTBS,和需要恢复的表空间,以及控制文件C、全自动TSPITRRMAN> RECOVER TABLESPACE aa unitl logseq 19 auxiliary destination‘/oracle/auxiliary”;——————————————————————————————————————————————如果是基于时间点的恢复可能需要时间格式的设置如下:[oracle@beijing oracle]$ vi .bash_profile添加参数:export NLS_DATE_FORMAT=’yyyy-mm-dd hh24:mi:ss’export NLS_LANG=AMERICAN_AMERICA.ZHS16GBKRMAN> RECOVER TABLESPACE aa unitl time=’2008-11-27 18:03:53′ auxiliary destination ‘/oracle/auxiliary’; 详情见:TSPITR-AUTO.txt ———————————————————————————————————————————————执行完后,此时表空间为OFFLINE状态,需要手动修改为ONLINE此时AA表空间的前备份将不能使用需要重新备份RMAN> sql ‘alter tablespace user01 online’;RMAN> BACKUP TABLESPACE AA FORMAT=‘路径’;///////////////////////////////////////////////////////////利用DBMS_FILE_TRANSFER传输数据库文件从Oracle 10g开始,Oracle提供了DBMS_FILE_TRANSFER这么一个程序包,可以方便地在本地数据库和远程数据库,ASM和文件系统间传输数据库文件。
ASM添加/删除磁盘操作规范为规范化ASM磁盘操作,现将ASM添加/删除磁盘中的重要步骤及参数列出,供现场运维人员参考。
1.确认磁盘新增情况TIPS:该步骤主要是确认新增磁盘信息以及确保操作的盘未被用作其他用途,防止误操作将其他用途的盘加载到ASM中=。
=2.对新增磁盘进行属性和权限变更TIPS:在进行属主变更操作时,可以参照现有ASM磁盘属主情况。
默认挂载的共享磁盘是不能被共享访问的,只能被其中一个节点执行,如果不修改共享磁盘的共享属性,那么在执行另一个节点的root.sh脚本的时候可能收到如下的错误:/dev/hdiskpower# device is busy。
修改共享属性时注意以下步骤:1.根据使用的不同存储可能看到的共享磁盘属性是不同的,可能是reserve_policy或者是reserve_lock属性。
reserve_policy属性,执行chdev –l <hdisk#> -a reserve_policy=no_reserve命令设置。
reserve_lock属性,执行chdev –l <hdisk#> -a reserve_lock=no命令设置。
2.以上的命令需要在RAC的所有节点都完成,在执行共享磁盘属性修改的时候确保磁盘没有被使用。
3.在使用hdiskpower10作为共享磁盘的时候一定注意使用的文件是/dev/rhdiskpower10,而不是/dev/hdiskpower10,rhdiskpower10是字符设备,hdiskpower10是块设备。
3.磁盘组添加/删除磁盘规范TIPS:在ASM磁盘组中添加/删除磁盘时,磁盘组会自动将数据在新旧磁盘间重新分配,从而实现分散I/O目的,该过程就叫做再平衡(rebalance)。
再平衡的过程中,数据会在磁盘间移动,会影响部分数据库性能,所以一般在系统空闲的时候进行。
rebalance power参数的大小控制着再平衡的速度,它的取值范围为0~11。
1什么是ASMASM全称为Automated Storage Management,即自动存储管理,它是自Oracle10g这个版本Oracle推出的新功能。
这是Oracle提供的一个卷管理器,用于替代操作操作系统所提供的LVM,它不仅支持单实例配置,也支持RAC这样的多实例配置。
将给Oracle数据库管理员带来极大的方便,ASM可以自动管理磁盘组,并提供数据冗余和优化。
特别是对于企业极的大型数据库管理员来说,可以使管理员可以从管理成百上千个数据文件这些琐碎的日常事务中解脱开来,以便处理其它更为重要的事务上去。
在Oracle 10g这个版本之前,管理一个大型数据库成百上千个的数据文件对数据库管理员来说是一个既无技术含量又十分枯燥的工作,这要求数据库管理员要熟悉一些系统的LVM的相关知识,做好磁盘规化,LV的条带等相关的系统方面的相关操作。
而使用自动存储管理将大大减轻这方面的工作量,数据库管理员只需要管理少数几个磁盘组即可。
一个磁盘组是ASM管理的一个逻辑单元,由一组磁盘设备组成。
我们可以定义一个磁盘组作为数据库的默认磁盘组,Oracle会自动管理存储,包括创建、删除数据文件等。
Oracle会自动将这些文件与一个合适的数据库对象做关联,这样我们在管理这些对象时只需要提供对象的名称,而无需像以前那样提供详细的文件名。
ASM提供了很多有用的存储技术,如RAID和LVM(逻辑卷管理)等。
像这些技术一样,ASM允许你在一组独立的磁盘上创建一个单独的磁盘组。
这样就实现了单个磁盘组的I/O 均衡。
同时ASM还实现了条带化(Striping)和磁盘镜像(Mirroring)以提高I/O的性能和数据可靠性。
与RAID或LVM不同的是,ASM是在文件级实现的条带化和镜像,这样的实现方式给用户带了很大选择自由度,我们可以在同一个磁盘组中对不同的文件配置不同的存储属性,实现不同的存储方式。
2 11g中ASM都有哪些新特征2.1 快速重新同步(ASM Fast Mirror Resync)短暂的磁盘路径发生问题时,恢复ASM磁盘组(DISK GROUP)的允余性是很费时间的,特别是这种恢复操作需要重新布局整个磁盘组的情况下。
ASM中的offline和drop操作
当一个ASM磁盘不可用时,ASM会把它从磁盘组里移除,对吗?要看情况,通常取决于ASM版本和磁盘组的冗余级别。
因为一个external冗余的磁盘组会直接被dismount,所以主要关注normal和high冗余磁盘组的情况。
ASM 10g版本,磁盘会被直接drop。
从11gR1,一个磁盘不可用时会先被offline,此时disk repair计时器开始介入,如果计时器达到磁盘组DISK_REPAIR_TIME 属性值时,这个磁盘会从所属的磁盘组中drop 掉。
如果这个磁盘在计时器过期前恢复可用,那么它的状态会变回online,不会被drop。
但是ASM是如何发现磁盘恢复可用又有什么机制将它恢复online呢?
当一个磁盘不能被ASM或者ASM客户端读或写时,会被认为不可用。
数据库是一种典型的ASM客户端,但ASM客户端并不只限于是数据库。
磁盘会因为各种原因变成不可用,本地硬盘的SCSI线缆受损,存储的SAN交换机或者网络故障,NFS空间的服务器故障,双活场景的站点故障,又或是磁盘本身故障等各种场景。
无论是哪种情况,ASM或者是ASM客户端会报IO错误,然后ASM会进行相应的处理。
在ASM 10G时,ASM会立即Drop变成不可用的磁盘。
这会触发一个尝试恢复数据冗余的重平衡操作。
一旦重平衡过程完成,数据冗余度会恢复,同时磁盘会被移除出磁盘组。
一旦磁盘不可用的故障被解决,可以通过alter diskgroup命令将磁盘重新添加回磁盘组。
例如:alter diskgroup DATA add disk 'ORCL: DISK077'; 这又会再次触发一个重平衡操作,一旦重平衡过程完成,磁盘会恢复成为磁盘组成员。
但是如果多个磁盘同时发生故障,又或者一个磁盘故障在重平衡过程中又有磁盘故障会导致什么结果?这取决于多个因素,磁盘组的冗余度、磁盘是否来自于相同或不同的failgroup和故障磁盘是否是partner关系。
在一个normal冗余级别的磁盘组,ASM能容忍来自于一个failgroup中的一块或者多块,甚至是全部的磁盘故障。
如果来自于不同的failgroup的磁盘变成不可用,仅当它们之间不存在partner关系时,ASM才能容忍。
这里提到的“容忍"的具体含义是指磁盘组能继续online同时ASM客户端访问不受影响。
在一个high 冗余级别的磁盘组,ASM能容忍仅来自于两个failgroup中的一块或者多块,甚至是全部的磁盘故障。
如果来自于两个以上failgroup的磁盘变成不可用,partner关系规则仍然有效。
基本上,ASM能容忍任意数量的磁盘变成不可用,只要它们之间不存在partner关系时。
当一个磁盘被drop,整个磁盘组需要为此进行rebalance,整个过程需要耗费大量的时间。
在此期间,其他磁盘也可能会发生故障,使得数据丢失的风险大大增加。
为解决这个问题,在11gR1开始,ASM引入了fast disk resync特性。
ASM不再立即drop不可用的磁盘,而是先置为offline状态。
这样做的意义是能让ASM管理员被告知有磁盘发生故障后在disk repair time计时器到达阈值前修复故障。
默认的disk repair 计时器阈值是3.6小时。
这个阈值是可以通过alter diskgroup命令来调整的,假设要设置为12小时,命令如下:alter diskgroup DATA set attribute 'DISK_REPAIR_TIME' = '12h',在磁盘处于offline的这段时间里,ASM持续跟踪需要在offline磁盘上做的修改操作。
如果磁盘在计时器到达阈值前恢复可用并且恢复到online状态,那么ASM会将这些修改操作应用到磁盘上去。
这就是fast disk resync特性的具体用途。
如果导致磁盘离线的故障不能解决,在计时器到达阈值后,磁盘会从磁盘组中被drop掉。
当一个系统管理员或者ASM管理员修复了导致磁盘不可用的故障后(例如更换了某条故障的线缆),接下来该怎么做能让磁盘恢复online状态?这个过程能否能自动呢? 答案同样也是看情况。
如果是Exadata 或者是Oracle Database Appliance,磁盘会被自动online。
其他情况是ASM管理员需要通过alter diskgroup 命令将磁盘恢复为online状态。
例如:alter diskgroup DATA online disk 'ORCL: DISK077'; 或者alter diskgroup DATA online all;
知道在不同的故障场景下会发生什么事情是这件非常有价值的事情,比如:目前使用的ASM版本分别能做什么和不能做什么,当前使用的磁盘组冗余度能提供什么样的保护级别。