oracle_asm理解

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 17:25 点击:

ASM是一个黑盒子,黑盒子的好处就是里面的东西我们不用费脑细胞管,坏处就是你想费脑细胞也没机会。
先看个示例:
 
登入数据库实例

创建一个自己的表空间,创建一个用户,创建一个表

SQL> create tablespace ts_test datafile '+DGROUP1' size 200M;
Tablespace created.
SQL> create user kamus identified by pass default tablespace ts_test;
User created.
SQL> grant dba to kamus;
Grant succeeded.
SQL> conn kamus/pass
Connected.
SQL> create table t_test as select * from dba_objects;
Table created.
SQL> select count(*) from t_test;
COUNT(*)
------------------------
10319

 

从中可以看出,与原来创建表空间时需要指定datafile路径与名字不同,这里只要指出想让此表空间去哪个ASM组就行了。
具体oracle怎么分配这(些)datafile,怎么避免热点,就些就不用我们操心了。

ASM提供了3种冗余方法。

external redundancy表示Oracle不帮你管理镜像,功能由外部存储系统实现,比如通过RAID技术。
normal redundancy(默认方式)表示Oracle提供2路镜像来保护数据。
high redundancy表示Oracle提供3路镜像来保护数据。

ASM可以动态增加和删减硬盘,假设ASM的diskgroup A为normal,假设原本的diskgroup 有2块盘,当增加2块盘进入后,原来分布于2块盘上的数据将由oracle自动平均分布到4块盘上,达到避免热点,均衡I/O的效果。(不知道normal下是不是必须是偶数块硬盘) 当删除一块时,不会有影响,重新插入后就能自动写上去。
11G下默认拔出硬盘3.5小时内oracle是不会认为你要重写的,即当3.5小时后再插入,硬盘数据将被重写。10G下不知道。

 
测试ASM数据库的automatic rebalance功能 添加两个虚拟硬盘,分别是sdf和sdg,大小500M 启动系统,启动ASM实例,启动数据库 实例

创建ASM磁盘

#/etc/init.d/oracleasm createdisk VOL5 /dev/sdf
#/etc/init.d/oracleasm createdisk VOL6 /dev/sdg
登入ASM实例检查v$asm_disk视图,发现这两个新加的硬盘已经找到了 将硬盘添加到磁盘组中

SQL> ALTER DISKGROUP DGROUP1 ADD FAILGROUP FGROUP1 DISK 'ORCL:VOL5' FAILGROUP FGROUP2 DISK 'ORCL:VOL6';
Diskgroup altered.
检查数据库的auto rebalance工作进度,数据库正在将原来分布在两个磁盘上的数据平均分配到三个磁盘上

SQL> SELECT group_number, operation, state, est_work, sofar, est_rate, est_minutes FROM v$asm_operation;
SQL> /
GROUP_NUMBER OPERATION STATE EST_WORK SOFAR EST_RATE EST_MINUTES
------------ ---------- -------- ---------- ---------- ---------- -----------
1                     REBAL        RUN       275        39        148
1
以上表示数据重新分配的工作已经成功完成

SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;

NAME ALLOCATION_UNIT_SIZE TOTAL_MB
------------------------------ -------------------- ----------
DGROUP1      1048576          5120

 
 
登入ASM实例,将磁盘从磁盘组中删除

SQL> alter diskgroup dgroup1 drop disk VOL4;
Diskgroup altered.
SQL> SELECT group_number, operation, state, est_work, sofar, est_rate, est_minutes FROM v$asm_operation;
GROUP_NUMBER OPERATION STATE EST_WORK SOFAR EST_RATE EST_MINUTES
------------ ---------- -------- ---------- ---------- ---------- -----------
1                    REBAL          RUN      566         46        151
3
SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;
NAME ALLOCATION_UNIT_SIZE TOTAL_MB
---------------------------

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Table函数使用简介
      • Oracle数据库Constraint约束的常用操作及异常处理
      • Bulk Collect性能分析(zz)
      • export/import的使用
      • OCP043第十五讲 Database Security
      • ORACLE10gr2数据导入MySQL方案
      • oracle 让sys用户可以使用isqlplus
      • 在oracle数据库下使用iSQL*Plus DBA访问数据库
      • Oracle行列转换小结
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1