说明:文章是用windows live writer自动上载的,有些特殊符号显示不正确,如“>”显示为“>”。须修改之处太多,无暇修改。阅读不便之处,请见谅!

特点:

  • ASM能代替外部LVM或FS的功能,不依赖外部数据存储结构。
  • ASM内含多种存储冗余功能如镜像,不依赖外部数据冗余功能。
  • 能够自动将数据均衡分布在磁盘组内所有磁盘中,从而提高系统性能。
  • 跨平台使用,配置和管理界面统一,简化了用户管理。

1、在linux下须安装相应补丁包和驱动程序(按以下顺序安装):

# rpm -ivh oracleasm-support-2.1.3-1.el5.i386.rpm

# rpm -ivh oracleasm-2.6.18-164.el5-2.0.5-1.el5.rpm

# rpm -ivh oracleasmlib-2.0.4-1.el5.i386.rpm

在商用unix下是不用安装这些驱动程序的,如AIX下直接使用rhdisk。实际上,在linux下也可以直接使用磁盘或磁盘分区(须转换为裸设备),后面会有介绍。

2、配置ASM环境

# /etc/init.d/oracleasm configure

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver. The following questions will determine whether the driver is

loaded on boot and what permissions it will have. The current values

will be shown in brackets ('[]'). Hitting <ENTER> without typing an

answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle

Default group to own the driver interface []: oinstall

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]:

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver: [ OK ]

Scanning the system for Oracle ASMLib disks: [ OK ]

若配置后显示失败(failure),则检查oracleasm的版本是否与操作系统内核版本一致。

检查方法:#uname –r是否与oracleasm-2.6.18-164.el5-2.0.5-1.el5.rpm 是否对应,若不一致则到下面网站下载:http://www.oracle.com/technetwork/topics/linux/downloads/rhel5-084877.html。若检查版本是一致的,则可尝试执行如下命令:# oracleasm update-driver。

3、创建和删除ASM磁盘

创建ASM磁盘:

# /etc/init.d/oracleasm createdisk data_vol01_sdb5 /dev/sdb5 
Marking disk "data_vol01_sdb5" as an ASM disk:             [  OK  ] 
# /etc/init.d/oracleasm createdisk data_vol02_sdb6 /dev/sdb6 
Marking disk "data_vol02_sdb6" as an ASM disk:             [  OK  ]

列出ASM磁盘:

# /etc/init.d/oracleasm listdisks 
DATA_VOL01_SDB5 
DATA_VOL02_SDB6 
FLASH_VOL_SDB1

删除ASM磁盘:

# /etc/init.d/oracleasm deletedisk FLASH_VOL_SDB1 
Removing ASM disk "FLASH_VOL_SDB1":                        [  OK  ]

4、创建ASM磁盘组:

(1)启动dbca

# su - oracle 
$ dbca

(2)启动CSS服务

提示用root用户运行$ORACLE_HOME/bin/localconfig add,使CSS(Oracle Cluster Synchronization Service,集群同步服务)启动并加入inittab文件,使其开机自动启动。

# /u01/db_1/bin/crsctl check cssd 
CSS appears healthy

css服务正常。

(3)设置ASM实例的sys用户密码

(4)启动ASM实例

(5)创建磁盘组

三种冗余模式:

  1. High:数据将镜像两份,磁盘组中至少3个磁盘。
  2. Normal:数据镜像一份,磁盘组中至少2个磁盘。
  3. Extenal:外部提供数据保护,如:RAID盘。

磁盘的八种状态:

  • UNKNOWN - Automatic Storage Management disk header has not been read

  • CANDIDATE - Disk is not part of a disk group and may be added to a disk group with the ALTER DISKGROUP statement

  • INCOMPATIBLE - Version number in the disk header is not compatible with the Automatic Storage Management software version.

  • PROVISIONED - Disk is not part of a disk group and may be added to a disk group with the ALTER DISKGROUP statement. The PROVISIONED header status is different from the CANDIDATE header status in that PROVISIONED implies that an additional platform-specific action has been taken by an administrator to make the disk available for Automatic Storage Management.

  • MEMBER - Disk is a member of an existing disk group. No attempt should be made to add the disk to a different disk group. The ALTER DISKGROUP statement will reject such an addition unless overridden with the FORCE option

  • FORMER - Disk was once part of a disk group but has been dropped cleanly from the group. It may be added to a new disk group with the ALTER DISKGROUP statement.

  • CONFLICT - Automatic Storage Management disk was not mounted due to a conflict

  • FOREIGN - Disk contains data created by an Oracle product other than ASM. This includes datafiles, logfiles, and OCR disks.

冗余方式为normal,成员盘两个,则取两盘中容量最小为可用空间。但在normal和high方式下,磁盘组的可用容量还与failgroup组中的磁盘有关,后面会详细介绍。

5、使用裸设备创建ASM磁盘组:

(1)创建裸设备

# vi /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N" 
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N" 
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N" 
ACTION=="add", KERNEL=="sdb5", RUN+="/bin/raw /dev/raw/raw4 %N" 
KERNEL=="raw[1-4]",OWNER="oracle",GROUP="oinstall",MODE="640"

注:阴影部分,不可以有超过大于10的数。也就是说如果用这种方法改变裸设备的所主,设备编号则不能有大于10,如:raw10,raw11…等这样的设备名。如果有可用chown改变。

# start_udev 
Starting udev:                                             [  OK  ] 
# ls –l /dev/raw 
total 0 
crw-r----- 1 oracle oinstall 162, 1 Jan 31 17:02 raw1 
crw-r----- 1 oracle oinstall 162, 2 Jan 31 17:02 raw2 
crw-r----- 1 oracle oinstall 162, 3 Jan 31 17:02 raw3 
crw-r----- 1 oracle oinstall 162, 4 Jan 31 17:02 raw4

(2)创建磁盘组

# su - oracle 
$ dbca

由于/dev/sdb5即raw4已经是data_grp01的成员盘,所以不会显示。

冗余方式为external,成员盘两个,则磁盘组可用容量为两盘容量之和(不包括开销)。

6、使用ASM磁盘组

创建数据库(截图步骤中部分省略):

$ export ORACLE_SID=+ASM

$ lsnrctl start

7、ASM磁盘维护

(1)数据库启动顺序:CSS服务—&gt;ASM实例—&gt;Oracle数据库实例

数据库关闭顺序:Oracle数据库实例—&gt;ASM实例—&gt;CSS服务

(2)登入ASM实例

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

SQL&gt; show parameter name;

NAME                     TYPE            VALUE 
------------------------------------ ---------------------- ------------------------------ 
db_name                  string 
db_unique_name                 string            +ASM 
global_names                 boolean            FALSE 
instance_name                 string            +ASM 
service_names                 string            +ASM

(3)登录数据库

$export ORACLE_SID=asmora10

$ sqlplus / as sysdba

SQL&gt; show parameter instance_name;

NAME                     TYPE     VALUE 
------------------------------------ ----------- ------------------------------ 
instance_name                 string     asmora10 
SQL&gt; show parameter spfile;

NAME                     TYPE     VALUE 
----------------------------- ----------- ------------------------------ 
spfile                     string     +DATA_GRP01/asmora10/spfileasm 
                                               ora10.ora

SQL&gt; select name from v$datafile 
  2  union 
  3  select member from v$logfile 
  4  union 
  5  select name from v$controlfile 
  6  union 
  7  select name from v$tempfile;

NAME 
-------------------------------------------------------------------------------- 
+DATA_GRP01/asmora10/controlfile/current.260.741893725 
+DATA_GRP01/asmora10/datafile/sysaux.257.741893599 
+DATA_GRP01/asmora10/datafile/system.256.741893597 
+DATA_GRP01/asmora10/datafile/undotbs1.258.741893599 
+DATA_GRP01/asmora10/datafile/users.259.741893599 
+DATA_GRP01/asmora10/onlinelog/group_1.261.741893725 
+DATA_GRP01/asmora10/onlinelog/group_2.262.741893737 
+DATA_GRP01/asmora10/onlinelog/group_3.263.741893745 
+DATA_GRP01/asmora10/tempfile/temp.264.741893765 
+FLASH_GRP01/asmora10/controlfile/current.256.741893725 
+FLASH_GRP01/asmora10/onlinelog/group_1.257.741893731

+FLASH_GRP01/asmora10/onlinelog/group_2.258.741893743 
+FLASH_GRP01/asmora10/onlinelog/group_3.259.741893751

13 rows selected.

(4)查看磁盘组及ASM磁盘

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

查看磁盘组状况:

SQL&gt; select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;

NAME          STATE             TYPE        TOTAL_MB    FREE_MB USABLE_FILE_MB OFFLINE_DISKS 
------------- ---------------------- ------------ ---------- ---------- -------------- ------------- 
DATA_GRP01    MOUNTED             NORMAL        4784       2766       1383           0 
FLASH_GRP01   MOUNTED             EXTERN        3826       3597       3597           0

手动mount磁盘组:

SQL&gt; alter diskgroup data_grp01 mount;

手动卸载磁盘组(在数据库关闭情况下):

SQL&gt; alter diskgroup flash_grp01 dismount;

查看磁盘状况:

SQL&gt; select name,header_status,mount_status,state,total_mb,path from v$asm_disk;

(5)添加、删除磁盘组

添加磁盘组:

SQL&gt; create diskgroup data_grp02 high redundancy disk 'ORCL:DATA_VOL03_SDB7','ORCL:DATA_VOL04_SDB8','ORCL:DATA_VOL03_SDB9';

删除磁盘组:

SQL&gt; drop diskgroup data_grp02;

(6)向external磁盘组中添加、删除磁盘

添加磁盘到磁盘组

SQL&gt; alter diskgroup flash_grp01 add disk '/dev/raw/raw3' name flash_grp01_03;

查看磁盘组中磁盘重新平衡状况:

SQL&gt; select group_number,operation,state,est_work,sofar,est_rate,est_minutes from v$asm_operation;

SQL&gt; show parameter power

NAME                     TYPE            VALUE 
------------------------------------ ---------------------- ------------------------------ 
asm_power_limit              integer            1

这参数指定重新平衡磁盘数据时暂用带宽的力度。取值为0~11。数值越大,对系统占用的I/0资源越多,重新平衡动作将越快完成。此参数也可以在添加或删除磁盘动作时指定,如:

SQL&gt; alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL03_SDB7' rebalance power 11;

从磁盘组中删除磁盘:

SQL&gt; alter diskgroup flash_grp01 drop disk flash_grp01_03;

(7)向磁盘组中添加、删除磁盘

添加磁盘:

SQL&gt; alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL03_SDB7','ORCL:DATA_VOL04_SDB8';

删除磁盘:

SQL&gt; alter diskgroup data_grp01 drop disk 'DATA_VOL01_SDB5';

注意:如果删除normal或high磁盘组中的磁盘,删除磁盘后磁盘组中磁盘的数量必须不少于2个或3个。若不能满足这个要求,则被删除的磁盘会处于hung状态。如下所示:

这种情况下应先放弃drop操作:

SQL&gt; alter diskgroup data_grp01 undrop disks;

如果确定要删除磁盘,则应先向组内添加一块新的磁盘后再删除:

SQL&gt; alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL02_SDB6' drop disk 'DATA_VOL03_SDB7';

8、Failgroup故障组

(1)概念

在normal和high保护模式下,ASM会将数据镜像2份或三份,如(以normal磁盘组为例):

两个磁盘的情况下,数据A,B,C,D在两个磁盘上互为镜像。

三个磁盘的情况下,数据A,B,C,D和镜像在不同磁盘,并均匀分布。

四个磁盘情况下,数据均匀分布。考虑如下情况:

两块磁盘损坏,则数据A将面临丢失。为解决这个问题,引出failgroup的概念:在同一ASM磁盘组内,一个或多个磁盘组成一个failgroup,镜像在不同failgroup间进行,同样一个failgroup的不同磁盘间不允许做镜像。这样,如果同一个failgroup组内的磁盘处于同一磁盘控制器的情况下(比如,上图中上面两块受损的磁盘由同一个SCSI控制器掌管),可以避免磁盘控制器损坏导致的数据损失。也就是说,同一ASM磁盘组内任意一个failgroup内的磁盘损坏都不会造成数据丢失。当然,这种情况在external模式下是不成立的。

所以,上述情况如果在每两块磁盘为一个failgroup的情况下,数据分布应该是这样的:

(2)查看failgroup

SQL&gt;  select name,header_status,mount_status,total_mb,failgroup,path from v$asm_disk;

默认情况下,在创建ASM磁盘组时,每个磁盘均属于以该磁盘名命名的failgroup。

(3)指定磁盘的failgroup

在normal/high保护模式下,failgroup至少有2/3个。

SQL&gt; create diskgroup data_grp02 normal redundancy failgroup fg01 disk '/dev/raw/raw3' failgroup fg02 disk '/dev/raw/raw4';

SQL&gt; alter diskgroup data_grp02 add failgroup fg01 disk 'ORCL:DATA_VOL03_SDB9' name data_grp02_0002;

从上面data_grp02磁盘组的可用空间可以看出,由于镜像的原因,failgroup中磁盘的分配情况也会影响到磁盘组的可用空间。如下图所示:

(4)删除failgroup中磁盘

SQL&gt; alter diskgroup data_grp02 drop disk 'DATA_GRP02_0001';

failgroup中最后一个磁盘不能被删除。

SQL&gt; alter diskgroup data_grp02 undrop disks;

9、手工控制ASM

$ export ORACLE_SID=+ASM

$ asmcmd

ASMCMD&gt; ? 
        commands: 
        --------  
        cd 
        du 
        find 
        help 
        ls 
        lsct 
        lsdg 
        mkalias 
        mkdir 
        pwd 
        rm 
        rmalias 
ASMCMD&gt; ls -l 
State       Type    Rebal  Unbal  Name 
MOUNTED     NORMAL  N      N      DATA_GRP01/ 
MOUNTED     NORMAL  N      N      DATA_GRP02/ 
DISMOUNTED          N      N      FLASH_GRP01/ 
ASMCMD&gt; cd data_grp02 
ASMCMD&gt; ls 
ASMCMD&gt; mkdir ttt 
ASMCMD&gt; ls -l 
Type  Redund  Striped  Time             Sys  Name 
                                        N    ttt/ 
ASMCMD&gt; lsdg 
State       Type    Rebal  Unbal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Name 
MOUNTED     NORMAL  N      N         512   4096  1048576      7176     5093             2392            1350              0  DATA_GRP01/ 
MOUNTED     NORMAL  N      N         512   4096  1048576      7175     7071             2870            2100              0  DATA_GRP02/ 
DISMOUNTED          N      N         512   4096  1048576         0        0                0               0

10、裸设备迁移至ASM环境

待续。。。

本文转自 d185740815 51CTO博客,原文链接:http://blog.51cto.com/luotaoyang/488064,如需转载请自行联系原作者

oracle数据库存储管理--ASM相关推荐

  1. 从本地文件系统迁移oracle数据库到ASM

    从本地文件系统迁移oracle数据库到ASM 新建grid用户及软件安装目录并给予权限 [root@ora11g ~]# groupadd -g 5000 asmadmin [root@ora11g ...

  2. Oracle数据库asm原理,Oracle数据库中ASM功能解剖

    ASM的全称是Automated Storage Management,通俗的讲 就是自动存储管理,ASM是自Oracle10g版本Oracle推出的***功能之一.这是Oracle数据库提供的一个卷 ...

  3. Oracle 自动存储管理 (ASM)

    1. 在 Oracle ASM 中添加磁盘和删除磁盘操作 1.1 Automatic Storage Management ASM:自动存储管理 Oracle 在 10g 版本之前仅将数据存储在文件系 ...

  4. oracle数据库存储管理总结,oracle数据库存储管理

    o  理解数据库的逻辑存储结构 o  管理表空间和数据文件 o  管理控制文件 o  管理重做日志文件 o  Block(块)最基本的存储单元 o  Extent(区)一次分配的连续的块 o  Seg ...

  5. Oracle数据库精讲与疑难解析(第2版)

    Oracle数据库精讲与疑难解析(第2版) 赵振平编著 ISBN978-7-121-20021-2 2013年4月出版 定价:148.00元 1100页 16开 编辑推荐 耗时3年,作者曾为本书辞职在 ...

  6. oracle应用技术期末考试,Oracle数据库应用技术

    第1章Oraclellg数据库安装与卸载 1.1Oraclellg数据库服务器安装准备 1.2安装Oraclellg数据库服务器 1.3检查数据库服务器的安装效果 1.3.1系统服务 1.3.2文件体 ...

  7. Oracle数据库自动存储管理(ASM)

    关于ASM的讨论很多,但是到底什么是ASM?ASM是一个有效的抽象层,使你的Oracle数据库可以与叫做diskgroups的抽象空间一起使用,而不是直接使用datafiles.这带来了很多好处,但是 ...

  8. Oracle单实例下oracle数据库从文件系统迁移到ASM上

    第一步:启动ASM实例(+ASM) [oracle@oracle ~]$ export ORACLE_SID=+ASM [oracle@oracle ~]$ sqlplus / as sysdba S ...

  9. Oracle:使用ASM自动存储管理, 严重推荐

    ASM 是Oracle 公司推出的专门用于oracle数据库系统的一种数据存储解决方案. 类似于OS的 软RAID,不过其在系统构架中的层次比较特殊,是直接服务于上层软件(asm)应用的,可以理解为 ...

最新文章

  1. ubuntu安装deepin terminal 终端
  2. 看过漫改,但你看过「改漫」吗?AI 一键让影视变漫画
  3. InteWidgetTookit现有三个控件的使用方法
  4. 内存分析工具MAT介绍
  5. ES5、ES6、ES7、ES8
  6. 【绝密】泰坦导弹制导计算机内部!
  7. java线程知识梳理_Java多线程——多线程相关知识的逻辑关系梳理
  8. vue 点击li 中的img 怎么不冒泡_Vue全解
  9. 配置gitlab环境实现代码管理及Web Hook测试和ldap认证
  10. 小米9首次官方降价:2799元,依旧实力强劲
  11. flask创建虚拟环境
  12. win7便签backup
  13. 2018java面试(1)- 自我介绍和项目介绍
  14. win10电脑打开计算机快捷键,运行快捷键,教您win10打开运行快捷键是什么
  15. 杂项7 - Kali的截图键PrtSc
  16. 《微电子概论》 PN结与二极管
  17. 计算机管理里面删打印机就卡住了,打印机任务无法删除怎么办-解决打印机任务无法删除的方法 - 河东软件园...
  18. 通信用水泥杆和防腐木电杆在使用中有什么不同
  19. 计算机公式怎么计算合计,excel表格函数数据求和公式是什么-Excel中怎么用公式计算合计...
  20. Windows7下安装Ubuntu 16.04双系统

热门文章

  1. Kubuntu简易安装教程(压缩磁盘版)
  2. ffmpeg 将一个视频裁剪多个部分,然后合并所有的裁剪为一个视频
  3. vue 获取动态域名_vue项目接口域名动态获取操作
  4. Cramer悖论:线性代数的萌芽
  5. Redis-使用和原理
  6. Pandas做数据空缺值填充
  7. Hutool Java 工具类库Excel导出,配置宽度自适应极度舒适
  8. 解决Windows 由于路径过长而无法删除文件的问题
  9. ByVal与ByRef
  10. html阴影效果骰子,flex布局案例(骰子)