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

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

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

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

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

Spring循环依赖的三种方式

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

Spring 是如何解决循环依赖的?

1.由同事抛的一个问题开始 最近项目组的一个同事遇到了一个问题,问我的意见,一下子引起的我的兴趣,因为这个问题我也是第一次遇到。平时自认为对spring循环依赖问题还是比较了解的,直到遇到这个和后面的几个问题后,重…

java按钮触发另一个页面_前端跨页面通信,你知道哪些方法?

戳蓝字「前端技术优选」关注我们哦! 引言在浏览器中,我们可以同时打开多个Tab页,每个Tab页可以粗略理解为一个“独立”的运行环境,即使是全局对象也不会在多个Tab间共享。然而有些时候,我们希望能在这些“独立”的Tab页…

【Java用法】java 8两个List集合取交集、并集、差集、去重并集

在业务的开发过程中会经常用到两个List集合相互取值的情况&#xff0c;于是记录在此&#xff0c;方便后续使用哦~~~ public class ListTest {public static void main(String[] args) {ArrayList<String> listA CollectionUtil.toList("a", "b", &…

jsonp react 获取返回值_Django+React全栈开发:文章列表

React现在我们有了一个属于文章的API&#xff0c;可以添加、修改、删除、查看文章&#xff0c;但是对于我们的网站来说&#xff0c;还需要一个用户界面才行。现在开始探索一下ReactJS吧。经常听到有前端三大框架Angular、React、Vue的说法&#xff0c;不过React官网对自己的介绍…

24个经典的MySQL索引问题,你都遇到过哪些?

1、什么是索引&#xff1f; 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分)&#xff0c;它们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询、更新数…

java 3 4_Java-3/4_树.md at master · yrcDream/Java-3 · GitHub

树二叉树二叉树具有唯一根节点二叉树每个节点最多有两个孩子&#xff0c;最多有一个父亲二叉树具有天然递归结构二叉树不一定是 “满” 的&#xff1a;一个节点也是二叉树、空节点也是二叉树二叉搜索树(BST)BST 的基本功能public class BST> {private Node root;private int…

python模块导入_python模块导入

不同的执行方式&#xff1a; 从IDE中执行&#xff0c;python程序由IDE设置环境决定。 从系统中执行&#xff0c;python程序由环境变量中的系统变量path决定&#xff0c;从上往下选择。 模块导入顺序&#xff1a; 系统包优先级最高 > 同目录 > sys.path&#xff0c;之所以…

再也不怕SVN冲突:轻松解决SVN冲突

什么时候容易出现冲突&#xff1f; 多个人同时修改了同个文件中的同一行代码 无法进行对比的二进制文件&#xff0c;比如图片等 如何解决冲突&#xff1f; 如上图&#xff0c;test_conflict.py文件发生了冲突&#xff0c;并且多出了几个文件&#xff0c;其中.mine是我本地修…

手机型号大全_2020值得入手的三款手机。每个优秀,选择哪一个?励志故事名言视频...

如今&#xff0c;手机等数码产品更新很快。各种新的技能&#xff0c;让用户真正体验到科技的力量&#xff0c;它可以被描述为“具有多种功能的一个装置。”然而&#xff0c;这么多车型&#xff0c;难免有些人不知道如何选择。当4G和5G手机**的对峙&#xff0c;很多朋友也问小中…