分类: Oracle
2010-11-29 10:26:54
ASM
介绍 ASM 实例由SGA 和后台进程组成。
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 所需要的空间,在加上额外的2MB就可以了。 在实际工作中一般不需要考虑ASM SGA的配置, 使用Oracle 提供的缺省值就可以了。 后台进程 ASM 实例比RDBMS 实例多2个进程: RBAL 和 ABRn。 RBAL: 这个进程也叫Rebalancer进程, 负责规划ASM 磁盘组的Reblance活动。 ABRn:是RBAL进程的子进程,这个进程在数量上可以有多个, n从1~9, 这组进程负责真正完成Reblance活动。 使用ASM 作为存储的RDBMS 实例也会多出2个进程: RBAL 和 ASMB RBAL: 这个进程的主要功能是打开每个磁盘的所有磁盘和数据的Rebalance。 ASMB: 这个进程作为ASM 实例和数据库实例之间的信息通道。 这个进程负责与ASM 实例的通信, 它先利用Diskgroup Name 从CSS 获得管理该Diskgroup 的ASM 实例的连接串, 然后建立到ASM 的持久连接, 两个实例之间通过这条连接定期交换信息,同时也是一种心跳机制。 RDBMS 实例要想使用ASM 作为存储, RDBMS 实例必须在启动时从ASM 实例获得Extent Map, 以后发生磁盘组的维护操作, ASM 实例还要把Extent Map的更新信息通知给RDBMS 实例, 这2个实例间的信息交换就是他你哦刚过ASMB 进程完成的。 这也就为什么: ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。 注意: ASM 实例和数据库实例的关系可以是1:1, 也可以是1:n。如果是1:n, 最好为ASM 安装单独的ASM_HOME。 ASM 实例的创建和删除也可以用DBCA 这个命令来操作。在dbca 的第一个界面选择配置自动存储管理就可以了。 ASM 实例需要CSS 进程, 如果是非RAC 环境, 在启动ASM 实例之前会提示用脚本 $ORACLE_HOME/bin/localconfig add 启动CSS
1启ASM实例
NOMOUNT:仅启动实例
MOUNT,OPEN,启动实例,并加载磁盘(磁盘组,未提示警告,则提示警告信息)。OPEN选项对于ASM实例无意义,等同于MOUNT
FORCE:先执行shutdown abort,在startup
[]$export ORACLE_SID=+ASM
[]$startup nomount
SQL> select name,state from v$asm_diskgroup;
SQL> select instance_name,status from v$instance;
SQL> alter diskgroup all mount;
10g版本中,asm启动前,确保css守护进程已经启动
[]$crsctl check cssd
2>关闭ASM
SQL>shutdown immediate
3>初始化参数
INSTANCE_TYPE=ASM | 数据库实例为RDBM |
ASM_POWER_LIMIT | rebalance的程度 ,0-11,低到高 |
ASM_DISKSTRING | 设置ASM启动时检查的磁盘 |
ASM_DISKGROUPS | alter diskgroup all mount语句时要加载的磁盘组 |
4>管理ASM磁盘
于ASM相关的动态性能视图
SQL> select * from dict where table_name like 'V$ASM_%';
添加,删除磁盘
ASM自动平衡。
磁盘组与failure磁盘组的概念
外部冗余 | 于failure磁盘组无关 |
标准冗余 | N磁盘个,至少有两个failure磁盘组,提高冗余 |
高度冗余 | N磁盘个,至少有三个failure磁盘组,提高冗余 |
当设置标准冗余,高度冗余时,每个磁盘只能属于一个failure磁盘组
磁盘发生损坏。损坏的磁盘默认自动office并drop掉。磁盘组,提供了冗余,仍保持MOUNT状态
ASM 扩展性
最多支持63个磁盘组;
最多支持10000个磁盘;
最大支持4pb/磁盘;
最大支持40 exabyte/ASM存储;
最大支持1百W个文件/磁盘组;
外部冗余时单个文件最大35tb,标准冗余时单个文件最大5.8tb,高冗余度时单个文件最大3.9tb。
4.1>添加磁盘组
CREATE DISKGROUP diskgroup_name
[ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ]
[ FAILGROUP failgroup_name ]
DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...; //通过FORCE选项来强制修改该盘所属磁盘组
4.2修改磁盘组
ALTER DISKGROUP DATA add disk '/dew/raw/raw7' name date_1;
4.3删除磁盘
alter diskgroup asmdisk2 drop disk asmdisk2_0001;
由于未被马上删除,DBA可以通过 alter diskgroup asmdisk2 undrop disks; 取消删除
4.4修改磁盘大小
SQL> alter diskgroup asmdisk2 resize disk asmdisk2_0000 size 1000m;
4.5手动平衡磁盘组
SQL> alter diskgroup asmdisk2 rebalance power 5;
4.6Mount/unmount 磁盘组
手工加载
SQL> select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;
alter diskgroup asmdisk2 dismount;
alter diskgroup asmdisk2 mount;
4.7管理目录,文件
创建目录
SQL> alter diskgroup asmdisk2 add directory '+ASMDISK2/JSS1';
修改目录名
SQL> alter diskgroup asmdisk2 rename directory '+ASMDISK2/JSS1'
删除目录
SQL> alter diskgroup asmdisk2 drop directory '+ASMDISK2/JSS2';
4.8管理别名
增加别名
SQL> alter diskgroup asmdisk2 add alias '+ASMDISK2/repdb/datafile/temp01.dbf' for '+ASMDISK2/repdb/TEMPFILE/TEMP.267.714576831';
修改别名
SQL> alter diskgroup asmdisk2 rename alias '+ASMDISK2/repdb/datafile/temp01.dbf' to '+ASMDISK2/repdb/TEMPFILE/temp01.dbf';
删除别名
SQL> alter diskgroup asmdisk2 drop alias '+ASMDISK2/repdb/TEMPFILE/temp01.dbf';
4.9删除磁盘组中文件/别名
SQL> alter diskgroup asmdisk2 drop file '+ASMDISK2/repdb/datafile/temp01.dbf';
指定为别名,就只删除了别名,并未真正将文件删除。删除文件将自动删除别名。
4.10删除磁盘组
drop diskgroup gpname ,
如果磁盘组非空,报错,附加including contents。如果使用了spfile。将自动修改spfile参数
5>管理ASM磁盘中的文件
ASM(同一个文件)在保存时,也并非保存在某个磁盘,打散。
由ASM自动空盒子,文件名ASM通过OMF管理
5.1Asm 中的文件名
+diskgroup/dbname/file_type/file_type_tag.file.incarnation
+diskgroup :磁盘组名称;
dbname :的DB_UNIQUE_NAME参数值;
file_type :创建的文件类型,比如
CONTROLFILE/DATAFILE/ONLINELOG/ARCHIVELOG/TEMPFILE/BACKUPSET/FLASHBACK等等,类型众多此处不一一例举;
file_type_tag :文件类型的标签,比如表空间对应的通常为该表空间名称;
file.incarnation :文件序号+incarnation,用来确保文件的唯一;
chinaunix网友2011-06-05 02:03:58
大连法律咨询在线 http://www.fabowang.com 大连律师在线咨询 http://www.fabowang.com 大连法律顾问网 http://www.fabowang.com 大连律师咨询 http://www.fabowang.com