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      删除一个用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值