课程目标:
1、使用ASM带来的好处
2、ASM实例
ASM实例同样也是由进程和内存组成。
ASM的SGA包括:
ASM实例默认使用自动内存管理,动态调整SGA各个内存组件的大小,内存总大小取决于ASM管理的磁盘空间,最小推荐值为256MB。
ASM实例有很多进程,有的和数据库实例的进程名称一样,但是可能功能不一样。主要的进程如下:
3、ASM实例初始化参数
主要有以下参数:
INSTANCE_TYPE = ASM
ASM_POWER_LIMIT = 1
ASM_DISKSTRING = '/dev/sda1','/dev/sdb*'
ASM_DISKGROUPS = DATA2, FRA
ASM_PREFERRED_READ_FAILURE_GROUPS = DATA.FailGroup2
DIAGNOSTIC_DEST = /u01/app/oracle
LARGE_POOL_SIZE = 12M
REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE
ASM 实例由参数文件控制,其方式与常规数据库实例相同。通常设置的参数包括:
上面列出的八个参数是需要为ASM 实例创建的唯一几个非默认参数。ASM 实例与数据库实例不同,因为并不是所有的数据库参数都对ASM 实例有效。在全部344 个数据库实例参数中,大约有74 个参数可以用于ASM 实例。对于上面未列出的其它参数,虽然其默认值对于大多数安装来说应该已经足够了,但也可以根据需要进行设置。
ASM 实例默认启用自动内存管理,即使未明确设置MEMORY_TARGET参数也是如此。Oracle强烈建议对ASM 实例使用自动内存管理。
例子:查看ASM参数文件的位置
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ -------------------- ------------------------------
spfile string +DATA/asm/asmparameterfile/reg
istry.253.893366739
例子:查看参数文件的内容
SQL> create pfile='/home/grid/pfile.ora' from spfile;
File created.
SQL> get /home/grid/pfile.ora
1 +ASM.__oracle_base='/u01/app/grid'#ORACLE_BASE set from in memory value
2 +ASM.asm_diskgroups='FRA'#Manual Mount
3 *.asm_power_limit=1
4 *.diagnostic_dest='/u01/app/grid'
5 *.instance_type='asm'
6 *.large_pool_size=12M
7* *.remote_login_passwordfile='EXCLUSIVE'
4、数据库实例和ASM之间的交互
文件创建过程可以很好地说明数据库实例与ASM 之间发生的交互。文件创建过程如下所示:
1. 数据库请求创建文件。
2. ASM 前台进程创建一个持续操作目录(COD) 条目并在磁盘组中为新的文件分配空间。
3. ASMB 数据库进程接收新文件的区映射。
4. 现在文件处于打开状态,数据库进程直接初始化该文件。
5. 初始化后,数据库进程请求提交文件创建。这会导致ASM 前台进程清除COD 条目并将文件标记为已创建。
6. 文件提交确认会隐式关闭该文件。将来发生I/O 时,数据库实例需要重新打开该文件。
此示例强调了关于ASM 体系结构的重要两点:
5、ASM实例的动态性能视图
ASM实例有许多专用的ASM相关视图,通过SQL语句进行查询。
常用动态性能视图如下:
例子:查看与ASM相关的动态性能视图有哪些
SQL> col comments for a50;
SQL> conn / as sysdba
Connected.
SQL> select * from dict where table_name like 'V$ASM_%';
TABLE_NAME COMMENTS
------------------------------ --------------------------------------------------
V$ASM_ACFSSNAPSHOTS Synonym for V_$ASM_ACFSSNAPSHOTS
V$ASM_ACFSVOLUMES Synonym for V_$ASM_ACFSVOLUMES
V$ASM_ACFS_ENCRYPTION_INFO Synonym for V_$ASM_ACFS_ENCRYPTION_INFO
V$ASM_ACFS_SECURITY_INFO Synonym for V_$ASM_ACFS_SECURITY_INFO
V$ASM_ALIAS Synonym for V_$ASM_ALIAS
V$ASM_ATTRIBUTE Synonym for V_$ASM_ATTRIBUTE
V$ASM_CLIENT Synonym for V_$ASM_CLIENT
V$ASM_DISK Synonym for V_$ASM_DISK
V$ASM_DISKGROUP Synonym for V_$ASM_DISKGROUP
V$ASM_DISKGROUP_STAT Synonym for V_$ASM_DISKGROUP_STAT
V$ASM_DISK_IOSTAT Synonym for V_$ASM_DISK_IOSTAT
TABLE_NAME COMMENTS
------------------------------ --------------------------------------------------
V$ASM_DISK_STAT Synonym for V_$ASM_DISK_STAT
V$ASM_FILE Synonym for V_$ASM_FILE
V$ASM_FILESYSTEM Synonym for V_$ASM_FILESYSTEM
V$ASM_OPERATION Synonym for V_$ASM_OPERATION
V$ASM_TEMPLATE Synonym for V_$ASM_TEMPLATE
V$ASM_USER Synonym for V_$ASM_USER
V$ASM_USERGROUP Synonym for V_$ASM_USERGROUP
V$ASM_USERGROUP_MEMBER Synonym for V_$ASM_USERGROUP_MEMBER
V$ASM_VOLUME Synonym for V_$ASM_VOLUME
V$ASM_VOLUME_STAT Synonym for V_$ASM_VOLUME_STAT
21 rows selected.
例子:查看ASM文件别名信息
SQL> select name,group_number,file_number,alias_directory,system_created from v$asm_alias;
NAME GROUP_NUMBER FILE_NUMBER A S
-------------------------------------------------- ------------ ----------- - -
ASM 1 4294967295 Y Y
ASMPARAMETERFILE 1 4294967295 Y Y
REGISTRY.253.893366739 1 253 N Y
STONE 1 4294967295 Y Y
DATAFILE 1 4294967295 Y Y
例子:查看ASM磁盘组属性
SQL> select name,value,group_number,system_created from v$asm_attribute;
NAME VALUE GROUP_NUMBER SYSTEM_
---------------------------------------- -------------------- ------------ -------
disk_repair_time 3.6h 1 Y
au_size 1048576 1 Y
sector_size 512 1 Y
compatible.asm 11.2.0.0.0 1 Y
compatible.rdbms 10.1.0.0.0 1 Y
例子:查看连接到ASM实例的客户机信息
SQL> select group_number,instance_name,db_name,status from v$asm_client;
GROUP_NUMBER INSTANCE_N DB_NAME STATUS
------------ ---------- -------- ------------
1 stone stone CONNECTED
2 stone stone CONNECTED
1 +ASM +ASM CONNECTED
例子:查看ASM磁盘信息
SQL> select group_number,disk_number,name,TOTAL_MB,FREE_MB from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME TOTAL_MB FREE_MB
------------ ----------- ---------------------------------------- ---------- ----------
0 0 0 0
0 3 0 0
1 0 DATA_0000 2047 950
1 1 DATA_0001 2047 948
2 0 FRA_0000 2047 1147
2 1 FRA_0001 2047 1152
6 rows selected.
例子:查看ASM磁盘I/O情况
SQL> select instname,dbname,group_number,disk_number,reads,writes,hot_reads,hot_writes from v$asm_disk_iostat;
INSTNAME DBNAME GROUP_NUMBER DISK_NUMBER READS WRITES HOT_READS HOT_WRITES
---------- -------- ------------ ----------- ---------- ---------- ---------- ----------
stone stone 2 1 44 402 0 0
stone stone 1 1 6233 731 0 0
stone stone 1 0 5518 453 0 0
stone stone 2 0 20 343 0 0
+ASM +ASM 1 1 0 0 0 0
+ASM +ASM 1 0 0 0 0 0
6 rows selected.
例子:查看ASM磁盘状态
SQL> select group_number,disk_number,name,mount_status,create_date,mount_date from v$asm_disk_stat;
GROUP_NUMBER DISK_NUMBER NAME MOUNT_S CREATE_DA MOUNT_DAT
------------ ----------- ---------------------------------------- ------- --------- ---------
1 0 DATA_0000 CACHED 17-OCT-15 15-DEC-15
1 1 DATA_0001 CACHED 17-OCT-15 15-DEC-15
2 0 FRA_0000 CACHED 17-OCT-15 15-DEC-15
2 1 FRA_0001 CACHED 17-OCT-15 15-DEC-15
例子:查看ASM磁盘组信息
SQL> select group_number,name,sector_size,block_size,allocation_unit_size,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE TOTAL_MB FREE_MB
------------ ---------- ----------- ---------- -------------------- ---------- ----------
1 DATA 512 4096 1048576 4094 1898
2 FRA 512 4096 1048576 4094 2299
例子:查看ASM磁盘组状态
SQL> select group_number,name,sector_size,block_size,allocation_unit_size,total_mb,free_mb from v$asm_diskgroup_stat;
GROUP_NUMBER NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE TOTAL_MB FREE_MB
------------ ---------- ----------- ---------- -------------------- ---------- ----------
1 DATA 512 4096 1048576 4094 1898
2 FRA 512 4096 1048576 4094 2299
例子:查看ASM文件信息
SQL> select group_number,file_number,block_size,blocks,bytes,space,type from v$asm_file;
GROUP_NUMBER FILE_NUMBER BLOCK_SIZE BLOCKS BYTES SPACE TYPE
------------ ----------- ---------- ---------- ---------- ---------- --------------------
1 253 512 3 1536 1048576 ASMPARAMETERFILE
1 256 8192 97281 796925952 799014912 DATAFILE
6、ASM系统权限
ASM 实例没有数据字典,所以连接ASM 只能使用下列系统权限:
安装ASM 时,使用操作系统组对SYSASM、SYSDBA和SYSOPER权限进行验证。Oracle Universal Installer (OUI)将这些组分别称为OSASM、OSDBA和 OSOPER组,即OSASM组是授予了 SYSASM权限的操作系统组。Oracle建议OSASM、OSDBA和OSOPER组名称分别为asmadmin、asmdba和 asmoper。因此,SYSASM是数据库使用的名称,OSASM是OUI使用的名称,而asmadmin是操作系统使用的名称。它们都是指同一组用户。当创建ASM实例时,只定义sys和asmsnmp这两个ASM用户。创建SYS用户时,会自动为其分配SYSASM权限。
Enterprise Manager允许你管理通过远程连接(使用口令文件验证)访问ASM 实例的用户。这些用户是专门为ASM 实例保留的。
仅当你作为SYSASM用户连接时才具有此功能。如果你作为SYSDBA或SYSOPER用户连接,该功能将隐藏。
要以SYSASM角色登录ASM,请单击该页顶部的“Preferences(首选项)”链接,然后单击“Preferred Credentials(首选身份证明)”链接。此时你将在目标类型列表中看到ASM。单击ASM目标类型旁边的“Set Credentials(设置身份证明)”图标,定义具有SYSASM权限的帐户和口令。你需要从Database Control 中注销并再次登录,更改才会生效。
例子:使用EM管理ASM用户
例子:使用SQL*Plus管理ASM用户
SQL> create user stone identified by stone;
User created.
SQL> grant sysasm,sysdba,sysoper to stone;
Grant succeeded.
8、使用SQL*Plus启动和停止ASM实例
使用SQL*Plus 启动和停止ASM 实例与启动和停止数据库实例的方式相似。
当启动ASM 实例时,需注意以下几点:
与ASM相关的STARTUP命令参数:
在SQL*Plus 中运行SHUTDOWN命令将关闭ASM 进程。在运行此命令之前,确保已设置ORACLE_SID和 ORACLE_HOME环境变量,以便可以连接到ASM 实例。
Oracle 强烈建议在尝试关闭ASM 实例之前关闭使用该ASM 实例的所有数据库实例。
与ASM相关的SHUTDOWN命令参数:
ASM是依赖于CSS守护进程的,因此在启动ASM实例前要确保CSS守护进程已经启动。CSS(Cluster Synchronization Services) 守护进程用来维持ASM及客户端数据库实例间的一致性同步,如果是通过dbca建库的话,那么CSS守护进程默认即会启动。
例子:连接到ASM实例,关闭并启动ASM实例
[grid@oracletest1 ~]$ . oraenv
ORACLE_SID = [+ASM] ?
The Oracle base remains unchanged with value /u01/app/grid
[grid@oracletest1 ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Tue Dec 15 16:30:39 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Automatic Storage Management option
SQL> shutdown
ORA-15097: cannot SHUTDOWN ASM instance with connected client (process 61836)
SQL> shutdown abort
ASM instance shutdown
SQL> startup
ASM instance started
Total System Global Area 1135747072 bytes
Fixed Size 2260728 bytes
Variable Size 1108320520 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM STARTED
SQL> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DATA MOUNTED
FRA MOUNTED
9、使用srvctl启动和停止ASM实例
可以使用Server Control实用程序(srvctl) 启动和停止ASM实例以及由Grid Infrastructure管理的其它资源。srvctl实用程序位于Grid Infrastructure的ORACLE_HOME/bin位置下和数据库安装的 ORACLE_HOME/bin位置下。管理ASM、监听程序或Oracle Restart 时,应该使用位于Grid Infrastructure ORACLE_HOME中的srvctl实用程序。
使用 srvctl实用程序来控制ASM:
例子:使用srvctl关闭和启动asm实例并查看状态
[grid@oracletest1 ~]$ . oraenv
ORACLE_SID = [+ASM] ?
The Oracle base remains unchanged with value /u01/app/grid
[grid@oracletest1 ~]$ srvctl stop asm -f
[grid@oracletest1 ~]$ srvctl status asm
ASM is not running.
[grid@oracletest1 ~]$ srvctl start asm -o mount
[grid@oracletest1 ~]$ srvctl status asm
ASM is running on oracletest1
[oracle@oracletest1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Dec 15 16:57:31 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database open;
Database altered.
10、使用asmcmd启动和关闭ASM实例
asmcmd实用程序提供了一个访问ASM的命令行界面,无需使用SQL语言。asmcmd实用程序提供了一个类似伪Shell的环境,可以接受UNIX格式的语法执行常用的ASM管理任务。
它可以用于管理Oracle ASM实例、磁盘组、磁盘组的文件访问控制、磁盘组内的文件和目录、磁盘组的模板以及卷。
可以使用 asmcmd实用程序启动和关闭ASM实例。支持的启动选项包括:
--nomount(在不装载磁盘组的情况下启动ASM实例)
--restrict(启动ASM实例并限制数据库使用)
--pfile (使用定制pfile启动ASM实例)
支持的关闭选项包括:
--immediate(立即执行关闭)
--abort(中止所有现有操作)
例子:使用asmcmd关闭和启动ASM实例
[grid@oracletest1 ~]$ . oraenv
ORACLE_SID = [+ASM] ?
The Oracle base remains unchanged with value /u01/app/grid
[grid@oracletest1 ~]$ asmcmd
ASMCMD> shutdown --abort
ASM instance shutdown
Connected to an idle instance.
ASMCMD> startup
ASM instance started
Total System Global Area 1135747072 bytes
Fixed Size 2260728 bytes
Variable Size 1108320520 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
11、磁盘组
磁盘组是一个或多个磁盘的逻辑分组,ASM将其作为一个集合来管理。每个磁盘组都包含与自身相关联的元数据。在概念上,ASM磁盘组类似于存储区域网络中的逻辑卷。
从磁盘组内分配文件空间。磁盘组中存储的文件的内容将在该磁盘组的磁盘中平均分布或条带化,以便消除热点并在各磁盘上提供一致的性能。每个ASM 文件都完全包含在一个磁盘组中。但是,一个磁盘组可以包含属于多个数据库的文件,而一个数据库可以使用来自多个磁盘组的不同文件。
磁盘组的关键属性是它的冗余设置。有三种可能的磁盘组冗余设置:
ASM最多支持创建63 个磁盘组;但是,对于大多数安装,你很少会需要很多磁盘组。
12、ASM磁盘
– 整个物理磁盘或物理磁盘的分区– 存储阵列中的磁盘或分区– 逻辑卷(LV)或逻辑单元(LUN)– 网络文件(NFS)
ASM磁盘组包含一个或多个ASM磁盘。
ASM磁盘必须可由集群中所有节点的ASM所有者读取和写入。
ASM磁盘可以是磁盘上的分区,但是Oracle强烈建议不要与其它应用程序程序共享ASM使用的物理磁盘。这是因为在应用ASM条带化和镜像策略时,磁盘组内的各个ASM磁盘的I/O性能必须相似且一致,才能获得最佳性能。在ASM和其它应用程序之间共享设备会难以确保磁盘性能相似且一致。
集群中不同节点上的ASM磁盘的O/S设备名称不必相同。ASM通过读取ASM磁盘的标头来识别磁盘组的成员。
通常,ASM 磁盘是以存储阵列中的裸LUN提供给ASM的。另外,ASM磁盘还可以是远程NFS文件。
13、分配单元
在ASM 磁盘内,空间划分为分配单元(AU)。AU默认大小是1 MB,该大小足够小,不会变为热点,但又足够大,能够提供高效的连续访问。创建磁盘组时可以设置AU大小。你无法更改磁盘组的AU大小。在超大型数据库(VLDB) 中或使用专门的存储硬件时,较大的AU大小可能会很有用。如果经常访问某个AU,则数据库内核会将其缓存以便实现更高的访问效率。
允许的AU 大小: 1、2、4、8、16、32 或64 MB 。
14、ASM文件
以上显示了一个完全限定的ASM文件名的示例。完全限定的ASM文件名表示一个层次结构,其开头是加号与磁盘组名称的组合。磁盘组名称后是数据库名称和文件类型。最后的元素由标记名称、文件编号和原型编号组成。可以创建别名(可选),为管理员提供一种更友好的方式来使用ASM 文件。
ASM 本身支持大多数与数据库相关的文件类型,例如数据文件、日志文件、控制文件、RMAN 备份及其它文件。在11gR2之前,ASM 仅支持与Oracle数据库相关的文件,无法用于存储和管理跟踪文件和告警日志、Oracle二进制文件、Oracle集群注册表(OCR) 和集群表决磁盘。Oracle 11gR2提供在ASM上运行通用文件系统的方式,从而消除了上述限制。
例子:查看数据库的表空间及对应的数据文件
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- ------------------------------------------------------------
USERS +DATA/stone/datafile/users.259.893370691
UNDOTBS1 +DATA/stone/datafile/undotbs1.258.893370691
SYSAUX +DATA/stone/datafile/sysaux.257.893370691
SYSTEM +DATA/stone/datafile/system.256.893370691
EXAMPLE +DATA/stone/datafile/example.265.893370807
TS01 +DATA/stone/datafile/ts01.dbf
6 rows selected.
例子:增加一个表空间及数据文件
SQL> create tablespace ts02 datafile '+DATA';
Tablespace created.
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- ------------------------------------------------------------
USERS +DATA/stone/datafile/users.259.893370691
UNDOTBS1 +DATA/stone/datafile/undotbs1.258.893370691
SYSAUX +DATA/stone/datafile/sysaux.257.893370691
SYSTEM +DATA/stone/datafile/system.256.893370691
EXAMPLE +DATA/stone/datafile/example.265.893370807
TS01 +DATA/stone/datafile/ts01.dbf
TS02 +DATA/stone/datafile/ts02.268.898602153
7 rows selected.
15、区映射
ASM通过称为区映射的元数据跟踪文件的分布。区映射是一个表,将文件中的数据区映射到磁盘上的分配单元。
文件区与分配单元之间的关系如下所示。区包含:
将可变大小的区与大型分配单元结合使用,可满足非常大的ASM 文件的需要。
16、条带粒度
在ASM 中,条带化主要具有两个目的:
粗粒度条带化
粗粒度条带化在磁盘组的各磁盘中分布分配单元。这用于为磁盘组提供负载平衡。分配文件时,ASM 会在所有磁盘中平均分布分配单元。有时分布无法非常平均,但是随着时间的流逝,会变得几乎相等。上图显示了一个具有五个分配单元的文件,这些分配单元在条带化之后,分布在一个外部冗余磁盘组的五个磁盘中,该磁盘组共包含八个磁盘。
对于前20,000个区,区大小等于AU大小。从第20,001个区到第40,000个区,该区组总是一次分配8个区,区大小等于4 倍AU大小。如果AU大小为1MB,这意味着ASM文件将一次增大32MB (8 * 4 * 1 MB)。如果文件采用粗粒度条带化,则它将在8个区中进行条带化,条带大小为1AU。条带化始终在AU 级别进行,而不是在区级别。因此,无论文件多大,粗粒度文件的每个AU都与该文件的前一个AU所在的磁盘不同。在第40,000个区之后,仍旧是每次分配8个区,但区大小等于16 倍AU大小。
细粒度条带化
细粒度条带化在分配单元组中放置128KB条带单元来改善等待时间。
细粒度条带化将数据区拆分为128 KB的块,然后在许多磁盘中分布每个区的负载,从而改善特定类型文件的等待时间。默认情况下,细粒度条带化用于控制文件和联机重做日志文件。
上图显示了细粒度条带化的工作原理。文件的第一个1 MB区最终占用8个不同分配单元中的第一个128 KB块,这8个分配单元分布在磁盘组的八个磁盘中。因此,1 MB的读取或写入分布在八个磁盘(而不是一个磁盘)中。
继续前面的示例,空间中的下一个1 MB区将分布在相同分配单元组的每个单元的第二个128 KB块中。这种模式将继续,直到第一组分配单元写满,然后分配另一组。
17、ASM故障组
在磁盘组内,可以将一些磁盘归到故障组中。故障组是存储或数据库管理员指定ASM镜像操作的硬件边界的一种方式。
可以将连接到一个磁盘控制器的所有磁盘指定在一个故障组内。这样就可以将文件区镜像到其他控制器的磁盘上。另外,管理员可以配置ASM来选择默认故障组策略。默认策略是每个磁盘位于自己的故障组中。
故障组可以用于避免单个磁盘、磁盘控制器、I/O网络组件以及甚至整个存储系统的故障。通常,管理员将分析其存储环境并对故障组进行组织来消除特定故障情况。
18、条带化和镜像示例
一个共含八个磁盘的正常冗余磁盘组,其中的磁盘分布在两个故障组中。
红块表示一个包含五个区的文件,这些区在条带化后,分布在磁盘组(共八个磁盘)的五个磁盘中。蓝块表示文件区的镜像副本。请注意,无论区在各个磁盘和故障组中如何分布,每个区在一个故障组中仅有一个副本。
分配文件时,主区的分配用于保证性能,辅助区的分配用于保证完整性。因此,默认情况下,所有数据库读取都针对主区进行。
19、故障示例
如果磁盘H发生故障,则将根据他的镜像在正常磁盘上重新创建该磁盘包含的区。
假设磁盘H发生故障,无法再访问其包含的数据。该故障要求恢复故障磁盘上的所有区并将这些区复制到另一磁盘。
区3和5的正常副本将复制到同一故障组中另一磁盘的空闲区域。在此示例中,区5将从磁盘B复制到磁盘F,区3将从磁盘C复制到磁盘G。
磁盘发生故障后的最后一步是ASM从磁盘组中删除故障磁盘。
删除磁盘基本上会触发相同的过程;不过,在删除磁盘时,要被删除的磁盘上的区首先会复制到可用磁盘上。
20、管理磁盘组
ASM实例的主要目的是管理磁盘组和保护其数据。ASM实例还将文件分布传送到数据库实例。这样,数据库实例就可以直接访问磁盘组中存储的文件。
有多个磁盘组管理命令。执行这些命令都需要SYSASM或SYSDBA权限,且必须从ASM实例发出。
可以添加新磁盘组。还可以修改现有磁盘组来添加新磁盘、删除现有磁盘以及执行许多其它操作。可以删除现有磁盘组。
(1)使用SQL*Plus创建和删除磁盘组
假设ASM磁盘搜索在/dev目录中找到了下列磁盘:A1、A2、B1和B2。另外,假设磁盘A1和A2的磁盘控制器不同于B1和B2的磁盘控制器。第一个示例说明如何配置名为DGROUPA的磁盘组,其包含两个故障组:CONTROLLER1和ONTROLLER2。
该示例还对该磁盘组使用默认冗余属性NORMAL REDUNDANCY。你还可以提供磁盘名称和磁盘的大小(可选)。如果你不提供此信息,ASM会创建默认名称并尝试确定磁盘的大小。如果无法确定大小,将返回错误。FORCE指示指定的磁盘应该添加到指定的磁盘组,即使该磁盘已经格式化为某个ASM磁盘组的成员。对未格式化为某个ASM磁盘组的成员的磁盘使用FORCE选项将返回错误。
如第二个语句所示,你可以删除磁盘组及其所有文件。为了避免意外删除,如果磁盘组除内部ASM元数据外还包含任何其它文件,则必须指定INCLUDING CONTENTS选项。必须先装载磁盘组才能将其删除。在确保未打开任何磁盘组文件后,将从磁盘组中删除该组及其所有驱动器。然后,将覆盖每个磁盘的标头来清除ASM 格式信息。
例子:创建磁盘组和删除磁盘组
[grid@oracletest1 ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 16 17:17:25 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Automatic Storage Management option
SQL> create diskgroup dgroupA normal redundancy
2 failgroup controller1 disk
3 '/dev/raw/raw5' name diskA1 size 1G,
4 '/dev/raw/raw6'
5 failgroup controller2 disk
6 '/dev/raw/raw7',
7 '/dev/raw/raw8';
Diskgroup created.
SQL> drop diskgroup dgroupA including contents;
Diskgroup dropped.
(2)向磁盘组添加磁盘
此示例显示如何向磁盘组添加磁盘。可以执行ALTER DISKGROUP ADD DISK命令来添加磁盘。上面第一个语句向DGROUPA磁盘组添加四个新磁盘。
第二个语句说明搜索字符串的相互影响。考虑下列配置:
/devices/A1是磁盘组DGROUPA的成员。
/devices/A2是磁盘组DGROUPA的成员。
/devices/A3是磁盘组DGROUPA的成员。
/devices/A4是候选磁盘。
第二个命令将A4添加到DGROUPA磁盘组。该命令将忽略其它磁盘,即使它们与搜索字符串相匹配,因为它们已经是DGROUPA磁盘组的一部分。上图显示当你向磁盘组添加磁盘时,ASM实例会确保该磁盘是可寻址且可用的。然后会对该磁盘进行格式化和重新平衡。重新平衡过程比较耗费时间,因为该过程会将所有文件的区移至新磁盘。
重新平衡不会阻止任何数据库操作。重新平衡过程主要影响系统的I/O负载。重新平衡的能力越高,对系统施加的I/O负载越多,可用于数据库I/O的I/O带宽也就越少。
例子:创建一个磁盘组,然后向磁盘组中添加磁盘
SQL> create diskgroup dgroupA normal redundancy
2 failgroup controller1 disk
3 '/dev/raw/raw5' name diskA1 size 1G
4 failgroup controller2 disk
5 '/dev/raw/raw7';
Diskgroup created.
SQL> alter diskgroup dgroupA add disk '/dev/raw/raw8' name A8;
Diskgroup altered.
(3)其它ALTER命令
从dgroupA删除磁盘:
ALTER DISKGROUP dgroupA DROP DISK A5;
在单个命令中添加和删除磁盘:
ALTER DISKGROUP dgroupA
DROP DISKA6
ADD FAILGROUP controller3 DISK '/dev/sdi1' NAME A9;
取消磁盘删除操作:
ALTER DISKGROUP dgroupA UNDROP DISKS;
第一个语句显示如何从DGROUPA磁盘组中删除一个磁盘。
第二个语句显示如何在单个命令中添加和删除磁盘。这种方式的一大优点就是在该命令完成后才开始重新平衡操作。
第三个语句显示如何取消磁盘删除操作。UNDROP命令仅对在删除中的磁盘起作用;如果已经完成删除,则不能UNDROP。
如果需要,可以使用下面的语句对DGROUPB磁盘组进行重新平衡:
ALTER DISKGROUP dgroupB REBALANCE POWER 5;
通常不需要执行这个命令,因为在添加、删除磁盘或调整磁盘大小时会自动执行重平衡。但是如果你希望使用POWER子句覆盖由初始化参数ASM_POWER_LIMIT定义的默认速度,此命令非常有用。通过重新输入具有新级别的命令,可以更改正在进行的重平衡操作的能力级别。能力级别为零会导致重平衡操作中断,直到隐式或显式重新调用该命令。
下面的语句可以卸载DGROUPA:
ALTER DISKGROUP dgroupA DISMOUNT;
通过MOUNT和DISMOUNT选项,你可以使一个或多个磁盘组对数据库实例可用或不可用。
在支持单实例的集群ASM环境中,当该实例故障转移到另一节点时,手动卸载和装载功能非常有用。
例子:从磁盘组中删除磁盘
SQL> alter diskgroup dgroupA drop disk A8;
Diskgroup altered.
例子:从磁盘组中删除磁盘,并增加一个故障组,包含一个磁盘
SQL> alter diskgroup dgroupA
2 drop disk diskA1
3 add failgroup controler3 disk '/dev/raw/raw6' name A6;
Diskgroup altered.
例子:取消删除磁盘组中的磁盘
SQL> alter diskgroup dgroupA undrop disks;
Diskgroup altered.
(4)管理目录
ASM 磁盘组中文件和目录的管理自动化水平相当高,应该说基本上完全不需要DBA参与,当然,也是可以手动修改的。
创建新目录:
SQL> alter diskgroup asmdisk2 add directory '+ASMDISK2/JSS1';
Diskgroup altered.
修改目录名:
SQL> alter diskgroup asmdisk2 rename directory '+ASMDISK2/JSS1'
2 to '+ASMDISK2/JSS2';
Diskgroup altered.
删除目录名:
SQL> alter diskgroup asmdisk2 drop directory '+ASMDISK2/JSS2';
Diskgroup altered.
实际上,ASM中目录和文件的管理,也可以通过ASMCMD命令行方式进行,该命令行进入之后,是一个类似文件系统的管理界面,ORACLE提供了一些最基础的,如cd、ls、mkdir、rm等等几个有限的操作命令。
(5)管理别名
当系统自动产生的名称太过复杂不怎么好记,DBA可以通过别名,为它创建一个简单化的名称,而又不会对其现有名称造成任何影响。ASM中创建别名是通过alter diskgroup的alias子句实现,支持增加/修改/删除等多项操作。V$ASM_ALIAS视图中可以查询到当前实例中创建的别名。
增加别名:
SQL> alter diskgroup asmdisk2 add alias '+ASMDISK2/repdb/datafile/temp01.dbf' for '+ASMDISK2/repdb/TEMPFILE/TEMP.267.714576831';
Diskgroup altered.
修改别名:
SQL> alter diskgroup asmdisk2 rename alias '+ASMDISK2/repdb/datafile/temp01.dbf' to '+ASMDISK2/repdb/TEMPFILE/temp01.dbf';
Diskgroup altered.
删除别名:
SQL> alter diskgroup asmdisk2 drop alias '+ASMDISK2/repdb/TEMPFILE/temp01.dbf';
Diskgroup altered.
不管是添加/删除或是修改别名,对原有文件路径均不会有影响。
(6)使用EM管理ASM
可以通过EM管理磁盘组,设置相关参数,管理用户以及创建ASM集群文件系统。
21、ASM磁盘组兼容性
每个磁盘组的兼容性都可以分别控制:
– ASM兼容性控制磁盘上ASM元数据结构。
– RDBMS兼容性控制最低使用者客户机级别。
– ADVM兼容性确定磁盘组是否可以包含Oracle ASM卷。
设置磁盘组兼容性的操作是不可逆的。
适用于ASM磁盘组的兼容性有三种:涉及描述磁盘组的持久性数据结构,客户机(磁盘组的使用者)的功能,以及能否在磁盘组中包含卷。这些属性分别称为“ASM compatibility”、“RDBMS compatibility”和“ADVM compatibility”。每个磁盘组的兼容性都可以独立控制。这是支持包含Oracle Database 10g和Oracle Database 11g磁盘组的异构环境所必需的。
这三种兼容性设置是每个ASM 磁盘组的属性:
仅当持久性磁盘结构或消息传送协议发生更改时,才需要提高磁盘组的兼容性。但是,提高磁盘组兼容性是一个不可逆的操作。可以使用CREATE DISKGROUP命令或ALTER DISKGROUP命令来设置磁盘组兼容性。
除了磁盘组兼容性,兼容参数compatibility(数据库兼容版本)确定了启用的功能;该参数是适用于数据库还是ASM实例取决于instance_type参数。例如,将该参数设置为10.1将禁止使用Oracle Database 11g中引入的任何新功能(磁盘联机/脱机、可变区等)。
22、ASM磁盘组属性
当创建或更改ASM磁盘组时,都可以使用CREATE DISKGROUP和ALTER DISKGROUP命令新增的ATTRIBUTE子句更改其属性。上图中的表简要概述了这些属性:
对于每个已定义的磁盘组,可以通过V$ASM_ATTRIBUTE视图查看所有已定义的属性。
例子:通过v$asm_attribute查看ASM磁盘组属性
SQL> select name,value from v$asm_attribute;
NAME VALUE
-------------------------------------------------- ----------------------------------------
disk_repair_time 3.6h
au_size 1048576
sector_size 512
compatible.asm 11.2.0.0.0
compatible.rdbms 10.1.0.0.0
23、使用EM编辑磁盘组属性
EM提供了一种简便方式用于存储和检索与磁盘组相关的环境设置。
在“Create Disk Group(创建磁盘组)”页和“Edit Advanced Attributes for Disk Group(编辑磁盘组的高级属性)”页中都可以设置兼容属性。
对于低于11g的ASM实例,默认ASM兼容性和客户机兼容性都为10.1。对于11g的ASM 实例,默认ASM兼容性为11.2,数据库兼容性为10.1。
24、检索ASM元数据
ASM实例有基于内存的元数据表,这些表通过动态性能视图呈现。可以使用SQL*Plus、asmcmd或Enterprise Manager查询该数据。
第一个示例在v$asm_file和v$asm_alias之间建立了一个联接,以便显示关于数据库数据文件的元数据。如果针对ASM实例执行此查询,根据语法的定义方式,将检索多个数据库的数据文件。需要使用附加过滤条件才能将输出限定为单个数据库。
asmcmd实用程序的优点在于不需要SQL语言知识就能连接到ASM实例并检索元数据。它使用与UNIX 表示法类似的样式。第二个示例使用asmcmd命令来检索SQL示例中的元数据。另一个优点是输出限制为单个数据库的数据文件,因为列出的路径包含数据库名称orcl和文件类型datafile。
在Oracle Enterprise Manager Database Control中,只需在各个ASM Web页中浏览就能查看大多数ASM 元数据。
例子:使用SQL*Plus查看ASM元数据
SQL> select f.type,f.redundancy,f.striped,f.modification_date,a.system_created,a.name
2 from v$asm_alias a,v$asm_file f
3 where a.file_number=f.file_number and a.group_number=f.group_number and type='DATAFILE';
TYPE REDUND STRIPE MODIFICAT S NAME
-------------------- ------ ------ --------- - -------------------------
DATAFILE UNPROT COARSE 16-DEC-15 Y SYSTEM.256.893370691
DATAFILE UNPROT COARSE 16-DEC-15 Y SYSAUX.257.893370691
DATAFILE UNPROT COARSE 16-DEC-15 Y UNDOTBS1.258.893370691
DATAFILE UNPROT COARSE 16-DEC-15 Y USERS.259.893370691
DATAFILE UNPROT COARSE 16-DEC-15 Y EXAMPLE.265.893370807
DATAFILE UNPROT COARSE 16-DEC-15 N ts01.dbf
DATAFILE UNPROT COARSE 16-DEC-15 Y TS01.267.895795017
7 rows selected.
例子:使用asmcmd查看ASM元数据
[grid@oracletest1 ~]$ asmcmd
ASMCMD> ls -l +DATA/STONE/DATAFILE
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE DEC 16 07:00:00 Y EXAMPLE.265.893370807
DATAFILE UNPROT COARSE DEC 16 07:00:00 Y SYSAUX.257.893370691
DATAFILE UNPROT COARSE DEC 16 07:00:00 Y SYSTEM.256.893370691
DATAFILE UNPROT COARSE DEC 16 07:00:00 Y TS01.267.895795017
DATAFILE UNPROT COARSE DEC 16 07:00:00 Y UNDOTBS1.258.893370691
DATAFILE UNPROT COARSE DEC 16 07:00:00 Y USERS.259.893370691
N ts01.dbf => +DATA/STONE/DATAFILE/TS01.267.895795017
例子:使用EM查看ASM元数据
25、ASM 快速镜像重新同步概览
ASM快速镜像重新同步可以显著减少重新同步临时故障磁盘所需的时间。如果某个磁盘因临时故障而脱机,ASM将跟踪在中断期间发生修改的区。临时故障被修复后,ASM可以快速地仅重新同步在中断期间受影响的ASM 磁盘区。
此功能假设受影响的ASM磁盘的内容未被破坏或修改。
某个ASM磁盘路径出现故障时,如果您已设置了相应磁盘组的DISK_REPAIR_TIME属性,则ASM 磁盘会脱机,但不会被删除。此属性的设置确定了ASM可容忍的磁盘中断持续时间;如果中断在此时间范围内,则修复完成后仍可重新同步。
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) | Powered by Discuz! X3.2 |