一、ASM相关概念
1.什么是ASM(Auto Storage Management)
简称自动存储管理,是一种用于管理磁盘的工具
能够在多个物理设备之间实现条带化、镜像数据文件、恢复文件等
文件按分配单元AUs(allocation units)平衡分布在磁盘组的所有磁盘中,ASM使用索引技术来跟踪每个AUs的位置
支持联机磁盘的动态增加和减少,当磁盘发生变化后,AUs会自动重新实现动态分布
支持RAC集群技术,每一节点上运行一个ASM实例,各ASM实例间能实现点对点通讯
是一个纯软件级别的实现方式,第三方RAID工作在卷层次上,使用统一条带大小,ASM可以工作在文件层次级别,不同文件可以使用
不同的条带大小
2.ASM的优点
磁盘增加:增加磁盘变得非常容易。无需停机时间,并且文件区域自动重新分配。
I/O 分配:I/O 自动分布在所有可用的磁盘上,无需人工干预,从而减少了热点出现的可能性。
带区宽度:在重做日志文件中分段可以细分(K,以获得更快的传输速率),对于数据文件,带区则略大一些(MB,以一次性
传输大量的数据块)。
缓冲:ASM 文件系统不进行缓冲,直接进行输入/输出。
镜像:如果硬件镜像不可用,则可以容易地建立软件镜像。
核心化的异步I/O :实现核心化的异步I/O 无需特殊的设置,并且无需使用原始或第三方的文件系统(如 Veritas Quick I/O)
3.Oracle 常用数据文件的RAID级别
SYSTEM、UNDO表空间通常置于RAID 1卷上
联机重做日志通常置于RAID 0卷上
控制文件通常置于RAID 0+1 卷上
数据文件通常置于RAID 5卷上
4.ASM体系结构(主要由ASM实例及ASM磁盘组组成)
ASM的使用需要创建一个ASM实例,用于管理ASM磁盘组
ASM磁盘组由ASM磁盘组成,可以包含一个或多个ASM磁盘
ASM磁盘可以是实际的磁盘,也可以是磁盘的某个分区,或LVM管理的逻辑卷,但必须是未格式化的原始设备
ASM磁盘组的大小为该组内ASM磁盘大小的总和,可使用的容量则根据容错级别而有不同的可用大小
5.ASM实例及RDBMS实例
ASM实例类似于普通的数据库实例(RDBMS),同样由SGA和一堆后台进程组成,对大多数系统而言,SGA只需64 MB即可
ASM实例中的LargePool 用于存放Extent Map,可以根据数据库的大小来计算LargePool的大小,通常100GB大小需要1MB存放Extent Map
普通的RDBMS实例会定位数据文件并打开其数据文件,而在使用ASM存储的数据库中,该工作由ASM实例接管,即ASM实例用于定位和
管理ASM磁盘,磁盘组。
ASM实例拥有类似于普通RDBMS实例的后台进程,如SMON,PMON,LGWR,DBWR,CKPT等,还增添了两个新进程,一类是RBAL,一类是ARBn
RBAL:用于协调和管理磁盘组之间的动态平衡
ARBn:可以为多个,用于完成AU的移动
ASM实例仅仅是定位管理ASM磁盘,不能加载或打开数据库,因此也无法读取数据字典信息
ASM实例通常有个参数,只能使用口令文件或操作系统身份验证作为sysdba或sysoper来启动或关闭该实例。
关于sysdba或sysoper区别请参考:system sys,sysoper sysdba 的区别
一个ASM实例可以为多个RDBMS提供服务,可以在一台主机上创建多个ASM实例,但通常一台主机上使用一个ASM实例
如果一个实例服务于多个RDBMS,建议将ASM的ASM_HOME与DB的ORACLE_HOME分开,便于日后的升级与维护
ASM磁盘组的创建与配置在ASM实例启动之后
使用ASM磁盘的RDBMS实例与普通的RDBMS实例相同,但多出了两个后台进程,RBAL,ASMB。
ASMB借助某个服务器进程如oracle+ASM1建立普通RDBMS实例到ASM实例的会话,并传递磁盘文件的相关信息
RBAL打开通过ASM实例定位的ASM磁盘
注意:ASM 实例并不代替RDBMS实例来读取或写入数据文件,数据是直接在ASM磁盘和RDBMS实例传递,ASM实例仅用于定位数据文件
所在的asm磁盘,盘区以及所需的相关信息。假定新增加数据文件,则RDBMS告知ASM实例要创建数据文件,ASM实例则分配盘区
(extent),并创建盘区映射地址返回给RDBMS实例,RDBMS则将数据直接写入到磁盘组。
6.ASM实例中存储的文件类型
控制文件参数文件联机日志文件归档日志文件数据文件临时文件
RMAN备份集、映像副本控制文件备份集datapump 转储文件、Change Tracing file
二、创建ASM实例(下面基于VMware + RHEL 5.4 + Oracle 10g R2演示)
1.安装ASM包
使用ASM实例,需要到Oracle官方网站下载所需的ASM包。下载路径:ASMLib下载
注意下载支持该内核的包,分为两部分,一是Library and Tools,二是Drivers for kernel
如本人的Linux的内核为:
[root@oradb ~]# uname -rm
2.6.18-164.el5 i686
则下载对应的包为:
Library and Tools
oracleasmlib-2.0.4-1.el5.x86_64.rpm
oracleasm-support-2.1.3-1.el5.i386.rpm
Drivers for kernel 2.6.18-164.el5
oracleasm-2.6.18-164.el5xen-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-164.el5debug-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-164.el5-debuginfo-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm
使用下面类似的方式来安装这些包,关于RPM 的使用请参考:RPM 使用简介
[root@oradb asm]# rpm -Uvh oracleasm-support-2.1.3-1.el5.i386.rpm
验证安装的包
[root@oradb asm]# rpm -qa | grep asm
oracleasm-support-2.1.3-1.el5
oracleasm-2.6.18-164.el5-debuginfo-2.0.5-1.el5
oracleasm-2.6.18-164.el5-2.0.5-1.el5
2.启用css服务(Cluster Synchronization Services )
用于同步ASM实例与RDBMS实例
使用root帐户进行配置,配置程序位于$ORACLE_HOME/bin
[root@oradb ~]# /u01/oracle/10g/bin/localconfig add
/etc/oracle does not exist. Creating it now.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configuration for local CSS has been initialized
Adding to inittab
Startup will be queued to init within 90 seconds.
Checking the status of new Oracle init process...
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
oradb
CSS is active on all nodes.
Oracle CSS service is installed and running under init(1M)
3.创建ASM参数文件(使用VI或VIM)
[oracle@oradb dbs]$ cat /u01/oracle/10g/dbs/init+ASM.ora
*.asm_diskstring=''#为空表示可以搜索任意的ASM磁盘
*.background_dump_dest='/u01/oracle/admin/+ASM/bdump'#后台进程存放位置
*.core_dump_dest='/u01/oracle/admin/+ASM/cdump'#核心进程存放位置
*.user_dump_dest='/u01/oracle/admin/+ASM/udump'#用户进程存放位置
*.instance_type='ASM'#实例类型,普通实例默认则为RDBMS
*.instance_name='+ASM'#实例名字
*.large_pool_size=12M#为实例分配large_pool的大小
*.remote_login_passwordfile='SHARED'#登陆认证方式
*.asm_power_limit=1#控制均衡操作的资源,缺省为
4.创建ASM后台进程目录,参照参数文件中的配置来创建
[oracle@oradb ~]$ echo $ORACLE_BASE
/u01/oracle/10g
[oracle@oradb ~]$ mkdir -p $ORACLE_BASE/admin/+ASM/bdump
[oracle@oradb ~]$ mkdir -p $ORACLE_BASE/admin/+ASM/udump
[oracle@oradb ~]$ mkdir -p $ORACLE_BASE/admin/+ASM/cdump
5.创建密码文件及spfile参数文件
[oracle@oradb ~]$ orapwd file=$ORACLE_HOME/dbs/orapw+ASM password=redhat entries=8
[oracle@oradb ~]$ export ORACLE_SID=+ASM
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ASM instance started
ORA-15110: no diskgroups mounted
SQL> create spfile from pfile;
SQL> select * from v$asm_diskgroup;
no rows selected
7.创建ASM磁盘及配置ASMlib驱动
在Vmware分配几个空闲的磁盘用于创建ASM磁盘,建议使用不同的磁盘控制器
下面使用个磁盘来组建ASM磁盘组,分别为sdd,sde,sdf,sdg
分别对个磁盘进行分区,列出sdd的分区样例,其余如法炮制
[root@oradb ~]# fdisk /dev/sdd
Command (m for help): n
Command action
eextended
pprimary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
创建ASM磁盘(三种方法)
a.配置裸设备映射,修改/etc/udev/rules.d/60-raw.rules文件
使用root帐户修改/etc/udev/rules.d/60-raw.rules 按如下方式添加磁盘
[root@oradb ~]# cat /etc/udev/rules.d/60-raw.rules--查看添加的内容
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="17", RUN+="/bin/raw /dev/raw/raw2 %M %m"
[root@oradb ~]# start_udev#重启udev服务
Starting udev: [OK]
[root@oradb ~]# ll /dev/raw
total 0
crw------- 1 root root 162, 1 Nov 10 18:50 raw1
crw------- 1 root root 162, 2 Nov 10 18:50 raw2
[root@oradb ~]# chown oracle:dba /dev/raw/raw[1-2]--修改属主,否则创建磁盘组时提示权限不够
b.也可以采用下面的方式来增加磁盘,即直接修改/etc/sysconfig/rawdevices(root帐户)
[root@oradb ~]# vim /etc/sysconfig/rawdevices
[root@oradb ~]# cat /etc/sysconfig/rawdevices--查看增加的内容为raw3,raw4
/dev/raw/raw3 /dev/sdf1
/dev/raw/raw4 /dev/sdg1
[root@oradb ~]# chown oracle:dba /dev/raw/raw[3-4]--修改属主,否则创建磁盘组时提示权限不够
[root@oradb ~]# ll /dev/raw/
total 0
crw------- 1 oracle dba 162, 1 Nov 10 20:12 raw1
crw------- 1 oracle dba 162, 2 Nov 10 20:12 raw2
crw------- 1 oracle dba 162, 3 Nov 10 20:12 raw3
crw------- 1 oracle dba 162, 4 Nov 10 20:12 raw4
重启裸设备服务
[root@oradb ~]# /sbin/service rawdevices restart
Assigning devices:
/dev/raw/raw3-->/dev/sdf1
/dev/raw/raw3:bound to major 8, minor 81
/dev/raw/raw4-->/dev/sdg1
/dev/raw/raw4:bound to major 8, minor 97
done
SQL> select instance_name,status from v$instance;
INSTANCE_NAMESTATUS
---------------- ------------
+ASMSTARTED
SQL> create diskgroup DG1 normal redundancy disk '/dev/raw/raw1','/dev/raw/raw2';--创建磁盘组DG1
SQL> select * from v$fixed_table where name like '%ASM%'; --查看和asm相关的视图
SQL> select name,allocation_unit_size,state,type,
2free_mb,required_mirror_free_mb req_mi_fr_mb,usable_file_mb
3from v$asm_diskgroup;
NAMEALLOCATION_UNIT_SIZE STATETYPEFREE_MB REQ_MI_FR_MB USABLE_FILE_MB
--------------- -------------------- ----------- ------ ---------- ------------ --------------
DG11048576 MOUNTEDNORMAL2960148
SQL> create diskgroup DG2 normal redundancy disk '/dev/raw/raw3','/dev/raw/raw4';--创建磁盘组DG2
SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb--查看磁盘组的状态及信息
2from v$asm_diskgroup;
NAMESTATEFREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
--------------- ----------- ---------- ----------------------- --------------
DG1MOUNTED2960148
DG2MOUNTED2960148
SQL> select disk_number,total_mb,free_mb from v$asm_disk;
DISK_NUMBERTOTAL_MBFREE_MB
----------- ---------- ----------
1199148
0199148
1199148
0199148
重新启动Linux 主机后
SQL> startup--重新启动ASM实例,收到了磁盘组insufficient信息
ASM instance started
ORA-15032: not all alterations performed
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG2"
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG1"
SQL> ho ls -hlt /dev/raw# LINUX主机重新启动之后属主性质已发生变化
total 0
crw------- 1 root root 162, 4 Nov 10 20:28 raw4
crw------- 1 root root 162, 3 Nov 10 20:28 raw3
crw------- 1 root root 162, 2 Nov 10 20:28 raw2
crw------- 1 root root 162, 1 Nov 10 20:28 raw1
原因:原始设备在引导时会重新映射。默认情况下,在引导时原始设备的拥有者将更改为root用户
将下面的内容增加到/etc/rc.local文件(root帐户),重新启动主机,使得属主变为oracle,则不再出现类似的提示
chown oracle:dba /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
chmod 660 /dev/raw/raw3
chmod 660 /dev/raw/raw4
SQL> drop diskgroup dg1;--将刚才创建的两个磁盘组删除
SQL> drop diskgroup dg2;
使用root帐户清除/etc/udev/rules.d/60-raw.rules /etc/sysconfig/rawdevices以及/etc/rc.local刚刚增加的记录
便于下面使用asmlib来创建asm磁盘
c.使用root帐户配置ASMLib驱动及创建ASM磁盘,Oracle建议使用ASMLIB驱动来配置ASM磁盘
[root@oradb ~]# /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 []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [OK]
Scanning the system for Oracle ASMLib disks: [OK]
--注意下面创建磁盘前本人重新对磁盘分过区
[root@oradb ~]# ls /dev/oracleasm/disks
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdd1
Marking disk "VOL1" as an ASM disk: [OK]
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd2
Marking disk "VOL2" as an ASM disk: [OK]
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1
Marking disk "VOL3" as an ASM disk: [OK]
[root@oradb ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sde2
Marking disk "VOL4" as an ASM disk: [OK]
[root@oradb ~]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
[root@oradb ~]# su - oracle
[oracle@oradb ~]$ export ORACLE_SID=+ASM
[oracle@oradb ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup
ASM instance started
ORA-15110: no diskgroups mounted
SQL> create diskgroup DG1 normal redundancy
2failgroup FG1 disk '/dev/oracleasm/disks/VOL1' name VOL1
3failgroup FG2 disk '/dev/oracleasm/disks/VOL2' name VOL2;
create diskgroup DG1 normal redundancy
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created--下面提示磁盘路径未在discovery set中设置
ORA-15031: disk specification '/dev/oracleasm/disks/VOL2' matches no disks
ORA-15014: location '/dev/oracleasm/disks/VOL2' is not in the discovery set
ORA-15031: disk specification '/dev/oracleasm/disks/VOL1' matches no disks
ORA-15014: location '/dev/oracleasm/disks/VOL1' is not in the discovery set
SQL> show parameter asm_diskstring
NAMETYPEVALUE
------------------------------------ ----------- ------------------------------
asm_diskstringstring
SQL> alter system set asm_diskstring='/dev/oracleasm/disks/VOL*';
SQL> create diskgroup DG1 normal redundancy--设置asm_diskstring后重新创建磁盘DG1成功
2failgroup FG1 disk '/dev/oracleasm/disks/VOL1' name VOL1
3failgroup FG2 disk '/dev/oracleasm/disks/VOL2' name VOL2;
SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb
2from v$asm_diskgroup;
NAMESTATEFREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
--------------- ----------- ---------- ----------------------- --------------
DG1MOUNTED296401482
8.创建ASM数据库
使用dbca工具根据提示来创建使用ASM存储的数据库
创建使用ASM存储的数据库完毕之后,对于ASM数据库启动应首先保证ASM实例先被启动,因为RDBMS是ASM实例服务的一个客户端
接下来再来启动RDBMS
--首先启动asm实例
export ORACLE_SID=+ASM
sqlplus / as sysdba
startup
exit
--接下来启动rdbms数据库
export ORACLE_SID=orcl
sqlplus / as sysdba
startup
三、创建ASM实例时的常见故障
1.创建磁盘时出现错误可以查看asm日志
tail -f /var/log/oracleasm
2.启动asm实例时出现ORA-29701错误
ORA-29701: unable to connect to Cluster Manager
首次需要启用css服务,使用root帐户,运行$ORACLE_HOME/bin/localconfig add
如果下次启动实例的时候仍然碰到如下报错:
ORA-29701: unable to connect to Cluster Manager
那么检查/etc/inittab 文件,看看是否有下面这行
h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null
如果没有请添加,如果被注释了请取消注释(root帐户)。
也可以使用root帐户执行/u01/oracle/10g/bin/localconfig reset来解决
3.磁盘搜索路径问题
SQL> create diskgroup DG1 normal redundancy disk 'ORCL:VOL1','ORCL:VOL2';
create diskgroup DG1 normal redundancy disk 'ORCL:VOL1','ORCL:VOL2'
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15031: disk specification 'ORCL:VOL2' matches no disks
ORA-15031: disk specification 'ORCL:VOL1' matches no disks
使用oraclasm创建磁盘后,缺省会在/dev/oracleasm/disks目录下添加刚刚创建的磁盘映射
修改asm_diskstring修改路径之后再次创建即可
alter system set asm_diskstring='/dev/oracleasm/disks/VOL*'
相关推荐
ASM实例+ASM数据库安装(Win8+Ora10) 1 第一篇 创建未格式化的磁盘分区 1 1.1 打开压缩卷窗口 1 1.2 输入卷大小 3 1.3 选择挂载目录 4 1.4 格式化分区选项 5 1.5汇总信息 6 1.6分区完成后磁盘情况 7 1.7挂载目录...
VM虚拟机创建RAC全程实例,如何创建虚拟机环境,以及搭建,用于windows操作系统的!
Oracle数据库教程_——__DBA强化实战系列第二期:centos6.4安装oracle12c_单实例asm
重建ASM磁盘组的,1: 保证使用ASM的数据库事先已经用RMAN做了备份 2: 关闭ASM实例 3: 使用dd命令清除ASM磁盘上的元数据 4: 重建ASM磁盘组 5: 恢复数据库
实战管理Oracle 12c数据库实例
利用rman将oracle 11g的文件系统单实例数据库移植到双机rac asm环境的过程
(一) 集群规划 1 1. 硬件环境 1 2. 软件环境 1 (二) IP 规划 1 (三) 安装目录规划 2 (四) 存储规划 2 ...(十一) 为开发者平台及公众应用、计费创建数据库用户和表空间 95 (十二) 为短信网关创建用户和表空间 97
硬件设备是2台SUN V490,一台是SOLARIS9,一台是Solaris10,连接EMC存储。 数据库是Oracle10.2.0.1,存储方面选择了ASM.文档里有很多截图。
数据库AWR分析
oracle10g下asm管理中文教程,识别自动存储管理ASM的功能。为ASM和数据库实例设置初始化参数文件等,讲的比较详细。
深信服超融合Oracle 11g R2 LVM文件系统单实例数据库部署方案-Linux.pdf
Oracle ASM是Oracle 数据库文件的卷管理器和文件系统,支持单实例Oracle 数据库和Oracle Real Application Clusters (Oracle RAC)配置。 Oracle ASM使用磁盘组来存储数据文件; Oracle ASM 磁盘组是Oracle ASM作为一...
本次安装为AIX6.1平台上使用ORACLE GRID+ASM方式安装ORACLE11gR2 RAC,升级至目前最新补丁11.2.0.3并且创建数据库。本文档主要记录软件安装、数据库创建、补丁升级、数据库实例参数配置的情况。
RAC数据库恢复到单实例数据库的基本步骤如下: a.准备单实例服务器,pfile文件,启动到nomount b.备份rac数据库 c.将备份文件拷贝到单实例服务器 d.在单实例服务器上还原、恢复 e.resetlogs打开...
将给Oracle数据库管理员带来极大的方便,ASM可以自动管理磁盘组,并提供数据冗余和优化。特别是对于企业级的大型DB管理员来说,可以使管理员可以从管理成百上千个数据文件这些琐碎的日常事务中解脱开来,以便处理...
教程名称:Oracle 10g ASM 专题资源(视频 技术文档)课程目录:【】1 - Oracle 10g ASM概述【】2 - 创建Oracle 10g ASM磁盘【】3 - 创建ASM实例和数据库【】4 - 测试Oracle 10g ASM数据库【】oracle 10g中ASM概念...
centos6.10系统,安装oracle11gR2版本数据库及用udev方式映射磁盘,并ASM管理设置。包含安装、设置和细节解析。
Oracle11g rac至ASM单实例dataguard配置 包括系统系统配置到数据库安装最后dg配置
二、数据库服务器存储及分区规范 确保数据库软件安装在正常分区中,不要使用LVM方式创建的分区中;确保ASM磁盘都是裸磁盘分区,而不是lvm方式创建的逻辑磁盘分区。 如果既建立生产数据库,又有历史数据库 则生产...
3.6.5 ASM实例和监听日志文件 3.6.6 Database日志文件 3.7本章小结 第4章 ASM存储软件 4.1 ASM简介 4.1.1 ASM的特点 4.1.2 ASM实例的功能 4.2 ASM磁盘组 4.2.1 ASM磁盘 4.2.2共享ASM磁盘组 4.2.3 ASM逻辑...