洞察提升小程序标签管理,实现高效的金融行业数字化转型
289
2023-12-05
这篇文章主要介绍“Oracle11g RAC下ASM的管理与维护方法是什么”,在日常操作中,相信很多人在Oracle11g RAC下ASM的管理与维护方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle11g RAC下ASM的管理与维护方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一, 基本维护 : 注意: 以下除OS之外的命令及过程基本都可以通过ASMCA中的ASM相关操作以及Oracle Enterprise Mananger 来管理 . 1. 查看ASM磁盘及磁盘组 : --SQL查看有哪些磁盘组 .[root@rac01 ~]# su - grid[grid@rac01 ~]$ sqlplus "/as sysasm" SQL> select group_number , name , state, type from v$asm_diskgroup ;GROUP_NUMBER NAME STATE TYPE------------ ------------------------------ ----------- ------1 OCR_VOTE MOUNTED EXTERN2 ORADATA MOUNTED EXTERN3 ORAFLASH MOUNTED EXTERN通过一些字段total_mb及free_mb 等可以看出磁盘组的空间使用情况. -- 通过SQL语句查看ASM磁盘SQL> set line 2000SQL> select group_number, name,failgroup, path from v$asm_disk;GROUP_NUMBER NAME FAILGROUP PATH------------ ---------- -------------- ----------------------------------------------------------------2 ASMDATA01 ASMDATA01 ORCL:ASMDATA013 ASMDATA02 ASMDATA02 ORCL:ASMDATA021 OCR_VOTE01 OCR_VOTE01 ORCL:OCR_VOTE01 通过group_number可以将磁盘与磁盘组联系起来(一个磁盘组可以对应多个磁盘).这里可以看到磁盘OCR_VOTE01对应OCR_VOTE磁盘组, 磁盘ASMDATA01对应ORADATA磁盘组, 磁盘ASMDATA02 对应ORAFLASH 磁盘组 (建议名称一致比较好) 。--通过asmcmd查看磁盘组(每个磁盘组表现为一个目录) :[root@rac01 ~]# su - grid[grid@rac01 ~]$ asmcmdASMCMD> ls -alState Type Rebal NameMOUNTED EXTERN N OCR_VOTE/MOUNTED EXTERN N ORADATA/MOUNTED EXTERN N ORAFLASH/备注 : 或者 ASMCMD> lsdg -- 通过OS下oracleasm 命令查看ASM磁盘 .[root@rac01 bin]# /usr/sbin/oracleasm listdisksASMDATA01ASMDATA02OCR_VOTE012. 认识ASM相关路径 : 通过asmcm 命令可以看到ASM会根据dbca时制定的datafile路径, 在ORADATA磁盘组下面建立一些默认的路径 (一般是 db_name 下ARCHIVELOG/ , CONTROLFILE/,DATAFILE/ , ONLINELOG/ , PARAMETERFILE/ , TEMPFILE/ , 目录都是大写, 其中后面小写的arch是用户自己建的, SYS字段为Y的都是系统自建的, N是用户定义的 )[root@rac01 bin]# su - grid[grid@rac01 ~]$ asmcmdASMCMD> lsOCR_VOTE/ORADATA/ORAFLASH/ASMCMD> cd oradataASMCMD> lsRACDB/ASMCMD> cd racdbASMCMD> ls -lType Redund Striped Time Sys NameY ARCHIVELOG/Y CONTROLFILE/Y DATAFILE/Y ONLINELOG/Y PARAMETERFILE/Y TEMPFILE/N arch/N control01.ctl => +ORADATA/RACDB/CONTROLFILE/Current.256.739387263N control02.ctl => +ORADATA/RACDB/CONTROLFILE/Current.257.739387265N redo01.log => +ORADATA/RACDB/ONLINELOG/group_1.258.739387273N redo02.log => +ORADATA/RACDB/ONLINELOG/group_2.259.739387281N redo03.log => +ORADATA/RACDB/ONLINELOG/group_3.266.739393547N redo04.log => +ORADATA/RACDB/ONLINELOG/group_4.267.739393547N spfileracdb.ora => +ORADATA/RACDB/PARAMETERFILE/spfile.268.739393555ASMCMD> --归档路径ARCHIVELOG :通过oracle数据库参数文件看到归档路径 :SQL> show parameter log_archive_destlog_archive_dest_1 string LOCATION=+ORADATA/RACDB/arch可以看到归档路径 " +ORADATA/RACDB/arch " , 那么 +ORADATA/RACDB/ARCHIVELOG下面又是保存的什么文件呢 ?ASMCMD> pwd+oradata/racdb/arch -- 查看参数中的归档路径ASMCMD> ls -lType Redund Striped Time Sys NameN 1_204_739387258.arc =>+ORADATA/RACDB/ARCHIVELOG/2011_11_28/thread_1_seq_204.478.768441403N 1_205_739387258.arc =>+ORADATA/RACDB/ARCHIVELOG/2011_11_29/thread_1_seq_205.481.768443221N 1_206_739387258.arc => +ORADATA/RACDB/ARCHIVELOG/2011_11_29/thread_1_seq_206.482.768443233N 1_207_739387258.arc => +ORADATA/RACDB/ARCHIVELOG/2011_11_29/thread_1_seq_207.483.768443239用户自己定义的归档格式以及归档路径指向ASM自动建立的目录及文件, 自定义生成的归档相当于快捷方式(或软连接), 实际文件为ASM默认路径的归档文件。也可以手工为Oracle ASM Filename 生成别名:ALTER DISKGROUP ORADATA ADD ALIAS+oradata/racdb/datafile/test01.dbfFOR +oradata/racdb/datafile/TEST.340.740166807 ; ASMCMD> pwd+oradata/racdb/ARCHIVELOG --查看ASM系统自己默认的归档路径ASMCMD> ls -lType Redund Striped Time Sys NameY 2011_11_28/Y 2011_11_29/Y 2011_11_30/ 归档文件是按照每天来进行存储的 , 并且有目录分开 . ASMCMD> cd 2011_11_29/ASMCMD> ls -lType Redund Striped Time Sys NameARCHIVELOG UNPROT COARSE NOV 29 00:00:00 Y thread_1_seq_205.481.768443221ARCHIVELOG UNPROT COARSE NOV 29 00:00:00 Y thread_1_seq_206.482.768443233ARCHIVELOG UNPROT COARSE NOV 29 00:00:00 Y thread_1_seq_207.483.768443239ARCHIVELOG UNPROT COARSE NOV 29 00:00:00 Y thread_1_seq_208.485.768443253ARCHIVELOG UNPROT COARSE NOV 29 00:00:00 Y thread_1_seq_209.486.768443277--控制文件路径 CONTROLFILE :ASMCMD> cd racdbASMCMD> ls -lType Redund Striped Time Sys NameN control01.ctl => +ORADATA/RACDB/CONTROLFILE/Current.256.739387263N control02.ctl => +ORADATA/RACDB/CONTROLFILE/Current.257.739387265 查看初始化参数文件位置, 实际文件也是类似软链接方式 :SQL> show parameter control NAME TYPE VALUE------------------------------------ ----------- ----------------------------control_files string +ORADATA/racdb/control01.ctl,+ORADATA/racdb/control02.ctl如何增加控制文件呢 ? 例子如下:SQL> alter database mount database;SQL> alter database backup controlfile to +ORADATA/racdb/control02.ctl;SQL> alter database backup controlfile to +ORADATA/racdb/control03.ctl;SQL> alter system set control_files=+ORADATA/racdb/control01.ctl,+DATA/racdb/control02.ctl,+DATA/racdb/control03.ctlscope=spfile;SQL> startup mount --数据文件路径 DATAFILE : ASMCMD> pwd+oradata/racdb/datafileASMCMD>ASMCMD> ls -lType Redund Striped Time Sys NameDATAFILE UNPROT COARSE OCT 29 18:00:00 Y BASE_DATA.317.754072293DATAFILE UNPROT COARSE OCT 29 18:00:00 Y BASE_DATA.318.754072319DATAFILE UNPROT COARSE OCT 29 18:00:00 Y BASE_DATA.319.754072331DATAFILE UNPROT COARSE OCT 29 18:00:00 Y BASE_DATA.320.754072345N BASE_DATA01.DBF => +ORADATA/RACDB/DATAFILE/BASE_DATA.317.754072293N BASE_DATA02.DBF => +ORADATA/RACDB/DATAFILE/BASE_DATA.318.754072319N BASE_DATA03.DBF => +ORADATA/RACDB/DATAFILE/BASE_DATA.319.754072331N BASE_DATA04.DBF => +ORADATA/RACDB/DATAFILE/BASE_DATA.320.754072345可以看出链接的名称及对应的实体文件名称都出现在 datafile目录下, 当然并不是每个实体文件都有一个对应的链接的文件名称, 例如初始建立数据库的时候指定 +ORADATA 磁盘组后, 数据库会自动建立初始数据文件, 那时候的文件就只有系统生成的, 而没有用户指定的名称(链接名称) , 例如上面例子中的 LOGMNRTS.321.754072935 , SYSTEM.263.754063787 等 .而在加入datafile或建立表空间时, 如果只是指定 +ORADATA, 而不明确写出路径及文件名称 , 那么就会生成系统自建文件而没有链接名称, 如果文件使用类似 +ORADATA/racdb/datafile/mytbs01.dbf , 那么就会生成系统自建文件及对应的链接文件 .同样可以利用ALTER DISKGROUP XX ADD ALIAS 增加别名. ------------------------------------------------------------------------------ 认识文件名BASE_DATA.317.754072293 是表空间名+文件编号.Incarnation .+group/dbname/file type/tag.file.incarnation 格式中分别是磁盘组名, file type是Oracle文件类型, tag一般对一个表空间名, file.incarnation 结合在一起确保唯一性.----------------------------------------------------------------------------测试 : 新增数据文件或表空间 CREATE TABLESPACE MYTBS DATAFILE+ORADATA/racdb/datafile/mytbs01.dbf SIZE 10M AUTOEXTEND OFFLOGGINGONLINEPERMANENTEXTENT MANAGEMENT LOCAL UNIFORM. SIZE 5MBLOCKSIZE 16KSEGMENT SPACE MANAGEMENT AUTOFLASHBACK ON ; 或者 CREATE TABLESPACE TONYTBS DATAFILE+ORADATA SIZE 10M AUTOEXTEND ON NEXT 5M MAXSIZE 1024MLOGGINGONLINEPERMANENTEXTENT MANAGEMENT LOCAL UNIFORM. SIZE 5MBLOCKSIZE 16KSEGMENT SPACE MANAGEMENT AUTOFLASHBACK ON ; 增加数据文件ALTER TABLESPACE MYTBS ADD DATAFILE +ORADATA SIZE 10M AUTOEXTEND OFF ;如果设置了初始化参数db_create_file_dest(默认为空),连磁盘组名都不需要写了,例如:SQL> show parameter db_create_file_destNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_create_file_dest string +ORADATA SQL> ALTER TABLESPACE MYTBS ADD DATAFILE SIZE 10M AUTOEXTEND OFF ;tablespace altered. Tips :对于现有系统想迁入ASM存储,最简单的方式,莫过于使用RMAN了 3个语句建立完毕后, 查看系统文件:[root@rac01 ~]# su - grid[grid@rac01 ~]$[grid@rac01 ~]$ asmcmdASMCMD> lsOCR_VOTE/ORADATA/ORAFLASH/ASMCMD> cd oradata/racdbASMCMD> ls -lType Redund Striped Time Sys NameDATAFILE UNPROT COARSE NOV 30 17:00:00 Y MYTBS.504.768590521DATAFILE UNPROT COARSE NOV 30 17:00:00 Y MYTBS.505.768590741DATAFILE UNPROT COARSE NOV 30 17:00:00 Y SYSAUX.261.739387301DATAFILE UNPROT COARSE NOV 30 17:00:00 Y SYSTEM.260.739387283DATAFILE UNPROT COARSE NOV 30 17:00:00 Y TEST.340.740166807DATAFILE UNPROT COARSE NOV 30 17:00:00 Y TEST.341.740166937DATAFILE UNPROT COARSE NOV 30 17:00:00 Y TONYTBS.506.768590761DATAFILE UNPROT COARSE NOV 30 17:00:00 Y UNDOTBS1.262.739387315DATAFILE UNPROT COARSE NOV 30 17:00:00 Y UNDOTBS2.264.739387351DATAFILE UNPROT COARSE NOV 30 17:00:00 Y USERS.265.739387361N mytbs01.dbf => +ORADATA/RACDB/DATAFILE/MYTBS.504.768590521N test01.dbf => +ORADATA/RACDB/DATAFILE/TEST.340.740166807N test02.dbf => +ORADATA/RACDB/DATAFILE/TEST.341.740166937我们可以看到, mytbs01 指定了路径 +ORADATA/racdb/datafile/mytbs01.dbf , 所以显示时既有mytbs01.dbf, 也有对应的 MYTBS.504.768590521 , 新加入的 MYTBS表空间文件只是写了 +ORADATA , 生成文件为 MYTBS.505.768590741 , 同样建立的TONYTBS也是, 对应文件为 TONYTBS.506.768590761 , 没有链接文件 .修改数据文件大小 (与文件系统操作相似) :ALTER DATABASE DATAFILE +DATA/wsjdell/datafile/users.256.754063811 RESIZE 200M;对于归档目录及数据文件目录, 还有一个比较关心的问题就是空间问题, 我们如何来判断磁盘组需要加入新的磁盘或新建磁盘组来满足数据增长呢 ?ASMCMD> pwd+oradata/racdb/datafileASMCMD> duUsed_MB Mirror_used_MB2949 2949 ASMCMD> lsdgState Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_filesNameMOUNTED EXTERN N 512 4096 1048576 10236 9840 0 9840 0 N OCR_VOTE/MOUNTED EXTERN N 512 4096 1048576 10236 465 0 465 0 N ORADATA/MOUNTED EXTERN N 512 4096 1048576 4094 3999 0 3999 0 N ORAFLASH/[root@rac01 ~]# su - grid[grid@rac01 ~]$ sqlplus "/as sysasm"SQL> select name , total_mb, free_mb,cold_used_mb from v$asm_diskgroup ;NAME TOTAL_MB FREE_MB COLD_USED_MB------------------------------ ---------- ---------- ------------OCR_VOTE 10236 9840 396ORADATA 10236 465 9771ORAFLASH 4094 3999 95可以看到通过asmcmd 及 asm 实例中的 sql 语句查询出来的 free_mb(或Usable_file_MB)大小是一致的 . 表空间的使用情况需要通过数据库SQL或辅助工具(如Toad)来进行查看.--在线日志文件路径 ONLINELOG ASMCMD> pwd+oradata/racdbASMCMD> ls -lType Redund Striped Time Sys NameY ARCHIVELOG/Y CONTROLFILE/Y DATAFILE/Y ONLINELOG/Y PARAMETERFILE/Y TEMPFILE/N arch/N control01.ctl => +ORADATA/RACDB/CONTROLFILE/Current.256.739387263N control02.ctl => +ORADATA/RACDB/CONTROLFILE/Current.257.739387265N redo01.log => +ORADATA/RACDB/ONLINELOG/group_1.258.739387273N redo02.log => +ORADATA/RACDB/ONLINELOG/group_2.259.739387281N redo03.log => +ORADATA/RACDB/ONLINELOG/group_3.266.739393547N redo04.log => +ORADATA/RACDB/ONLINELOG/group_4.267.739393547N spfileracdb.ora => +ORADATA/RACDB/PARAMETERFILE/spfile.268.739393555ASMCMD> cd onlinelogASMCMD> ls -lType Redund Striped Time Sys NameONLINELOG UNPROT COARSE NOV 30 17:00:00 Y group_1.258.739387273ONLINELOG UNPROT COARSE NOV 30 17:00:00 Y group_2.259.739387281ONLINELOG UNPROT COARSE NOV 30 17:00:00 Y group_3.266.739393547ONLINELOG UNPROT COARSE NOV 30 17:00:00 Y group_4.267.739393547和其他关键文件一样, 在建库的时候手工指定了目录 +oradata/racdb , 所以毕竟好辨认的名称 redo01.log, redo02.log 等都以链接名称方式存在 . Redo logfile的冗余设置可以设置在不同的磁盘组上, 比如 ORADATA和ORAFLASH .加入冗余组的方式和文件系统下一样(唯一的区别是不能在file上加括号, 如果只加入一个member的话 ) . alter database add logfile member +ORAFLASH to group 1 ;alter database add logfile member +ORAFLASH to group 2 ;alter database add logfile member +ORAFLASH to group 3 ;alter database add logfile member +ORAFLASH to group 4 ; 加入后查询 v$logfile 可以看到每组2个成员 .ASMCMD> cd +oraflashASMCMD> lsRACDB/ASMCMD> cd racdbASMCMD> lsONLINELOG/ASMCMD> ls -lType Redund Striped Time Sys NameONLINELOG UNPROT COARSE NOV 30 20:00:00 Y group_1.256.768602255ONLINELOG UNPROT COARSE NOV 30 21:00:00 Y group_2.257.768603599ONLINELOG UNPROT COARSE NOV 30 21:00:00 Y group_3.258.768603683ONLINELOG UNPROT COARSE NOV 30 21:00:00 Y group_4.259.768603705 加入一个redo log group .alter database add logfile group 5 (+ORADATA , +ORAFLASH) size 50M ;SQL> select member from v$logfile;MEMBER--------------------+ORADATA/racdb/redo01.log+ORADATA/racdb/redo02.log+ORADATA/racdb/redo03.log+ORADATA/racdb/redo04.log+ORAFLASH/racdb/onlinelog/group_1.256.768602255+ORAFLASH/racdb/onlinelog/group_2.257.768603599+ORAFLASH/racdb/onlinelog/group_3.258.768603683+ORAFLASH/racdb/onlinelog/group_4.259.768603705+ORADATA/racdb/onlinelog/group_5.508.768604159+ORAFLASH/racdb/onlinelog/group_5.260.76860416110 rows selected.SQL> --参数文件路径 PARAMETERFILE (DB参数文件, 非ASM实例参数文件) ASMCMD> pwd+oradata/racdb/parameterfileASMCMD> ls -lType Redund Striped Time Sys NamePARAMETERFILE UNPROT COARSE NOV 30 17:00:00 Y spfile.268.739393555ASMCMD> --临时文件路径 TEMPFILE ASMCMD> cd tempfileASMCMD> ls -lType Redund Striped Time Sys NameTEMPFILE UNPROT COARSE NOV 30 17:00:00 Y TEMP.263.739387321 3. 扩充磁盘组大小 ASMCMD> lsdgState Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_filesNameMOUNTED EXTERN N 512 4096 1048576 10236 9840 0 9840 0 N OCR_VOTE/MOUNTED EXTERN N 512 4096 1048576 10236 414 0 414 0 N ORADATA/MOUNTED EXTERN N 512 4096 1048576 4094 3737 0 3737 0 N ORAFLASH/ 通过lsdg或v$asm_diskgroup视图我们发现磁盘组空间可能不够了, 那么我们是新加入一个磁盘组呢, 还是在原来磁盘组基础上加入新的磁盘呢 ?为了更好的得到I/O性能 , 一般采用在磁盘组中加入新的磁盘 . ASM磁盘组支持动态扩展,我们可以向现有的磁盘组动态加入新的磁盘,新磁盘加入后,Oracle通过后台RBAL进行Rebalance,将当前的数据均衡到新增加的磁盘上。Drop磁盘亦会Rebalance。asm_power_limit 参数用于控制Rebalance的速度,取值1~11,power表示启动的rebalance的进程RBAL的个数数字越大,平衡速度越快,默认值是1。但是该数字越大,可能因为Rebalance而影响性能, 一般为了平衡, 设置为 3~6之间。加入新磁盘后, 假设为 /dev/sde, /dev/sdf , fdisk 划分分区为 /dev/sde1, /dev/sdf1 .[grid@rac01 ~]$ sqlplus "/as sysasm"SQL*Plus: Release 11.2.0.1.0 Production on Wed Nov 30 23:04:08 2011Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> show parameter asm_power_limit NAME TYPE VALUE------------------------------------ ----------- ------------------------------asm_power_limit integer 1 SQL> alter system set asm_power_limit=5 ; -- 修改power值 .System altered.或者使用ALTER DISKGROUP diskgroupname REBALANCE POWER 5 ; -- 查看已有的磁盘 .SQL> select group_number, name from v$asm_disk order by 1; GROUP_NUMBER NAME------------ ------------------------------01 OCR_VOTE012 ASMDATA013 ASMDATA02 -- 查看已有的磁盘组 .SQL> select group_number, name from v$asm_diskgroup order by 1 ;GROUP_NUMBER NAME------------ ------------------------------1 OCR_VOTE2 ORADATA3 ORAFLASH 创建新磁盘:[root@rac01 ~]# /usr/sbin/oracleasm createdisk ASMDATA03 /dev/sde1Writing disk header: doneInstantiating disk: done [root@rac01 ~]# /usr/sbin/oracleasm listdisksASMDATA01ASMDATA02ASMDATA03OCR_VOTE01 其他节点上:[root@rac02 ~]# /usr/sbin/oracleasm scandisksReloading disk partitions: doneCleaning any stale ASM disks...Scanning system for ASM disks... [root@rac02 ~]# /usr/sbin/oracleasm listdisksASMDATA01ASMDATA02ASMDATA03OCR_VOTE01 新磁盘ASMDATA03 需要加入到 ORADATA 磁盘组中: [grid@rac01 ~]$ sqlplus "/as sysasm"SQL> ALTER DISKGROUP ORADATA ADD DISK ORCL:ASMDATA03 ;Diskgroup altered . 或者( 需要在初始参数指定 ASM_DISKSTRING = /dev/* )SQL>ALTER DISKGROUP ORADATA ADD DISK /dev/sde1 name ASMDATA03 ;速度还是非常快的(可能是没有多少数据需要在各磁盘间转移), 大家可以找一些大的测试库进行不同power值时的速度及性能测试 . 注意完毕后将asm_power_limit 值修改为默认的 1 .SQL> alter system set asm_power_limit=1 ;System altered. ----------------------------------------------------------------------------------------------------------------注意, 如果扩容的磁盘组是Normal Redundant 的, 那么还需要failure group.修改及新增磁盘组相关的语句类似 (需要设置初始参数ASM_DISKSTRING=/dev/*):具体参考:http://docs.oracle.com/cd/E11882_01/server.112/e18951/asmdiskgrps.htm#CHDHHABI一个磁盘组成failgroup (Normal):ALTER DISKGROUP dgroup1 NORMAL REDUNDANCYFAILGROUP fg1 DISK /dev/sde1 NAME ASMDATA05FAILGROUP fg2 DISK /dev/sdf1 NAME ASMDATA06 ;一个磁盘组成failgroup (High):create diskgroup data2 high redundancyfailgroup fg1 disk /dev/raw/raw3 name d2afailgroup fg2 disk /dev/raw/raw4 name d2bfailgroup fg3 disk /dev/raw/raw5 name d2c; 多个磁盘组成failgroup (Normal):CREATE DISKGROUP dgroup1 NORMAL REDUNDANCYFAILGROUP controller1 DISK/dev/diska1,/dev/diska2,/dev/diska3,/dev/diska4FAILGROUP controller2 DISK/dev/diskb1,/dev/diskb2,/dev/diskb3,/dev/diskb4;语法:CREATE DISKGROUP diskgroup_name[ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ][ FAILGROUP failgroup_name ]DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...;-------------------------------------------------------------------------可以通过v$asm_operation视图来查看正在进行的操作 .--------------------------------------------------------------------------这里有几点要注意:(1), 首先 sqlplus登入需要 sysasm角色, 因为sysdba只能查看, 不能修改.(2), add disk 后接的磁盘信息为 ORCL:XXX , XXX是listdisks看到的ASM磁盘label .如果只是 add disk XXX 会报错.(3), 同样 add disk 后面直接写 /dev/sde1 也是不行的, 会报权限错误.--------------------------------------------------------------------------通过asmcmd 查看磁盘组空间扩展情况 :[root@rac02 ~]# su - grid[grid@rac02 ~]$[grid@rac02 ~]$ asmcmdASMCMD> lsdgState Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_filesNameMOUNTED EXTERN N 512 4096 1048576 10236 9840 0 9840 0 N OCR_VOTE/MOUNTED EXTERN Y 512 4096 1048576 30709 20694 0 20694 0 N ORADATA/MOUNTED EXTERN N 512 4096 1048576 4094 3737 0 3737 0 N ORAFLASH/ASMCMD>可以看到ORADATA 磁盘组的 Total_MB变成了30G (30709M), 显然是成功加入了20G 的 /dev/sde1 . 删除磁盘组中的磁盘(同样也需要设置power值来使RBAL速度加快) :SQL> ALTER DISKGROUP ORADATA DROP DISK ASMDATA03 ;Diskgroup altered. 如果执行后立刻查看的话, 可能ORADATA磁盘组大小不会变, 需要观察v$asm_operation视图来查看正在进行的操作, 完毕后才会变化, 执行drop命令后不等待和等待3分钟后查看的结果如下:ASMCMD> lsdg -- 马上查看(大小没有变化)State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_filesNameMOUNTED EXTERN N 512 4096 1048576 10236 9840 0 9840 0 N OCR_VOTE/MOUNTED EXTERN Y 512 4096 1048576 30709 20694 0 20694 0 N ORADATA/MOUNTED EXTERN N 512 4096 1048576 4094 3737 0 3737 0 N ORAFLASH/ASMCMD>ASMCMD> lsdg -- 等待3分钟后查看 (当然数据量大的话等待时间更久)State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_filesNameMOUNTED EXTERN N 512 4096 1048576 10236 9840 0 9840 0 N OCR_VOTE/MOUNTED EXTERN N 512 4096 1048576 10236 223 0 223 0 N ORADATA/MOUNTED EXTERN N 512 4096 1048576 4094 3737 0 3737 0 N ORAFLASH/可以看到 ORADATA 的total_mb 又变回 10G了 .如希望ALTER DISKGROUP语句完成所有工作才返回用户控制权的话,可在执行时附加REBALANCE WAIT子句,这样该语句就会等待自动平衡的操作,直接所有操作完成才返回结果,当然在等待期间,如果你改主意了不愿意继续等待,CTRL+C中断即可获得控制权,此时平衡的操作不受影响,会在后台继续进行。ASMCMD> lsdsk -- ASMDATA03 磁盘消失.PathORCL:ASMDATA01ORCL:ASMDATA02ORCL:OCR_VOTE01 注意 DROP DISK 只是将ASMDATA03 从磁盘组中删除 :[root@rac02 ~]# /usr/sbin/oracleasm listdisksASMDATA01ASMDATA02ASMDATA03OCR_VOTE01 --------------------------------------------------------------备注:(1), 也可以只对某个diskgroup设置rebalance power, 比如:alter diskgroup ORADATA rebalance power 8 ;(2), 或者在命令中设置alter diskgroup ORADATA add disk ORCL:ASMDATA03 rebalance power 8;alter diskgroup ORADATA drop disk ASMDATA03 rebalance power 8;--------------------------------------------------------------需要注意的是, add 及 drop之后都需要等待一些时间再做针对此磁盘或磁盘组的动作, 否则可能报错, 或者观察v$asm_operation 来查看事务.如下:SQL> select * from v$asm_operation ; GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE------------ ----- ---- ---------- ---------- ---------- ---------- ----------EST_MINUTES ERROR_CODE----------- --------------------------------------------2 REBAL RUN 8 8 173 6680 741隔一段时间再次查看(直到相关事务从此视图消失) :SQL> select * from v$asm_operation ;no rows selected 由于前面提到的ASM自动平衡的特性,上述语句返回后并不代表磁盘已经被删除,此时后台可能由于正忙碌地执行着IO重平衡的工作,因此如果在这个时候,DBA忽然意识到操作失误,其实磁盘并不需要被删除,那也可以马上通过alter diskgroup dgname undrop disks语句来取消删除的操作,例如:SQL> alter diskgroup ORADATA undrop disks;Diskgroup altered. 只要删除操作还没有真正完成,任务就会被取消,否则的话,上述语句也挽回不了什么了,如果希望挽回,那DBA只能再通过ADD语句将该磁盘重新加入到磁盘组了。4. 增加新的磁盘组 -- 查看已有的磁盘 .SQL> select group_number, name from v$asm_disk order by 1;GROUP_NUMBER NAME------------ ------------------------------1 OCR_VOTE012 ASMDATA012 ASMDATA033 ASMDATA02 -- 查看已有的磁盘组 .SQL> select group_number, name from v$asm_diskgroup order by 1 ;GROUP_NUMBER NAME------------ ------------------------------1 OCR_VOTE2 ORADATA3 ORAFLASH 创建新磁盘 (/dev/sdf1):[root@rac01 ~]# /usr/sbin/oracleasm createdisk ASMDATA04 /dev/sdf1Writing disk header: doneInstantiating disk: done [root@rac01 ~]# /usr/sbin/oracleasm listdisksASMDATA01ASMDATA02ASMDATA03ASMDATA04OCR_VOTE01 其他节点上:[root@rac02 ~]# /usr/sbin/oracleasm scandisksReloading disk partitions: doneCleaning any stale ASM disks...Scanning system for ASM disks...Instantiating disk "ASMDATA04" [root@rac02 ~]# /usr/sbin/oracleasm listdisksASMDATA01ASMDATA02ASMDATA03ASMDATA04OCR_VOTE01 开始建立磁盘组(这里是external模式, 具体语法参考文档) :在节点1 上建立新的磁盘组: SQL> CREATE DISKGROUP ORAINDX EXTERNAL REDUNDANCYDISK ORCL:ASMDATA04 ;SQL> select group_number, name from v$asm_diskgroup ;GROUP_NUMBER NAME------------ ------------------------------1 OCR_VOTE2 ORADATA3 ORAFLASH4 ORAINDX ASMCMD> lsdgState Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_filesNameMOUNTED EXTERN N 512 4096 1048576 10236 9840 0 9840 0 N OCR_VOTE/MOUNTED EXTERN N 512 4096 1048576 30709 20694 0 20694 0 N ORADATA/MOUNTED EXTERN N 512 4096 1048576 4094 3737 0 3737 0 N ORAFLASH/MOUNTED EXTERN N 512 4096 1048576 10236 10186 0 10186 0 N ORAINDX/可以看到在节点1上都生效了. 但是其他节点没有生效(lsdg, lsdsk都看不到),需要手工挂载新磁盘组 . SQL> ALTER DISKGROUP ORAINDX MOUNT ;Diskgroup altered. 在其他节点上查看即可以看到了 :SQL> select name from v$asm_diskgroup;SQL> select name from v$asm_disk;ASMCMD> lsdskASMCMD> lsdg 5 , 删除磁盘组 语法:drop diskgroup gpname, 如果删除的diskgroup非空的话,直接执行上述语句会报错,这时候可以通过附加including contents子句,来自动删除该磁盘组中包含的文件。删除磁盘组的操作会自动修改spfile中ASM_DISKGROUPS初始化参数的值(如果使用了SPFILE的话) .-- Tips :如果删除的是文件的话,其关联的别名(Alias)也会被自动删除。SQL> alter diskgroup asmdisk2 drop file +ASMDISK2/repdb/datafile/temp01.dbf;Diskgroup altered. 二 , ASM 实例相关 1. ASM 相关的权限及角色 安装Grid Infrastructure时候的常用用户及组:Grid Infrastructure 操作系统用户grid , 主组为oinstall, 辅助组为asmadmin, asmdba, asmoperOracle RAC 操作系统用户 oracle , 主组为oinstall , 辅助组为dba, oper , asmdba11g release2中oracle建议独立地管理Grid Infrastructure和ASM实例 .OSASM(asmadmin)用户组如果使用ASM,我们必须创建osasm(asmadmin)用户组,该OSASM用户组的成员将被赋予SYSASM权限,以满足组成员管理Oracle Clusterware和 ASM的权限需求。OSDBA for ASM group(asmdba)用户组OSDBA(asmdba)用户组的成员将被赋予读写访问ASM文件的权限。GI/CRS拥有者用户和所有oracle数据库软件的拥有者必须是该组的成员。同时所有OSDBA(dba)用户组的成员也必须是asmdba组的成员。 OSOPER for ASM(asmoper)用户组asmoper和osoper类似都是额外的可选择创建的用户组,创建该独立的用户组以满足赋予用户一套受限的ASM实例管理权限(ASM的SYSOPER角色),该权限包括了启动和停止ASM实例,默认情况下OSASM(asmadmin)组成员将拥有所有SYSOPER的ASM管理权限。grid用户单独安装集群,比如包括asm实例,监听资源,节点资源等oracle用户就只安装oracle代码 # groupadd oinstall# groupadd asmadmin # groupadd asmdba# groupadd asmoper # groupadd dba# groupadd oper #useradd -g oinstall -G asmadmin,asmdba,asmoper grid#useradd -g oinstall -G dba, oper, asmdba oracle 具体代表含义参考 :http://www.oracledatabase12g.com/archives/oracle-installation-os-user-groups.html用户组 所属该组的用户 用户组描述oinstall grid, oracle Oracle Inventory and Software Ownerdba oracle Database Administratorasmadmin grid Oracle ASM Groupasmdba grid, oracle ASM Database Administrator Groupasmoper grid ASM Operator Groupoper oracle Database Operator如果对oracle用户没赋予asmdba组的话,则会导致oracle用户认不到diskgroup,启动对应节点实例失败。 ---------------------------------------------------------------------备注 :Oracle10g中还是使用sysdba管理asm实例,Oracle11g中使用一个新角色sysasm, 专用于管理asm, 相当于针对asm实例的sysdba角色。 在Oracle11g RAC 中以grid用户登入后 , 以sysdba登入也是可以查看asm实例相关的状态, 但是不能做变更, sysasm 角色连接后才可以。--------------------------------------------------------------------- 2. ASM 实例ASM 实例与 ORACLE 数据库实例差不多, 都是由SGA和后台进程组成, 区别在于oracle实例管理的是数据库,而asm实例只管理ASM磁盘组. 这里grid用户是属于asmadmin组, 用于管理ASM,[root@rac01 ~]# su - grid[grid@rac01 ~]$ iduid=501(grid) gid=501(oinstall) groups=501(oinstall),504(asmadmin),506(asmdba),507(asmoper)[grid@rac01 ~]$export ORACLE_SID=+ASM1 (一般不用,因为grid用户下只有一个ASM实例)[grid@rac01 ~]$ env | grep ORAORA_NLS11=/u01/grid/11.2.0/nls/dataORACLE_SID=+ASM1ORACLE_BASE=/u01/grid/crsORACLE_TERM=vt100ORACLE_HOME=/u01/grid/11.2.0 [grid@rac01 ~]$ sqlplus / as sysasmSQL*Plus: Release 11.2.0.1.0 Production on Sat Dec 3 07:13:39 2011Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> show parameter instance_nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_name string +ASM1以grid用户身份, 连接到ASM实例 , 使用sysdba 及 sysasm 角色都可以,以sysdba登入也是可以查看asm实例相关的状态 , 但是不能做变更,sysasm 角色连接后才可以 . A. ASM实例开启及关闭同样的, ASM 实例也可以 startup nomount / mount / open / force .nomount : 只是启动实例 ;mount / open : 启动实例及加载磁盘组, open和mount一样 ;force : 先执行shutdown abort , 然后再startup ; 测试 :[grid@rac01 ~]$ sqlplus / as sysasmSQL> startup nomountASM instance startedTotal System Global Area 120023424 bytesFixed Size 2082208 bytesVariable Size 102775392 bytesASM Cache 25165824 bytes SQL> select name,state from v$asm_diskgroup;NAME STATE------------------------------ -----------ASMDISK1 DISMOUNTEDASMDISK2 DISMOUNTED SQL> select instance_name,status from v$instance;INSTANCE_NAME STATUS---------------- ------------+ASM1 STARTED 然后加载磁盘组,注意,不是alter database: SQL> alter diskgroup all mount;Diskgroup altered.SQL> select name,state from v$asm_diskgroup;NAME STATE------------------------------ -----------ASMDISK1 MOUNTEDASMDISK2 MOUNTED 关闭ASM实例 : NORMAL/IMMEDIATE/TRANSACTIONAL/ABORT 几个选项与关闭普通数据库实例一样 :SQL> shutdown immediateASM diskgroups dismountedASM instance shutdown B. ASM 实例的初始化参数 ASM初始化也分spfile及pfile, 操作也相同. 和RDBMS数据库比起来, 还是有一些差异参数.SQL> create pfile=/tmp/asminit.ora from spfile;File created. 因为ASM实例在内存占用方面非常小, 基本上100M内存空间就足够了, 内存相关就不提了.INSTANCE_TYPE : 在ASM中值为ASM , 在数据库实例中是RDBMS . ASM_POWER_LIMIT :指定磁盘rebalance的程度,有0-11个级别,默认值为1,指定的级别越高,则rebalance的操作就会越快被完成(当然这也意味着这个时间段内将占用更多的资源),指定级别较低的话,虽然rebalance操作会耗时更久,但对当前系统的IO及负载影响会更少,这中间的度需要DBA根据实际情况衡量。另外,这个参数指定的只是一个默认值,在操作过程中,即可以动态修改,也可以在语句级命令行时指定power,覆盖该默认值。ASM_DISKSTRING :用最简单的话说,就是设置ASM启动时检查的磁盘,该选项可以同时指定多个值,并且支持通配符。比如说,只检查/dev/dsk/下的设备,可以设置该参数如下:/dev/dsk/*,默认情况下该参数为空,为空的话,表示ASM将查找系统中所有ASM拥有读写权限的设备。 ASM_DISKGROUPS : 指定实例启动或alter diskgroup all mount语句时要加载的磁盘组,如果为空的话,那么实际就仅启动到NOMOUNT状态了。如果是使用SPFILE的话,该参数一般不需要手动修改,ASM能够自动更新该初始化参数中的值。 [grid@rac01 tmp]$ sqlplus / as sysasmSQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 29 05:24:38 2011Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> show parameter NAME TYPE VALUE------------------------------------ ----------- ------------------------------asm_diskgroups string ORADATA, ORAFLASHasm_diskstring stringasm_power_limit integer 1...... 3. ASM 相关视图 [root@rac01 ~]# su - oracle[oracle@rac01 ~]$ sqlplus "/as sysdba" SQL> select TABLE_NAME from dict where table_name like V$ASM_%;TABLE_NAME------------------------------V$ASM_ACFSSNAPSHOTSV$ASM_ACFSVOLUMESV$ASM_ALIAS -- 记录文件别名V$ASM_ATTRIBUTE -- 记录ASM磁盘组的属性V$ASM_CLIENT -- 当前连接的客户端实例信息V$ASM_DISK -- ASM管理的磁盘及磁盘组信息V$ASM_DISKGROUP -- ASM磁盘组V$ASM_DISKGROUP_STAT -- ASM磁盘组状态, 大小V$ASM_DISK_IOSTAT -- ASM磁盘组I/O状态V$ASM_DISK_STATV$ASM_FILE TABLE_NAME------------------------------V$ASM_FILESYSTEMV$ASM_OPERATION -- 当前磁盘的操作信息V$ASM_TEMPLATEV$ASM_USERV$ASM_USERGROUPV$ASM_USERGROUP_MEMBERV$ASM_VOLUMEV$ASM_VOLUME_STAT 19 rows selected. 4. ASM 体系结构 ASM实例 :1) RBAL: rebalancer进程,负责规划ASM磁盘组的Reblance活动2) ABRn: 是RBAL进程的子进程,真正完成Reblance活动 RDBMS实例 :1) RBAL: 负责打开每个磁盘组的所有磁盘2) ASMB: 这个进程作为ASM实例和数据库实例之间的信息通道.这个进程负责与ASM实例的通信,它先利用Diskgroup name从CSS获得管理该Diskgroup的ASM实例的连接串,然后建立到ASM的持久连接,两个实例通过这条连接定期交换信息,同时也是一种心跳机制.3)O0nn 01-10:这组进程建立到ASM实例的连接,某些长时间操作比如创建数据文件,RDBMS会通过这些进程向ASM发送信息 ASM Instance 与RDBMS 的交互当ASM实例挂载一个磁盘组之后,ASM会把Disk Group Name, ASM Instance Name,Oracle Home Path等信息注册到CSS(Cluster Sychronization Service), 这些信息会被用来构造Connect String. 当RDBMS启动过程中需要访问某个ASM File时, RDBMS会和CSS联系, 从CSS中获取Connect String,然后发起一个到ASM实例的连接, 这条ASM和RDBMS实例之间的初始连接叫作Umbilicu(脐带), 只要RDBMS打开ASM File,这个连接就会保持活动. 直到所有ASM File都被RDBMS实例关闭之后,这个连接才会关闭. 对ASM的理解, ASM其实就是LVM披上了Oracle的马甲, Disk 对应PV, Diskgroup 对应VG, 5. ASM 高效存储技术 自动存储管理直接在Oracle 内核提供了文件系统和卷管理器的垂直整合,从而带来了存储区域网系统提供的“虚拟化”类型的优点(易于管理、更高的可用性),并专门用于Oracle 数据库文件。ASM 提供了配置数据库的快捷方法,以达到最佳性能和资源利用率。它通过Oracle 内核自动管理数据库文件和这些文件的放置,不再需要第三方文件系统和卷管理器来管理Oracle 文件。ASM 免去了耗时的手动I/O 性能与调整任务,大大节省了DBA 的时间。ASM的镜像(mirroring)与条带化(striping):ASM 将文件分成1MB 大小的区(extent, AU),并将所有文件的区平均分布到磁盘组的所有磁盘中。ASM 不使用数学函数跟踪每个区的放置,而使用指针记录区的位置。这样,ASM 就可以在磁盘组配置变化时移动某个文件的某些区,而不必按照公式并根据磁盘数来移动所有的区。对于需要低延迟的文件(例如日志文件),ASM 提供了细粒度(128k) 分段,以便由多个磁盘并行分隔并处理较大的I/O。ASM 在所有可用的资源中分布I/O 负载,在免除手动I/O 调节需要(通过分散数据库文件来避免热点)的同时优化性能。ASM的镜像比操作系统的磁盘镜像更为灵活,因为ASM可基于文件设置冗余级别,也就是说在同一磁盘组中的两个文件可以一个是镜像的, 而另一个不做镜像。ASM镜像发生在区级。 ASM的动态存储配置:ASM使得在线调整存储配置成为可能,即它帮助DBA 管理动态数据库环境,让DBA 能够在扩大或缩小数据库规模的情况下,无需关闭数据库以调整存储配置。而在往磁盘组中增加磁盘或从磁盘组中删除磁盘后,ASM将自动重新平衡――均衡地在磁盘组中的所有磁盘上重新分布文件数据。三, ASM 磁盘冗余及故障处理 ASM的磁盘冗余策略可以分成三类:外部冗余、标准冗余和高度冗余,其中外部冗余不需要failure 磁盘组, 标准和高度冗余必须要有failure磁盘组, 比如说对于标准冗余(Normal Redundancy),ASM要求该磁盘组至少要拥有两个failure磁盘组,即提供双倍镜像保护,对于同一份数据(ASM中镜像单位不是磁盘,也不是块,而是一种AU的单位,该单位大小默认是1M)将有主从两份镜像,并且ASM通过算法来自动确保主、从镜像不会存在于同一份failure磁盘组,这样就保障了就算整个failure磁盘组都损坏,数据也不会丢失。至于高度冗余(High Redundancy)就更安全了,它至少需要三个failure磁盘组,也就是一份AU有一主多从的镜像,理论上将更加安全。 如果磁盘发生损坏,那么损坏的磁盘默认自动offline并被drop掉,不过该磁盘所在的磁盘组仍将保持MOUNT状态,如果该盘有镜像的话,那么应用不会有影响,镜像盘将自动实现接管 (只要不是所有failure磁盘组都损坏掉),否则的话,该磁盘组将自动DISMOUNT。 比如,某标准冗余的failure组有6个盘(对应6个裸设备),假如说此时坏了一块盘,没关系,操作继续,坏了那块会被自动dropped,剩下的5块盘仍然能够负担起正常的读写操作。ASM 扩展性:最多支持63个磁盘组;最多支持10000个磁盘;最大支持4pb/磁盘;最大支持40 exabyte/ASM存储;最大支持1百W个文件/磁盘组;外部冗余时单个文件最大35tb,标准冗余时单个文件最大5.8tb,高冗余度时单个文件最大3.9tb。 加载及卸载磁盘组 UMOUNT磁盘组的话务必慎重操作,要确保UNMOUNT的磁盘组中保存的文件对应的数据库当前未启动,而且该操作也会直接导致数据库SHUTDOWN。只有mount的磁盘组才能被数据库使用并执行add/drop操作, ASM中的磁盘组默认会在ASM实例启动时自动加载 . SQL> select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;GROUP_NUMBER NAME STATE TOTAL_MB FREE_MB------------ ------------------------------ ----------- ---------- ----------1 ASMDATA1 MOUNTED 20472 186672 ASMDATA2 MOUNTED 16378 14621将ASMDATA2磁盘组UNMOUNT:SQL> alter diskgroup ASMDATA2 dismount;Diskgroup altered.SQL> select group_number,name,state from v$asm_diskgroup; GROUP_NUMBER NAME STATE------------ ------------------------------ -----------1 ASMDATA1 MOUNTED0 ASMDATA2 DISMOUNTED SQL> alter diskgroup ASMDATA2 mount; -- 再挂载.Diskgroup altered. 四 , ASM 在Linux下的相关命令ORACLEASM , ASMCMD, ASMCA 1. ORACLEASM命令 安装asm lib后我们可以通过man 来查看相关命令:[grid@rac01 tmp]$ man oracleasm 使用 ASMLib 创建 ASM Disks , 语法如下: # /usr/sbin/oracleasm createdisk disk_name device_partition_name其中 disk_name 是你为 ASM Disk 选择的一个名字,名字只能包含数字字母及下划线,比如OCR01 , DATA01 等. device_partition_name 标示为 ASM 的系统磁盘分区,如/dev/sdb1 , /dev/sdc1 等 如果你发现设置错误或需要 unmark这个磁盘,可以运行如下命令:# /usr/sbin/oracleasm deletedisk disk_name 设置共享磁盘。 # /usr/sbin/oracleasm createdisk OCR_VOTE01 /dev/sdb1# /usr/sbin/oracleasm createdisk ASM_DATA01 /dev/sdc1使用 listdisks 命令确认他们的可用性。 [root@rac001 ~]# /usr/sbin/oracleasm listdisksASM_DATA01ASM_DATA02ASM_FRAOCR_VOTE01 在所有其他节点上以 root 用户身份,使用 scandisks 命令扫描已经创建的 ASM磁盘,也就是说,我们只需要在节点 1 上创建 ASM 磁盘,其他节点不需要。 [root@rac002 ~]# /usr/sbin/oracleasm scandisksReloading disk partitions: doneCleaning any stale ASM disks...Scanning system for ASM disks...Instantiating disk "OCR_VOTE01"Instantiating disk "ASM_DATA01"Instantiating disk "ASM_DATA02"Instantiating disk "ASM_FRA" 最后在其他节点通过 listdisks 检查 ASM 磁盘的可用性。 [root@rac002 ~]# /usr/sbin/oracleasm listdisksASM_DATA01ASM_DATA02ASM_FRAOCR_VOTE01 2 . ASMCMD 命令 [root@rac01 ~]# su - grid[grid@rac01 ~]$ iduid=501(grid) gid=501(oinstall) groups=501(oinstall),504(asmadmin),506(asmdba),507(asmoper)[grid@rac01 ~]$ asmcmdASMCMD> 如果 asm -p 进入的话, 就会带路径 (path)[grid@rac01 ~]$ asmcmd -pASMCMD [+] > cd oradataASMCMD [+oradata] > 获取帮助 help [command] :ASMCMD [+oradata] > help dudu [-H] [dir]Display total space used for files located recursively under [dir],similar to "du -s" under UNIX; default is the current directory. Twovalues are returned, both in units of megabytes. The first value doesnot take into account mirroring of the diskgroup while the second does.For instance, if a file occupies 100 MB of space, then it actuallytakes up 200 MB of space on a normal redundancy diskgroup and 300 MBof space on a high redundancy diskgroup.[dir] can also contain wildcards.The -H flag suppresses the column headers from the output.ASMCMD [+oradata] > 3 . ASMCA 命令 运行ASMCA创建磁盘组。 以grid用户登入开始ASMCA配置磁盘组,因为是图形界面,我们使用grid用户的vnc session ( 如果是root的vnc进入到su 到grid会报错 ) .[grid@rac001 bin]$ pwd /u01/grid/11.2.0/bin[grid@rac001 bin]$ ./asmca 图形界面显示到Disk Groups 。我们可以看到先前配置的OCR_VOTE已经在列。点击下面的create 创建datafile及flash recovery area的ASM磁盘组。磁盘组名称ORADATA, 冗余部分选择External, 点击磁盘为ORCL:ASMDATA01,点击OK.继续create磁盘组名称ORAFLASH, 冗余部分选择External, 磁盘为ORCL:ASMDATA02,点击OK.全部OK后点击QUIT退出。 4 . ASMLib 及其他常用命令 ORCL关键字说明:Linux ASMLib 的发现字符串ASMLib 使用发现字符串来确定 ASM 正在请求哪些磁盘。一般的 Linux ASMLib 使用glob 字符串。字符串必须以 "ORCL:" 为前缀。磁盘通过名称来指定。可以通过发现字符串 "ORCL:VOL1" 在 ASM 中,发现以名称 "VOL1" 创建的磁盘。类似地,可以用发现字符串 "ORCL:VOL*" 来查询所有以字符串 "VOL" 开始的磁盘。不能在发现字符串中用路径名称来发现磁盘。如果缺少前缀,那么一般的 Linux ASMLib将完全忽略发现字符串,认为它适用于一个不同的 ASMLib。唯一的例外是空字符串 (""),它被认为是一个全通配符。这与发现字符串 "ORCL:*" 完全等价。其他常用命令 : SQL>create diskgroup dg2 external redundancy disk ORCL:VOL3; SQL>drop diskgroup dg2 including contents; 默认是可以删除empty的diskgroup , 如果磁盘组不是空的, 不接including contents 会报错 . 指定 including contents 即删除磁盘组中所有文件,即使不是为空 .SQL>alter diskgroup dg1 add disk ORCL:VOL3;Diskgroup altered. SQL>alter diskgroup dg1 rebalance power 8 ;Diskgroup altered. SQL>alter diskgroup dg1 check all ; -- 检查ASM磁盘组内部consistencyDiskgroup altered. SQL>alter diskgroup dg1 check all repair; -- 检查并通知ASM修复错误Diskgroup altered.5 . ASM与文件系统之间的迁移及文件传输/拷贝 A, 文件传输或拷贝 10g 下ASM下的文件和OS文件系统是不能互相拷贝的 。11g 下从ASM到文件系统或文件系统到ASM 都很方便 。ASMCMD> cp spfileracdb.ora /tmpcopying +oradata/racdb/spfileracdb.ora -> /tmp/spfileracdb.ora[root@rac01 tmp]# ls -al spfileracdb.ora-rw-r----- 1 grid oinstall 4096 Dec 4 06:05 spfileracdb.ora 10g 下如果需要实现文件拷贝有以下方式 : rmandbms_file_transfer B. 利用RMAN进行迁移 .
到此,关于“Oracle11g RAC下ASM的管理与维护方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~