1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Oracle 自动存储管理 (ASM)

Oracle 自动存储管理 (ASM)

时间:2020-07-27 15:12:08

相关推荐

Oracle 自动存储管理 (ASM)

1. 在 Oracle ASM 中添加磁盘和删除磁盘操作

1.1 Automatic Storage Management

ASM:自动存储管理

Oracle 在 10g 版本之前仅将数据存储在文件系统中。因此,在执行 Oracle I/O 操作时,最后一个词和进程属于操作系统。有一些问题,因为没有集中的存储管理。例如,在有多个挂载点(挂载到服务器的物理或逻辑磁盘)的情况下,即使表空间已被填满,我们也必须以 DBA 身份执行额外的操作(禁用自动扩展等)足够的空间。

借助自动存储管理功能,Oracle 数据库的存储管理完全掌握在 Oracle 手中。为此,您需要在安装 Oracle 数据库软件之前安装 ASM。ASM 是一个单独的实例,就像 Oracle 数据库实例一样。当您连接到 ASM 实例时,只执行与 ASM 相关的磁盘操作。无法执行与数据库相关的查询或处理。

顺便说一下,我们说10g引入了自动存储管理,但这并不意味着文件系统已经结束。对于 Oracle 10g、11g、12c、18c 甚至新发布的 Oracle 19c,您可以使用 ASM 来简化存储的管理,或者您可以使用旧式的文件系统。

1.2 Oracle 自动存储管理优势

条带化是 ASM 最重要的特性。有了这个特性,如果一个磁盘组中有多个磁盘,ASM 会通过在数据区级别将数据分发到这些不同的磁盘来保存数据。例如,如果一个磁盘组有 5 个磁盘,则数据在 extent 级别进行拆分并分发到 5 个磁盘。下图精美地展示了这个分发过程。

在旧类型的文件系统模型中,数据存储在单个磁盘上,因为它存储在数据文件的基础上。因此,当我们使用 ASM 时,可以获得额外的性能,因为我们使用 ASM 将数据分布到不同的磁盘。

镜像是 ASM 的另一个重要特性。借助此功能,可以执行基于磁盘的备份。写入时,不同的副本同时写入两个或多个磁盘,因此当磁盘组中的磁盘发生故障时,ASM 将从其他磁盘恢复。

镜像可以通过 Oracle ASM 或存储级别完成。如果在存储级别进行镜像,则无需使用 Oracle ASM 进行镜像。

对于磁盘组中的磁盘故障,ASM 中存在三种冗余模型。这些如下。

外部冗余:该模型没有镜像,所以没有Oracle级别的磁盘备份。通常建议在存储级别执行镜像的情况下使用此模型。在此模型中,100% 的磁盘可用。因此,如果您的磁盘大小为 1 TB,则可用磁盘空间为 1 TB。

正常冗余:在此模型中,Oracle 存储数据的两个副本。如果存储级别没有 Raid 配置,则通常首选此模型。如果您的磁盘大小为 1 TB,可用磁盘空间将减少到 500 GB。

高冗余:在该模型中,Oracle 将数据存储在三个副本中。这样,即使其中一两个磁盘损坏,也不会丢失数据。如果您的磁盘大小为 3 TB,可用磁盘空间将减少到 1 TB。

重新平衡:Oracle ASM 的其他特性之一是它在磁盘组中执行重新平衡数据。有了这个特性,数据几乎平均分布在所有磁盘上,所以数据均匀分布在磁盘上。平衡磁盘还可以提高性能。当一个新的磁盘被添加到 ASM 磁盘组或从 ASM 磁盘组中删除时,重新平衡过程开始并且数据被均匀分布。

使用 ASM 时,Oracle 会自动命名数据文件和重做日志。例如,将任何数据文件添加到表空间时,如果使用文件系统,则指定所有路径和数据文件名称。在 ASM 中,只指定了磁盘组名称。

如果使用 ASM,则将数据文件添加到表空间:

ALTER TABLESPACE DEVECI ADD DATAFILE '+DATA' SIZE 10M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;

如果使用文件系统,则将数据文件添加到表空间:

ALTER TABLESPACE MEHMET ADD DATAFILE '/oracle/oradata/MEHMET/deveci01.dbf' SIZE 10M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;

2. ASM 磁盘组

当使用 Oracle ASM 时,磁盘组的概念就进入了我们的生活。顾名思义,我们将数据存储在磁盘组中,其中一个或多个磁盘组合在一起,而不是单个磁盘。

ASM 实例与 Oracle 数据库实例不同。当我们如下查询smon进程时,“+ASM”实例被列为一个实例。

oracle:deveci01:/home/users/oracle:>ps -ef |grep smonroot 11731186 1 18 10:05:48 - 0:00 /u01/app/oracle/product/12.1.0/grid/bin/osysmond.binoracle 12058826 1 0 10:06:56 - 0:00 ora_smon_DEVECIoracle 12976246 1 0 10:06:24 - 0:00 asm_smon_+ASMoracle 38338572 28049424 1 10:07:02 pts/0 0:00 grep smon

要连接到 ASM 实例,请按如下方式创建 ASM 实例配置文件。

oracle:deveci01:/home/users/oracle:> vi profile.12g.asmexport ORACLE_HOME=/u01/app/oracle/product/12.1.0/gridexport ORACLE_BASE=/u01/app/oracleexport PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATHexport ORACLE_SID=+ASMbash

如上创建后,我们可以如下设置配置文件,我们现在可以连接到 ASM:

oracle:deveci01:/home/users/oracle:> . profile.12c.asm

或者您可以按如下方式设置 ASM 实例配置文件

oracle:deveci01:/home/users/oracle:> . oraenvORACLE_SID = [oracle] ? +ASMThe Oracle base has been set to /u01/app/oracle[oracle@deveci ~]#

asmcmd 是我们执行和监视许多磁盘操作的工具。

我们可以使用 LSDG 命令连接并列出磁盘组和大小、可用空间等,如下所示。

oracle:deveci:/home/users/oracle:> asmcmdASMCMD> lsdgState Type Rebal Sector Block AUTotal_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files NameMOUNTED EXTERN N512 4096 1048576 512000 510551 0510551 0 N DATA/MOUNTED EXTERN N512 4096 4194304 204800 203272 0203272 0 Y RECO/ASMCMD>ASMCMD> cd DATAASMCMD> ls -lType Redund Striped Time Sys NameY DEVECI/

我们还可以使用

sqlplus / as sysasm

命令连接到 ASM 实例,并使用查询执行类似的操作。

您可以按如下方式向 ASM 磁盘组添加和删除磁盘。

首先设置 ASM 配置文件:

oracle:deveci01:/home/users/oracle:> . profile.12c.asm

也可以通过如下方式何止ASM 实例配置文件:

oracle:deveci01:/home/users/oracle:> . oraenvORACLE_SID = [oracle] ? +ASMThe Oracle base has been set to /u01/app/oracle[oracle@deveci ~]#

然后我们使用命令“sqlplus / as sysasm”连接到 ASM 实例。

运行以下查询以查看此处的磁盘组:

SQL> SELECT GROUP_NUMBER, NAME,SECTOR_SIZE,BLOCK_SIZE,ALLOCATION_UNIT_SIZE,STATE,TYPE TOTAL_MB,FREE_MB FROM V$ASM_DISKGROUP;GROUP_NUMBER NAMESECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE STATE TOTAL_ FREE_MB------------ -------- ----------- ---------- -------------------- ----------- ------ ----------1 DATA512 4096 1048576 CONNECTED EXTERN 3559152 RECO512 4096 1048576 CONNECTED EXTERN 721067

如果一个 ASM Disk 已经映射到操作系统(这是一个存储端操作。),它们将出现在下面的查询中。HEADER_STATUS = CANDIDATE 是无法添加的磁盘。

HEADER_STATUS 值为 CANDIDATE 的磁盘是未映射到操作系统的磁盘。

SQL> SELECT MOUNT_STATUS, HEADER_STATUS, MODE_STATUS, STATE, TOTAL_MB, FREE_MB, NAME, PATH, LABEL FROM V$ASM_DISK;MOUNT_S HEADER_STATU MODE_ST STATE TOTAL_MB FREE_MB NAME PATHLABEL------- ------------ ------- -------- ---------- ---------- ----------- ------------------CLOSED CANDIDATEONLINE NORMAL 00 /dev/rhdisk38CLOSED CANDIDATEONLINE NORMAL 00 /dev/rhdisk39CLOSED CANDIDATEONLINE NORMAL 00 /dev/rhdisk40CACHED MEMBER ONLINE NORMAL 102399 17756DATA_0000 /dev/rhdisk10CACHED MEMBER ONLINE NORMAL 102399 17795DATA_0001 /dev/rhdisk11CACHED MEMBER ONLINE NORMAL 102399 17787DATA_0002 /dev/rhdisk12

如果重新创建磁盘组,则可以使用以下命令

首先创建这个组,然后将磁盘添加到磁盘组中,如下所示。

CREATE DISKGROUP RECO EXTERNAL REDUNDANCY DISK '/dev/mapper/asmtsk1' NAME RECO_0001 SIZE 102399 M;ALTER DISKGROUP RECO REBALANCE POWER 10;ALTER DISKGROUP RECO ADD DISK '/dev/mapper/asmtsk2' NAME RECO_0002 SIZE 102399 M REBALANCE POWER 10;ALTER DISKGROUP RECO ADD DISK '/dev/mapper/asmtsk3' NAME RECO_0003 SIZE 102399 M REBALANCE POWER 10;ALTER DISKGROUP RECO ADD DISK '/dev/mapper/asmtsk4' NAME RECO_0004 SIZE 102399 M REBALANCE POWER 10;ALTER DISKGROUP RECO ADD DISK '/dev/mapper/asmtsk5' NAME RECO_0005 SIZE 102399 M REBALANCE POWER 10;

如果我们在 2 节点 RAC 系统上创建了一个新磁盘组,我们不应忘记将磁盘组挂载到第二个节点上。

SQL> select INST_ID,GROUP_NUMBER,NAME,STATE from GV$ASM_DISKGROUP;INST_ID GROUP_NUMBER NAME STATE---------- ------------ ------- -------11 DATA MOUNTED12 RECO MOUNTED21 DATA MOUNTED20 RECO DISMOUNTEDSQL> alter diskgroup RECO mount;Diskgroup altered.SQL> select INST_ID,GROUP_NUMBER,NAME,STATE from GV$ASM_DISKGROUP;INST_ID GROUP_NUMBER NAME STATE---------- ------------ ------ -----------11 DATA MOUNTED12 RECO MOUNTED21 DATA MOUNTED22 RECO MOUNTED

将 /dev/rhdisk12 磁盘添加到 RECO 磁盘组:

SQL> ALTER DISKGROUP RECO ADD DISK '/dev/rhdisk38' NAME RECO_0010 SIZE 102399 M REBALANCE POWER 10;Diskgroup altered.

我们给出重新平衡操作的并行度值,并通过 POWER 参数提高 REBALANCE 的速度。

在繁忙的系统上设置为 10 会降低数据库的性能。

如果未给出此参数,则默认采用 ASM_POWER_LIMIT 参数的值。ASM_POWER_LIMIT 可以采用 0-11 的值。可以从

V$ASM_OPERATION

视图中监控重新平衡状态 。

如果未给出此参数,则默认采用 ASM_POWER_LIMIT 参数的值。

SQL> show parameter ASM_POWER_LIMITNAME TYPE VALUE-------- ------- --------asm_power_limit integer 1SQL> select * from v$asm_operation;

除了 ASMCMD 和 sqlplus,您还可以查看磁盘组并使用 asmca 实用程序添加和删除磁盘。

添加一个带有 asmca 的磁盘:

可以按如下方式删除 ASM 磁盘组中的磁盘:

SQL> SELECT name, header_status, path FROM V$ASM_DISK;NAME HEADER_STATU PATH----------- -------------- ----------FORMER /dev/rhdisk18FORMER /dev/rhdisk15FORMER /dev/rhdisk16FORMER /dev/rhdisk17DATA_0000 MEMBER /dev/rhdisk10DATA_0001 MEMBER /dev/rhdisk11DATA_0002 MEMBER /dev/rhdisk12DATA_0003 MEMBER /dev/rhdisk13DATA_0004 MEMBER /dev/rhdisk14

SQL> alter diskgroup DATA drop disk DATA_0004;Diskgroup altered.

丢弃的磁盘中 header_status 的值将是前者

SQL> SELECT name, header_status, path FROM V$ASM_DISK;NAME HEADER_STATU PATH----------- -------------- ----------FORMER /dev/rhdisk18FORMER /dev/rhdisk14FORMER /dev/rhdisk15FORMER /dev/rhdisk16FORMER /dev/rhdisk17DATA_0000 MEMBER /dev/rhdisk10DATA_0001 MEMBER /dev/rhdisk11DATA_0002 MEMBER /dev/rhdisk12DATA_0003 MEMBER /dev/rhdisk13

如果 RAC 是数据库,则应检查所有节点,并在其他节点中看到相同的状态。

使用 asmca 删除磁盘:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。