Oracle ASM是一种基于磁盘的存储选项,它能够让管理员更加简单地管理数据库存储。ASM采用了虚拟化层的概念,将存储映射为卷组和卷,并且自动管理数据文件的分散。这篇文章将主要关注于Oracle ASM的管理和维护。
首先,让我们看一下如何创建ASM实例。Admin创建ASM实例时需要指定三个参数:ASM实例名、ASM磁盘组名和监听程序的名称。以下是针对这些参数的示例代码:
[root@rhel7 ~]# export ORACLE_SID=+ASM [root@rhel7 ~]# export ORACLE_HOME=/u01/app/oracle/product/12.1.0/asm_1 [root@rhel7 ~]# $ORACLE_HOME/bin/sqlplus / as sysasm SQL> CREATE SPFILE FROM PFILE=’/u01/app/oracle/product/12.1.0/asm_1/dbs/init+ASM.ora’; SQL> CREATE DISKGROUP dg1 NORMAL REDUNDANCY DISK ‘/dev/sdb’ ,’/dev/sdc’ ,’/dev/sdd’ ATTRIBUTE ‘au_size’=’4M’;
上述命令创建了一个名为“dg1”的ASM磁盘组,其中包含了三个硬盘分区。可以看到,我们还设置了“au_size”属性,以表示数据块的大小。
接下来,让我们看一下如何在使用ASM的数据库中创建表空间。这里,我们将使用CREATE TABLESPACE语句,但是请注意,我们要指定DATAFILE选项,以表示新数据库的数据文件将采用ASM格式:
SQL> CREATE TABLESPACE users 2 EXTENT MANAGEMENT LOCAL 3 UNIFORM SIZE 128K 4 DATAFILE '+dg1' 5 SIZE 200M;
由于我们包含了“+dg1”作为DATAFILE选项,所以Oracle将会自动将数据文件存储在ASM的磁盘组中。
当需要管理ASM实例和托管对象时,可以使用以下命令执行:
SQL> ALTER DISKGROUP dg1 ADD DISK ‘/dev/sde’; SQL> ALTER DISKGROUP dg1 DROP DISK ‘/dev/sdf’; SQL> ALTER DISKGROUP dg1 OFFLINE DISKS IN FAILGROUP fg1; SQL> ALTER DISKGROUP dg1 ONLINE DISKS IN FAILGROUP fg1; SQL> ALTER DISKGROUP dg1 UNDROP DISKS; SQL> ALTER DISKGROUP dg1 REBALANCE POWER 2;
上述示例命令展示了管理ASM磁盘组中硬盘的命令。具体来说,这些命令使您能够添加、删除和重新排列磁盘,禁用和启用磁盘,甚至可以更改ASM实例的重新平衡选项。
在管理ASM时,重要的是要确保监视系统的磁盘状态。这可以在ASM日志中实现。以下是一个查找最近一次ASM日志的示例:
SQL> SELECT * FROM V$ASM_OPERATION;
此命令将显示有关ASM中操作执行的详细信息,这些操作可能包括磁盘存储、磁盘重定位、磁盘组重命名、还可以指出正在运行的操作以及运行每个操作的用户。
最后,在对ASM进行管理时,请确保始终对ASM磁盘组和数据库进行备份,以便在出现故障时能够快速回收数据。在这里,我们将使用“RMAN备份语句”为例:
run { backup as copy format '/u02/backup/mydb_%d_%U' database; backup format '/u01/backup/mydb_%d_%U' archivelog all delete input; }
上面的示例命令展示了如何备份Oracle ASM磁盘组和数据库。需要注意的是按特定目录格式化文件。
总之,本文展示了如何管理Oracle ASM和用于托管对象。此外,您还学到了用于监视和备份系统的工具和技术。