asm 查看 数据文件 修改 时间_Oracle的ASM介绍及管理

Oracle的ASM介绍及管理

  • Oracle经历过的文件系统历史

操作系统--逻辑卷管理器(LVM):管理文件相对容易,性能较差

裸设备:管理文件相对困难,性能好

OCFS(Oracle Cluster File System):是ORACLE数据库文件系统

ASM(Automatic Storage Management):ASM是ORACLE数据库文件支持的卷管理,ASM磁盘组里面只能存放Oracle数据库文件:数据文件、联机重做日志文件、控制文件、归档日志、RMAN备份集等

  • 何时引入

ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的LVM,它不仅支持单 实例,同时对RAC的支持也是非常好。ASM可以自动管理磁盘组并提供有效的数据冗余功能。使用ASM(自动存储管理)后,数据库管理员不再需要对 ORACLE中成千上万的数据文件进行管理和分类,从而简化了DBA的工作量,可以使得工作效率大大提高。

  • ASM的体系结构与后台进程

6e14322107f58c23dff14bea60facab8.png

每个使用了ASM存储的数据库实例也有两个新的进程

1、RBAL:用来打开磁盘组里的磁盘,然后通过DBWn进程将数据写入到这些打开的磁盘里去

2、ASMB:当数据库实例要向某个磁盘组里写入数据时,ASMB会访问Group Services,从中获取有关ASM实例所管理的磁盘组的信息,并通过RBAL进程打开磁盘组,于是就可以将数据写入磁盘组。

Group Services用来注册ASM实例所管理的磁盘组,以及连接磁盘组的信息。

数据库 I/O不通过ASM实例来传输,而是通过RBAL直接根据ASM文件执行I/O操作。

数据库实例只能与其所在的同一台主机上的ASM实例通信,如果当前主机上存在多个数据库,则这些数据库可以共享同一个ASM实例。

ASM实例与数据库实例进行通信的桥梁是ASMB进程,此进程运行在每个数据库实例上,是两个实例间信息交换的通道。ASMB进程先利用磁盘组名称通过CSS获得管理该磁盘组的ASM实例连接串,然后建立一个到ASM的持久连接,这样两个实例之间就可以通过这条连接定期交换信息,同时这也是一种心跳监控机制。

另外,在ASM实例中还存在另外一个新的进程,即RBAL,此进程负责规划和协调磁盘组的重新平衡活动。除此之外,ASM实例还有一些与数据库实例中的进程相同的后台进程,例如LGWR、SMON、PMON、DBWR 、CKPT等。 

ASM主要的三个后台进程

1、RBAL:负责协调组内不同磁盘组之间的rebalance工作,reblance工作指的是数据在不同的磁盘之间转移

2、ARBn:用来实际完成rebalance工作,可以由多个进程并发完成rebalance的工作

3、GMON:用来监控磁盘组内有关元数据的维护操作

  • ASM优点

1、ASM是跨平台的,主流的硬件平台都能使用、且管理方式一致;

2、内在的支持大文件,支持BIGFILE文件;

3、数据均匀的分布在磁盘组里所有的磁盘上,实现了文件级别的条带化,减少热点,提高了读取和写入数据的性能

4、提供多重冗余级别,保证数据不丢失;

5、支持在线的磁盘更换,添加或删除磁盘以后,自动重分布数据,这个过程叫做rebalance。

  • ASM提供了3种冗余方法

外部冗余(external redundancy):

表示Oracle不帮你管理镜像,功能由外部存储系统实现,比如通过RAID技术;有效磁盘空间是所有磁盘设备空间的大小之和。

外部冗余时ASM不提供冗余,由存储的机制提供冗余。现在的硬件提供了很多种的冗余,比如RAID。好处在于充分利用现有的磁盘,ASM不再划出其余的空间来做冗余,最大的利用磁盘空间。

常规冗余(normal redundancy):

(默认方式)表示Oracle提供2路镜像来保护数据,会损失一部分磁盘空间用于数据冗余。这是在ASM层面上提供冗余,也就是将ASM磁盘里面的数据再备份一份,和共享存储无关。

高冗余(high redundancy):

Oracle提供3路镜像来保护数据,会损失更多磁盘空间用于数据冗余。

现在都使用底层的自身的存储冗余,比如RAID,在ASM面做冗余太浪费了,所以在ASM上面一般使用外部冗余即可。

  • SYSASM权限和OSASM(asmadmin)系统组

为了使管理更加有针对性,Oracle 11gR2将管理权限进行细化,管理ASM的操作系统组叫做OSASM(asmadmin),凡是属于该组的用户都可以以sysasm的身份登录ASM实例。sysasm权限是管理ASM的最高权限,可以执行所有的ASM实例管理操作;另外还保留了sysdba权限,被赋予该权限的ASM用户只能执行普通的管理操作。SYSASM、SYSDBA是ASM实例用户具有的权限,asmadmin是操作系统组。

[grid@xddb-01 ~]$ id griduid=502(grid) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper),504(asmadmin),505(asmoper),506(asmdba)
[grid@xddb-01 ~]$ sqlplus / as sysasm 可直接登陆可创建管理用户并授权SQL> create user check_user identified by check_user;SQL> grant sysasm to check_user;[grid@xddb-01 ~]$ sqlplus check_user/ check_user as sysasmSQL> show userUSER is "SYS"
  •     管理ASM

  • ASM查看磁盘组状态

SQL> select group_number,name, state,total_mb,free_mb from v$asm_diskgroup;GROUP_NUMBER NAME                         STATE         TOTAL_MB    FREE_MB------------ ------------------------------ ----------- ---------- ----------          2 DATADG                         MOUNTED           317471     120869          4 GRIDDG                         MOUNTED             6144        5218SQL> select group_number,name,path,failgroup from v$asm_disk;GROUP_NUMBER NAME                         PATH                        FAILGROUP------------ ------------------------------ ------------------------------ ------------------------------          4 GRIDDG_0002                  /dev/mapper/griddg3           GRIDDG_0002          2 DATADG_0000                  /dev/mapper/datadg1           DATADG_0000          4 GRIDDG_0001                  /dev/mapper/griddg2           GRIDDG_0001          4 GRIDDG_0000                  /dev/mapper/griddg1           GRIDDG_0000
  • 查看磁盘组当前兼容性属性

SQL> set linesize 200SQL> col name format a20SQL> col compatibility format a30SQL> col DATABASE_COMPATIBILITY format a30SQL> select group_number,name,compatibility,database_compatibility from v$asm_diskgroup where name='DATADG';GROUP_NUMBER NAME                COMPATIBILITY                DATABASE_COMPATIBILITY------------ -------------------- ------------------------------ ------------------------------          2 DATADG                11.2.0.0.0                      10.1.0.0.0SQL> col value format a30SQL> select name,value from v$asm_attribute where group_number=2 and name like 'compatible.%';NAME                   VALUE-------------------- ------------------------------compatible.asm            11.2.0.0.0compatible.rdbms     10.1.0.0.0
  • 修改磁盘组兼容性属性

SQL> ALTER DISKGROUP data SET ATTRIBUTE 'compatible.rdbms' = '11.1';

磁盘组的属性只能增大,不能减小,如果增大过程出现错误,那么只能通过重建磁盘组来调整兼容性属性值。

  • 快速镜像重新同步功能。

在一个故障组短暂的磁盘失败期间,ASM记录改变区间的轨迹,以便在磁盘恢复正常后能够快速的同步改变的区间,而不是将整个磁盘的数据重新覆盖一遍,这能够大幅度的提高数据重新同步的过程。

该功能要求磁盘组的兼容性属性必须设置为11.1或者更高。

另外,该功能只对Normal和High冗余级别的磁盘组有用,因为External冗余级别的磁盘脱机会导致写失败。

SQL> CREATE DISKGROUP DATADG NORMAL REDUNDANCY  2  FAILGROUP A disk '/dev/mapper/datadg1' name datadg01  3  FAILGROUP B disk '/dev/mapper/datadg2' name datadg02  4  ATTRIBUTE 'compatible.rdbms'='11.2','compatible.asm'='11.2','compatible.advm'='11.2';SQL> select name,value from v$asm_attribute where name like 'compatible.%' and group_number=(select group_number from v$asm_diskgroup where name='DATADG');

磁盘默认的可脱机时间为3.6小时,可以通过修改磁盘组的disk_repair_time属性来调整这个值(H或者h表示小时,M或者m表示分钟):

SQL> col name for a20SQL> col value for a20SQL> select name,value from v$asm_attribute where name='disk_repair_time' and group_number=(select group_number from v$asm_diskgroup where name='DATADG');NAME                   VALUE-------------------- --------------------disk_repair_time     3.6hSQL> alter diskgroup data set attribute 'disk_repair_time'='4.5h';SQL> select name,value from v$asm_attribute where name='disk_repair_time' and group_number=(select group_number from v$asm_diskgroup where name='DATADG');NAME                   VALUE-------------------- --------------------disk_repair_time     4.5h

可以使用ALTER DISKGROUP的DROP AFTER子句来覆盖磁盘组的disk_repair_time属性:

SQL> select name,group_number from v$asm_diskgroup where name='DATA';NAME                           GROUP_NUMBER------------------------------ ------------DATADG                                      2SQL> select group_number,name,state from v$asm_disk where group_number=2;GROUP_NUMBER NAME                           STATE------------ ------------------------------ ----------------           2 DATADG02                         NORMAL           2 DATADG01                         NORMALSQL> alter diskgroup datadg offline disk datadg02;SQL> alter diskgroup datadg online disk datadg02;SQL> alter diskgroup datadg offline disk datadg02 drop after 20m;SQL> alter diskgroup datadg online disk datadg02;
  • AU_SIZE大小设置

对于磁盘组来说,除了上面讲到了compatible.*和disk_repair_time属性外,还有一个重要的属性au_size。该属性是设置磁盘组的分配单元大小,可配置的范围包括:1、2、4、8、16、32、64MB。ASM文件也是以区间的形式存储在ASM磁盘组中,在10g每个区间直接映射到AU,从11g开始区间能够映射到1个或多个AU。

当磁盘组兼容性属性设置为11.1或者更高,区间大小将自动增长,在11.1的版本,前20000个区间匹配AU大小,接下来的20000个区间匹配8个AU大小,大于40000的区间匹配64个AU大小,在11.2,这个增长比例从1:8:64变成了1:4:16。

执行以下的命令使用CREATE DISKGROUP语句的ATTRIBUTE子句控制AU的大小:

SQL> CREATE DISKGROUP disk_group_2  2    EXTERNAL REDUNDANCY  3    DISK '/dev/mapper/datadg3'  4    ATTRIBUTE 'compatible.rdbms'='11.1','compatible.asm'='11.1','au_size' = '32M';

如果au_size设置较大,需要和compatible.rdbms,compatible.asm两个属性一起设置。

可扩展的区间大小和大AU的组合能够增加非常大的数据库的IO性能。

AU_SIZE只能在创建磁盘组的时候设置,之后只能查看不能调整。

  • ASMCMD命令及选项

1、直接使用“asmcmd”或“asmcmd -p”(-p选项可以在命令提示符中给出当前的路径信息)便可连接到对应的ASM。

[grid@xddb-01 ~]$ asmcmd -p

2、ASMCMD [+] > help lsdg

help [command]将显示命令的详细帮助信息

3、使用cp命令在ASM和本地、远程操作系统文件系统之间直接拷贝数据。下面是该命令的用法:

cp [-i][-f][connect_str:]src_file [connect_str:]tgt_file

ASMCMD [+datadg/xddb/archivelog/2020_08_10] > cp thread_2_seq_123620.892.1048113419 /tmp/archive_thread_2_seq_123620.892.1048113419

4、md_backup命令针对一个或更多磁盘组创建元数据拷贝,下面是该命令的用法:

md_backup backup_file [-G diskgroup [,diskgroup,...]]

结果文件包含需要重建ASM磁盘的所有元数据。

ASMCMD [+datadg/xddb] >  md_backup /tmp/backup.txt -G datadg   

5、md_restore命令允许从使用md_backup命令创建的元数据中还原磁盘组,下面是该命令的用法:

md_restore backup_file [--silent][--full|--nodg|--newdg -o 'old_diskgroup:new_diskgroup [,...]'][-S sql_script_file] [-G 'diskgroup [,diskgroup...]']

ASMCMD [+] > md_restore /tmp/backup.txt --full -G datadg

恢复磁盘组元数据信息磁盘组不能处于MOUNT状态,md_restore命令只恢复元数据信息,但磁盘组的数据是无法恢复的。

6、remap命令修复磁盘一个范围的物理块,不验证每个块的内容,只有读错误的块能被修复,下面是该命令的用法:

remap diskgroup disk block_range

ASMCMD [+] > remap datadg datadg01 1000-2000

7、全部命令参考

  • 实例管理命令

dsget       返回discovery diskstring

dsset       设置discovery diskstring

lsct         显示当前oracle ASM的客户端,一般指数据库实例和ASM实例,数据来源于V$ASM_CLIENT视图

lsop           显示当前磁盘组或ASM实例的操作,数据来源于V$ASM_OPERATION视图

lspwusr     显示ASM密码文件中的用户

orapwusr    增加,删除,修改ASM密码文件用户

shutdown    关闭ASM实例

startup     启动ASM实例

spbackup    备份ASM SPFILE,不影响GPnP profile;备份文件不能识别成SPFILE,不能用spcopy拷贝。为了识别备份文件为SPFILE必须用cp命令

spcopy      拷贝ASM SPFILE,在同一个磁盘组不能拷贝多份。为了更新GPnP profile,则用-u选项或用spset命令

spget       返回ASM SPFILE的位置从GPnP profile

spmove      移动ASM SPFILE,自动更新GPnP profile.当SPFILE被ASM实例打开时不能被移动

spset       设置ASM SPFILE的位置

  • 文件管理命令

cd        切换目录,可使用通配符

cp        在磁盘组之间,磁盘组与操作系统之间拷贝文件。不能在两个远程实例间拷贝。OCR和OCR备份类型的文件不能用cp,要用spbackup,spcopy,spmove

            如果是远程拷贝,则连接串样式为:user@host[.port_number].SID。port_number默认为1521

du        显示已经使用的磁盘空间在指定的目录(包括子目录)

find      查找,注意要区分大小写

ls        显示ASM目录下的内容

lsof      显示本地客户端已打开的文件

mkalias   创建一个系统产生的文件的别名。别名和对应的文件必须在同一磁盘组且每个ASM文件只能有一个别名

mkdir     创建ASM目录

pwd       显示当前目录的路径

rm        删除指定的文件或目录,如果是别名,会删除别名和别名对应的文件

rmalias   删除指定的别名

  • 磁盘组管理命令

chdg          修改磁盘组(增加磁盘,删除磁盘,调整磁盘大小,重新平衡磁盘组,基于XML配置文件的)

chkdg         检查或修复磁盘组

dropdg        删除磁盘组

iostat        显示磁盘IO统计,信息来源于V$ASM_DISK_IOSTAT视图

lsattr        显示磁盘组属性,信息来源于V$ASM_ATTRIBUTE视图

lsdg          显示已挂载的磁盘组和他们的信息,与ls -ls输出结果一样,信息来源于V$ASM_DISKGROUP_STAT视图,如果指定了--discovery,则查询V$ASM_DISKGROUP

lsdsk         显示ASM磁盘,信息来源于V$ASM_DISK_STAT视图;连接模式查询V$ASM_DISK_STAT and V$ASM_DISK返回信息;非连接模式通过扫描磁盘头来返回信息

lsod          显示已打开的设备

md_backup     创建已挂载的磁盘组元数据备份

md_restore    恢复磁盘组元数据备份

mkdg          创建磁盘组,基于XML配置文件创建。注意:mkdg创建的磁盘组只挂载在本地节点

mount         挂载磁盘组

offline       使磁盘或失效磁盘组离线

online        使磁盘或失效磁盘组上线

rebal         重新平衡磁盘组

remap         重定位数据在磁盘上的物理块的范围内

setattr       设置磁盘组属性

umount        卸载磁盘组

  • 模板管理命令

chtmpl     修改模板属性

lstmpl     显示模板属性

mktmpl     增加模板到磁盘组

rmtmpl     从磁盘组删除模板

  • 文件访问管理命令

chgrp      修改文件或文件列表的用户组

chmod      修改文件或文件列表的权限

chown      修改文件或文件列表的拥有者

groups     显示用户所属用户组

grpmod     增加或删除操作系统用户到/从已存在的用户组

lsgrp      显示用户组

lsusr      显示磁盘组中的用户

mkgrp      创建一个用户组

mkusr      添加操作系统用户到磁盘组

passwd     修改用户的密码

rmgrp      删除一个用户组

rmusr      删除一个用户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门

概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 。 RedisTemplate 看看4个序列化相关的属性 ,主要是 用于 KEY 和 VALUE 的序列化 。 举个例子,比如说我们…

java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)

Java团队课程设计-socket聊天室(Day4总结篇)团队名称:ChatRoom项目git地址:git提交记录(仅截取部分):面向对象设计包图、类图包图UML类图总结:首先总结一下这几天遇到的问题和解决方案使用ObjectInputStream/ObjectOutputStream的…

python基础代码技巧_Python 代码优化技巧(二)

Python 是一种脚本语言,相比 C/C 这样的编译语言,在效率和性能方面存在一些不足,但是可以通过代码调整来提高代码的执行效率。本文整理一些代码优化技巧。 代码优化基本原则代码正常运行后优化。 很多人一开始写代码就奔着性能优化的目标&…

rpm 讲解

CentOS7主要有rpm和yum这两种包软件的管理。两种包的管理各有用处,其中主要区别是:YUM使用简单但需要联网,YUM会去网上的YUM包源去获取所需要的软件包。而RPM的需要的操作经度比较细,需要我们做的事情比较多。 软件包的安装和卸是…

java顺序表冒泡排序_冒泡排序就这么简单 - Java3y的个人空间 - OSCHINA - 中文开源技术交流社区...

冒泡排序就这么简单在我大一的时候自学c语言和数据结构,我当时就接触到了冒泡排序(当时使用的是C语言编写的)。现在大三了,想要在暑假找到一份实习的工作,又要回顾一下数据结构与算法的知识点了。排序对我们来说是一点也不陌生了,…

python 多线程和协程结合_如何让 python 处理速度翻倍?内含代码

阿里妹导读:作为在日常开发生产中非常实用的语言,有必要掌握一些python用法,比如爬虫、网络请求等场景,很是实用。但python是单线程的,如何提高python的处理速度,是一个很重要的问题,这个问题的…

python批量生成图_利用Python批量生成任意尺寸的图片

实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片。 效果如下:目录结构 实现示例 # -*- coding: utf-8 -*- import threading from PIL import Image image_size range(1, 1001) def start(): for…

Mysql 如果有多个可选条件怎么加索引_MySQL|mysql-索引

1、索引是什么 1.1索引简介 索引是表的目录,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,以及快速定位查询数据。对于索引,会保存在额外的文件…

java 全双工服务器_利用Java实现串口全双工通讯_JAVA实例教程_IT部落

本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执…

python语言三大基本控制结构_Python基础(4) 控制结构

三种控制流语句:if、for、while,Python用缩进表明成块的代码,以四个空格表示隶属关系,所以语句不能随意缩进。 1 条件语句 (1)简单的if语句 a 10 if a > 0: #末尾带“:” print(这是一个整数…

Spring-bean的循环依赖以及解决方式___Spring源码初探--Bean的初始化-循环依赖的解决

本文主要是分析Spring bean的循环依赖,以及Spring的解决方式。 通过这种解决方式,我们可以应用在我们实际开发项目中。 什么是循环依赖?怎么检测循环依赖Spring怎么解决循环依赖Spring对于循环依赖无法解决的场景Spring解决循环依赖的方式我们…

java+cache使用方法_java相关:springboot使用GuavaCache做简单缓存处理的方法

java相关:springboot使用GuavaCache做简单缓存处理的方法发布于 2020-3-29|复制链接摘记: 问题背景实际项目碰到一个上游服务商接口有10秒的查询限制(同个账号)。项目中有一个需求是要实时统计一些数据,一个应用下可能有多个相同的账号。由于服务商接口的…

python程序设计方法_Python程序设计现代方法

章Python概述001 1.1计算机与计算机语言002 1.1.1计算机的诞生与发展002 1.1.2计算机语言概述006 1.1.3翻译执行008 1.2Python语言概述009 1.2.1Python语言发展史009 1.2.2Python语言的特点011 1.2.3Python的应用领域012 1.2.4Python版本的区别012 1.3Python环境配置014 1.3.1安…

Spring中bean的作用域与生命周期

在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义以及bea…

pat乙级 1014 java_pat乙级1014 福尔摩斯的约会

大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsbs&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四14:04”,因为前面两字符串中第1对相同的大…

python科学编程入门书_Python数据科学零基础一本通

领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 回复已提交审核... 快登录帐号来一起…

python 整合excel_python EXcel表整合(自动办公)

收到任务,方便领导快速查看每个人的日程安排。比如每个工程师都有一个自己的表格记录自己的日程安排,领导查看每个人的日程安排需要一一打开所有工程师的日程安排表才能知道每个人的信息,而且非常不直观。 这里介绍下利用python解决实际办公问…

java poi 打开 保存_Java-Apache POI-在DB中读取和存储RTF内容

我们在Java应用程序中有一个新要求,即用户可以上传excel文件.excel文件中的一列将使用粗体,斜体,项目符号,彩色文本等格式.我们需要读取此excel文件并将这些值存储在Oracle DB表中.随后,我们还需要提取这些数据,并保留格式并下载到excel工作表中.我们计划将Apache-poi用于相同的…

Spring循环依赖的三种方式

引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Spring是如果解决循环依赖的。 第一种:构造器参数循环依赖 Spring容…

python字典统计排序1_python-如何按字典顺序对Counter.mostCommon(n)的...

这里的问题是Counter dict是无序的,并且most_common不在乎键.为此,您需要对字典中的项目进行排序,然后提取最常见的3个项目. counter Counter(abcdef) most_common sorted(counter.items(), keylambda pair: (-pair[1], pair[0])) 这将首先对-pair [1](计数)进行排序.由于出现…