oracle动态磁盘管理

一、ASM发展:

  oracle 想做硬件:
    收购sum公司的小型机业务
    推出一体机Exadata
      1、sum服务器
      2、磁盘柜(没做存储)
        推出asm建库方式配合一体机(自动使用磁盘柜的盘)(抛弃raid方式)
        把每块盘加入磁盘组(dg),加入dg后自动做条带化

二、ASM优点:
  i/o 性能优化:
    做条带(加冗余) 

    磁盘组的三种冗余方式:
      external (外部冗余)(非一体机环境使用)

        由底层raid做冗余

      normal(每个数据存2份)(专门为一体机设计)
        先写主数据,然后找空的位置(未写相同的主数据的)写副本数据
        相同的主数据和副本数据不会再同一个盘上面
      hight(最少每个数据存3份)(专门为一体机设计)
        利用率少(很少使用)

  数据文件移动和重组织:
    自动合理分配每个盘的数据(动态平衡)
  文件名管理:

    自动文件名管理
  集群文件系统:

    在多台计算机之上,之间通过某种方式相互通信从而将集群内所有存储空间资源整合、虚拟化并对外提供文件访问服务的文件系统
  裸设备管理:
    自动使用裸设备

三、使用ASM管理需要+ASM实例:

+ASM实例:
  进程和内存组合
  只能启动到nomount状态
  管理asm使用的磁盘和磁盘组
  打开数据库时需要先开+ASM 在开asm数据库(关闭反过来)
  +ASM实例的进程:
    RBAL进程 加盘减盘时才工作

  10g 我们使用dbca来创建asm实例,11g我们使用grid软件来创建asm实例


四、ASM权限管理:
  10g asm 最高权限 sysdba
  11g asm 最高权限 sysasm

五、ASM的磁盘组:

数据库
  可包含多个磁盘组
  磁盘组能被多个数据库使用
磁盘组
  有多个磁盘
  一个磁盘不能属于多个磁盘组

分配最小单元(AU) (类似lvm 中的pp)
  粗粒度划分:
    默认1M
    允许一次分配的大小:2的n次方(最大64M)
  细粒度划分:
    可以分配比1M更小的空间

六、磁盘组管理:

查看磁盘:

select name,path from v$asm_dsik;
  删盘时用到:name
  加盘时用到:path

创建组:  

  create diskgroup DATA2 external redundancy disk 'ORCL:ASMDISK04','ORCL:ASMDISK05' ATTRIBUTE 'compatible.asm' = '11.2';

  #名字data2 ,2块盘路径: 'ORCL:ASMDISK04','ORCL:ASMDISK05'
加盘:
  alter diskgroup data add disk 'ORCL:ASMDISK06';
    #最好里面每个盘大小一样
    #最好一块一块的加(一次性加多个盘动态平衡数据很慢)

删盘
  alter diskgroup data drop disk ASMDISK03;
    #只剩下一块盘只能删组
删组:
  drop diskgroup data2 including contents;
    #正在使用的无法删除

查询磁盘组的故障组分配:
  SELECT G.NAME,D.disk_number,D.STATE,D.redundancy,D.NAME,D.PATH,D.FAILGROUP,D.FAILGROUP_TYPE FROM V$asm_diskgroup g,v$asm_disk d where g.group_number=d.group_number;


查看磁盘组,(空间情况)
  select name name2,state,type,free_mb,total_mb,usable_file_mb from v$asm_diskgroup;

查看磁盘情况

  select GROUP_NUMBER,free_mb,total_mb,disk_number,MOUNT_STATUS,mode_status,STATE,
HEADER_STATUS,name name2,PATH from v$asm_disk order by 4,5;

查看asm动态平衡:
  SQL> select * from v$asm_operation;

  #删盘时一定要注意等待动态平衡完成才能对磁盘进行(抹除磁盘头,格式化等操作)否则会造成数据丢失。

只要动态平衡没完成误删除时可以回退:

   SQL> alter diskgroup asmdisk2 drop disk asmdisk2;
   SQL> alter diskgroup asmdisk2 undrop disks;

原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/7099033.html