(Les05 ASM Instance)[20180208]
程序员文章站
2022-07-02 16:29:03
学习目标 描述使用ASM的好处 管理ASM实例 创建和删除ASM磁盘组 扩展ASM磁盘组 通过使用各种实用程序检索ASM元数据 ASM对于管理员的好处 使用ASM可以免除: -I/O性能优化:ASM采用条带化和镜像所有数据的策略,且执行自动重新平衡操作。 -数据文件移动和重新组织:不再需要更改数据文 ......
学习目标
描述使用ASM的好处
管理ASM实例
创建和删除ASM磁盘组
扩展ASM磁盘组
通过使用各种实用程序检索ASM元数据
ASM对于管理员的好处
使用ASM可以免除:
-I/O性能优化:ASM采用条带化和镜像所有数据的策略,且执行自动重新平衡操作。
-数据文件移动和重新组织:不再需要更改数据文件的位置来满足性能要求和空间约束条件。
-文件名管理:不再需要定义和强制执行文件命名策略
-逻辑卷/文件系统/集群文件系统/裸设备管理:不再需要这些存储元素
使用ASM可以减少下列工作:
-逻辑单元号(LUN)管理工作减少,ASM通常需要的逻辑单元较少且大小较大
-数据库原理员与系统管理员之间的依赖性大大减少,如迁移磁盘组不再需要系统管理员干预。
-减少手动执行维护任务时发生的错误。如新增数据文件文件命名不规范,导致数据库的其余部分不支持。
ASM实例
每次启动ASM或数据库时,都会分配名为系统全局区(SGA)的共享内存区域并启动Oracle ASM和数据库后台进程,。后台进程和SGA的组称为Oracle ASM实例或Oracle DB实例。
ASM实例中的SGA分为四个主要区域:
-共享池:用于元数据
-大型池:用于并行
-ASM高速缓存:用于在重平衡操作期间读取和写入块
-空闲内存:可用的未分配内存
ASM的建议最低内存为256M。ASM实例默认启用自动内存管理,该功能将动态优化各个SGA内存组件的大小。ASM实例所需的内存量将取决于ASM管理的磁盘空间量。ASM实例的第二部分是后台进程。ASM实例可以具有多个后台进程,并不是所有进程始终都会出现。
ASM组件
-ARCn:归档进程
-SMON:系统监控进程
-PMON:程式监控进程
-DBWn:数据库写入进程
-LGWR:日志写入进程
-CKPT:检查点进程
-DIGA:诊断进程
-Jnnn:作业队列进程
-QMNn:队列监控进程
-PSP0:进程衍生进程
-RECO:恢复器进程
-VKTM:虚拟计时器进程
-MMAN:内存管理器进程
ASM在RAC集群中的进程
-LMON:全局入队服务监控进程
-LMDn:全局入队服务守护程序
-LMSn:全局高速缓存服务进程
-LCKn:锁定进程
ASM实例-主要进程
-RBAL:协调重新平衡活动
-ARBn:一个或多个从属进程,用于执行重平衡活动
-GMON:负责管理磁盘级活动,如删除或脱机以及提高ASM磁盘组兼容性
-MARK:根据需要将ASM分配单元标记为过时
-Onnn:一个或多个ASM从属进程,形成与ASM实例的一组连接,用于交换消息
-PZ9n:一个或多个并行从属进程,用于从GV$视图提取有关集群ASM安装的数据
ASM实例初始化参数
-INSTANCE_TYPE:设置ASM,这是唯一一个必须定义的参数。对于数据库实例,该参数值设置为RDBMS
-ASM_POWER_LIMIT:控制重平衡操作的速度。值的范围从1到11(默认值为1)。
-ASM_DISKSTRING:是一个与操作系统相关的值,ASM使用它来限制搜索时考虑的磁盘集(默认为空,表示所有)。
-ASM_DISKGROUPS:ASM实例需要装载的磁盘组的名称列表。该参数没有默认值。
-ASM_PREFERRED_READ_FAILURE_GROUPS:指定包含首选读取磁盘的故障组。
-DIAGNOSTIC_DEST:指定自动诊断存储(ADR)主目录。跟踪文件/预警日志/核心文件和意外事件文件。该参数的默认值由ORACLE_BASE派生
-LARGE_POOL_SIZE:指定大型池分配堆的大小(以字节表示)
-REMOTE_LOGIN_PASSWORDFILE:指定Oracle软件是否检查密码文件。默认值为EXCLUSIVE
数据库实例与ASM之间的交互
1.数据库请求创建文件
2.ASM前台进程创建一个持续操作目录(COD) 条目并在磁盘组中为新的文件分配空间。
3.ASM数据库进程接收新文件的区映射
4.现在文件处于打开状态,数据库进程直接初始化该文件。
5.初始化后,数据库进程请求提交文件创建。这会导致ASM前台进程清除COD条目并将文件标记为已创建。
6.文件提交确认会隐式关闭该文件。将来发生I/O时,数据库实例需要重新打开该文件。
--数据库实例和ASM实例协同工作。数据库实例必须与ASM交互,以便将数据库文件映射到ASM区。
--数据库I/O不通过ASM实例来传输。实际上,数据库直接根据ASM文件执行I/O操作。
ASM实例:动态性能视图
-ASM实用程序使用SQL语言访问这些表来检索仅含元数据的信息
-包含许多专用的ASM相关视图
V$ASM_ALIAS V$ASM_ATTRIBURE V$ASM_CLIENT
V$ASM_DISK V$ASM_DISK_IOSTAT V$ASM_DISK_STAT
V$ASM_DISKGROUP V$ASM_DISKGROUP_STAT V$ASM_FILE
V$ASM_OPERATION V$ASM_TEMPLATE
ASM系统权限
-ASM实例没有数据字典
SYSASM--OSASM(asmadmin)---全部管理权限
SYSDBA--OSDBA(asmdba)---可访问ASM中存储的数据,在当前版本中还具有SYSASM权限
SYSOPER--OSOPER(asmoper)---受限权限,可使用一组非破坏ALTER DISKGROUP命令以及启动和停止ASM实例
启动和停止ASM实例使用SQL*Plus
$sqlplys / as sysasm
SQL>startup
ALTER DISKGROUP ... MOUNT;
SQL>shutwon abort
【OPEN】
-FORCE:在重新启动ASM实例之前向它发出SHUTDOWN ABORT
-MOUNT或OPEN:装载ASM_DISKGROUPS初始化参数中指定的磁盘组
-NOMOUNT:启动ASM实例而不装载任何磁盘组
-RESTRICT:在受限模式下启动实例。RESTRICT可以与MOUNT/NOMOUNT/OPEN组合使用(受限模式下数据库实例不能对磁盘进行操作)
【SHUTDOWN】
-NORMAL(默认关闭模式):ASM在卸载所有磁盘组并关闭ASM实例之间,等待正在进行的SQL操作完成,等待当前连接的用户从该实例断开。不会接受新的连接
-IMMEDIATE或TRANSACTIONAL:ASM在卸载所有磁盘组并关闭实例之前,等待正在进行的SQL操作完成,不会等待当前连接的用户断开连接。
-ABORT:ASM实例立即关闭,而不是按顺序卸载磁盘组。这将导致下次启动ASM时进行恢复操作。如果有任何数据库实例与ASM实例连接,则该数据库实例也将终止。
启动和停止ASM实例使用srvctl
$srvctl start asm -o mount
$srvctl stop asm -f
$srvctl status asm
启动ASM实例
srvctl start asm [-o <start_option>]
<start_option>启动选项 (FORCE/MOUNT/OPEN/NOMOUNT或RESTRICT)
停止ASM实例
srvctl stop asm [-o <stop_option> ] -f
<stop_option>关闭选项 NORMAL/IMMEDIATE/TRANSACTIONAL或ABORT
-f是强制
ASM实例的状态
srvctl status asm
启动和停止ASM实例使用asmcmd
ASMCMD>startup
ASMCMD>shutdown --abort
启动选项
--nomount 不装载磁盘组的情况下启动ASM实例
--restrict 启动ASM实例并限制数据库使用
-pfile <pfile.ora> 使用定制pfile启动ASM实例
关闭选项
--immediate 立即执行关闭
--abort 中止所有现有操作
磁盘组
磁盘组是一个或多个磁盘的逻辑分组,ASM将其作为一个集合来管理。每个磁盘组都包含与自身相关联的元数据。在概念上,ASM磁盘组类似于典型存储区域网络中的逻辑卷。
一个磁盘组可以包含属于多个数据库的文件,而一个数据库可以使用来自多个磁盘组的不同文件。
磁盘组的冗余设置:
-外部冗余,其中ASM不提供任何镜像,磁盘都是假设为高度可靠。
-正常冗余,其中ASM默认支持双向镜像,从而保证在较不可靠的存储上实现数据完整性。
-高冗余,其中ASM默认支持三向镜像,从而更改地保证数据完整性。
ASM最多支持创建63个磁盘组。
ASM磁盘
-是为ASM磁盘组预配的存储设备
-通过正常O/S接口来访问
-必须可由ASM所有者读取和写入
-必须可由集群中的所有节点访问
-在不同的节点上可以有不同的O/S名称或路径
-可以是:
-整个物理磁盘或物理磁盘的分区
-存储阵列中的磁盘或分区
-逻辑卷(LV)或逻辑单元(LUN)
-网络连接文件(NFS)
ASM分配单元
ASM磁盘划分为分配单元(AU)
-在创建磁盘组时可以配置AU大小
-AU默认大小为1MB
-足够小,能够被数据库缓存;但又足够大,能够提供高效的后续访问
-允许的AU大小
-1,2,4,8,16,32或64MB
-在超大型数据库(VLDB)中或使用专门的存储硬件,较大的AU可能非常有用。
ASM文件
-是由AU组成的ASM区的集合
-可变大小的区支持大型文件
-对数据库内核显示为普通文件
-文件名称以“+”开头
-例如,+DATA/orcl/datafile/system.256.68912343
-可以与可选的文件名别名相关联
-例如,+DATA/datafile/mydb/system01.dbf
-在磁盘组中的磁盘中平均分布
-根据磁盘组中定义的策略进行镜像
ASM区映射
ASM文件-->区映射-->磁盘组
ASM通过称为区映射的元数据跟踪文件的分布。区映射是一个表,将文件中的数据区映射到磁盘上的分配单元。
文件区与分配单元之间的关系:
-一个AU用于前20,000个区(0-19999)
-4个AU用于接下来的20,000个区(20000-39999)
-16个AU用于40,000以上的区
条带化粒度
ASM用于负载平衡的条带化策略与用于等待时间的条带化策略不同
条带化主要用途:
-在磁盘组的所有磁盘中执行I/O负载平衡
-改善I/O等待时间
-对于负载平衡,粗粒度条带化(AU/区单位)将多个分配单元连接起来使用
细粒度条带化
细粒度条带化在分配单元组中放置128KB条带单元
-磁盘组具有8个磁盘和外部冗余
-使用默认的AU大小:1MB
-第一个1MB区在8个AU中以128KB条带形式写入
注意:控制文件和联机重做日志文件只能使用细粒度条带化
ASM故障组
-共享需要容错的一项公用资源的一组磁盘
-镜像的区副本存储在不同的故障组中
故障组可以用于避免单个磁盘/磁盘控制器/I/O网络组件以及甚至整个存储系统的故障。
条带化镜像和故障组示例
故障演练
管理磁盘组
CREATE DISKGROUP
DROP DISKGROUP
ALTER DISKGROUP
ASM实例主要目的是管理磁盘组和保护器数据。ASM实例还将文件分布传送到数据库实例。这里,数据库实例就可以直接访问磁盘组中存储的文件。
执行这些命令都需要SYSASM或SYSDBA权限,且必须从ASM实例发出。
CREATE DISKGROUP dgroupA NORAML REDUNDANCY
FAILGROUP controller1 DISK
'/devices/A1' NAME diskA1 size 120G FORCE,
'/devices/A2'
FAILGROUP controller2 DISK
'/devices/B1',
'/devices/B2';
DROP DISKGROUP dgroupA INCLUDING CONTENTS;
ALTER DISKGROUP dgroupA ADD DISK
'/dev/sde1' NAME A5,
'/dev/sdf1' NAME A6,
'/dev/sdg1' NAME A7,
'/dev/sdh1' NAME A8;
ALTER DISKGROUP dgroupA ADD DISK '/devices/A*';
ALTER DISKGROUP dgroupA DROP DISK A5;
ALTER DISKGROUP dgroupA DROP DISK A6
ADD FAILGROUP controller3 DISK '/dev/sdi1' NAME A9;
ALTER DISKGROUP dgroupA UNDROP DISKS;
ALTER DISKGROUP dgroupA REBALANCE POWER 5;--手动开始重平衡
ALTER DISKGROUP dgroupA DISMOUNT;--卸载dgroupA磁盘组
ASM磁盘组兼容性
每个磁盘组的兼容性都可以分别控制:
-ASM兼容性控制磁盘上ASM元数据结构
-RDBMS兼容性控制最低使用者客户端级别
-ADVM兼容性确定磁盘组是否可以包含Oracle ASM卷
设置磁盘组兼容性的操作时不可逆的
DB实例 >=ASM磁盘组(RDBMS<=ASM>=ADVM)<=ASM实例
ASM磁盘组属性
-au_size,ASM允许使用在创建磁盘组时指定的不同分配单元(AU)大小。1/2/4/8/16/32或64MB
-compatible.rdbms,RDBMS数据库版本,数据库与ASM之间交换的消息的格式
-compatible.asm,ASM实例版本,磁盘上ASM元数据结构的格式
-compatible.advm,ADVM兼容性 ASM实例版本,允许在磁盘中包含Oracle ASM卷
-disk_repair_time,0M到2^32D,磁盘脱机之后删除此磁盘之间的时间量,默认值3.6H,ALTER DISKGROUP ...DISK OFFLINE;
-template.tname.redundancy,UNPROTECT|MIRROR|HIGH,指定模板的冗余
-template.tname.stripe,COARSE|FINE,指定模板的条带化属性
对于每个已定义的磁盘组,可以通过V$ASM_ATTRIBUTE固定视图查看所有已定义的属性。
检索ASM元数据
SELECT f.TYPE,
f.redundancy,
f.striped,
f.modification_date,
a.system_created,
a.name
FROM v$asm_alias a, v$asm_file f
WHERE a.file_number = f.file_number
AND a.group_number = f.group_number
AND TYPE = 'DATAFILE';
ASMCMD>ls -l +DATA/orcl/datafile