管理自动存储管理(Oracle ASM)实例类似于管理Oracle数据库。
本章描述了如何管理自动存储管理(Oracle ASM)实例,配置Oracle ASM实例参数,以及设置Oracle数据库参数与Oracle ASM一起使用。本章还介绍了ASM的升级、补丁和实例访问的认证。还可以使用本章中的过程将数据库迁移到使用Oracle ASM。
管理一个Oracle ASM实例类似于管理一个Oracle数据库实例,但是这个过程需要更少的过程。您可以使用Oracle ASM命令行工具(ASMCMD)命令行界面、Oracle ASM配置助手(ASMCA)和SQL*Plus来执行Oracle ASM实例管理任务。
filter
n. 过滤器;滤波器;筛选程序;分流指示灯
v. 过滤;渗透;用过滤法除去;慢慢传开;缓行;仅可左转行驶
n. (Filter) (德)菲尔特(人名)
Operating with Different Releases of Oracle ASM and Database Instances Simultaneously
同时操作不同版本的ASM和数据库实例
Oracle自动存储管理(Oracle ASM) 18c支持Oracle Database 18c或更早的软件版本,包括Oracle Database 10g Release 1(10.1)。
注意:
Oracle ASM实例必须位于Oracle ASM 18c,以支持Oracle数据库18c。
有关Oracle Exadata存储时Oracle ASM支持的Oracle数据库版本的信息,请参阅Oracle Exadata文档。
在使用具有不同版本的ASM和数据库实例的磁盘组时,还需要考虑其他兼容性问题。
当使用不同的软件版本时,数据库实例支持使用中最早版本的ASM功能。例如,使用Oracle ASM 18c实例运行的Oracle Database 10g Release 1(10.1)数据库实例只支持Oracle ASM 10g Release 1(10.1)特性。
V$ASM_CLIENT视图包含SOFTWARE_VERSION和COMPATIBLE_VERSION列,其中包含关于软件版本号和实例兼容性级别的信息。
V$ASM_CLIENT的SOFTWARE_VERSION列包含所选磁盘组连接的数据库或Oracle ASM实例的软件版本号。
COMPATIBLE_VERSION列包含所选磁盘组连接的数据库或Oracle ASM实例的COMPATIBLE参数的设置。
可以在ASM和数据库实例上查询V$ASM_CLIENT视图。
Initialization Parameters for Oracle ASM Instances
初始化参数关于Oracle ASM 实例
要安装和初始配置Oracle ASM实例,请使用Oracle Universal Installer (OUI)和Oracle ASM Configuration Assistant (ASMCA)。
在单实例Oracle数据库或Oracle Real Application Clusters (Oracle RAC)环境中安装Oracle ASM实例之后,可以执行最后的Oracle ASM配置。只需要配置少量特定于Oracle asm的实例初始化参数。默认值通常就足够了。
About Initialization Parameter Files for an Oracle ASM Instance
在Oracle Restart(独立)配置中安装Oracle ASM时,Oracle Universal Installer (OUI)为Oracle ASM实例创建一个单独的服务器参数文件(SPFILE)和密码文件。ASM SPFILE在安装期间存储在磁盘组中。
在集群化的ASM环境中安装Oracle ASM时,OUI在磁盘组中为Oracle ASM创建一个共享的SPFILE。
升级Oracle ASM实例时,如果ASM SPFILE最初在共享文件系统中,那么升级后的ASM实例将SPFILE保留在相同的位置。如果原来的ASM实例使用了PFILE,那么升级之后实例将继续使用PFILE。
可以使用SPFILE或基于文本的初始化参数文件(PFILE)作为Oracle ASM实例参数文件。如果在集群化的Oracle ASM环境中使用SPFILE,则必须将SPFILE放在磁盘组或集群文件系统中。Oracle建议将ASM SPFILE放在磁盘组中。您不能使用在现有的ASM SPFILE上创建的新别名来启动Oracle ASM实例
如果您不使用共享的Oracle网格基础设施,那么Oracle ASM实例可以使用PFILE。适用于数据库初始化参数文件的文件名、默认位置和搜索顺序规则也适用于Oracle ASM初始化参数文件。
当Oracle ASM实例搜索初始化参数文件时,搜索顺序为:
网格即插即用(GPnP)配置文件中指定的初始化参数文件的位置
如果GPnP配置文件中没有设置位置,则搜索顺序更改为:
SPFILE在Oracle ASM实例中
例如,Oracle ASM的SPFILE在Linux环境中的Oracle Grid Infrastructure home中有以下默认路径:
$ ORACLE_HOME / dbs / spfile + ASM.ora
PFILE在Oracle ASM实例中
注意:如果配置使用Oracle ASM实例的非默认初始化参数,则需要PFILE或SPFILE。
可以使用SQL*Plus、ASMCA和ASMCMD命令管理Oracle ASM初始化参数文件。
About Backing Up, Copying, and Moving an Oracle ASM Initialization Parameter File
您可以使用ASMCMD spbackup、spcopy或spmove命令备份、复制或移动Oracle ASM SPFILE。
此外,在连接到Oracle ASM实例时,可以使用SQL CREATE SPFILE创建Oracle ASM SPFILE。
您还可以使用特定平台上可用的命令(如Linux的cp)复制和移动Oracle ASM PFILE。
复制或移动一个SPFILE或PFILE之后,必须在新位置用SPFILE或PFILE重新启动实例,以使用该SPFILE或PFILE。
compatible adj. 兼容的,能共处的,可并立的
Creating, Copying, and Moving an SPFILE Into a Disk Group 创建、复制、移动SPFILE到磁盘组
如果COMPATIBLE.ASM磁盘组属性设置为11.2或更高,对于磁盘组,可以创建、复制或将ASM SPFILE移动到磁盘组中。
例如,将一个实例从Oracle ASM 11g Release 1(11.1)升级到Oracle ASM 11g Release 2(11.2)之后,可以将Oracle ASM SPFILE放在一个兼容的磁盘组中。ASM设置为11.2。有关磁盘组兼容性属性的信息,请参阅磁盘组兼容性。
https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/diskgroup-compatibility.html#GUID-FBB5AA72-5208-48E1-BD8D-0FD4C6876F34
在以下步骤中,假设一个Oracle ASM 11g版本2(11.2)实例使用了存储在$ORACLE_HOME/dbs/asmpfile.ora中的PFILE。可以使用SQL CREATE SPFILE语句从存储在本地或共享文件系统中的PFILE创建SPFILE。如果一个PFILE不存在,那么可以使用SQL CREATE PFILE语句创建它。
要在磁盘组中创建SPFILE,请执行以下步骤:
Making a Back Up Copy of an Oracle ASM SPFILE in a Disk Group
在磁盘组创建一个备份副本Oracle ASM spfile
本节介绍使用ASMCMD命令在另一个磁盘组中备份ASM SPFILE的步骤。如果需要,可以使用备份副本来恢复ASM SPFILE。
源磁盘组和目标磁盘组必须具有兼容的磁盘组属性。ASM设置为11.2或更高。
要使用spcopy命令在另一个磁盘组中复制Oracle ASM SPFILE,请执行以下步骤:
In the event that the current Oracle ASM SPFILE file in a disk group has been corrupted or that disk group is not accessible, you can use spset
or spcopy
with the -u
option to restore the Oracle ASM SPFILE file using the backup copy that you have previously created.
For example:
ASMCMD [+] > spcopy -u +FRA/spfileCopyASM.ora +DATA2/ASM/spfileASM.ora
About Oracle ASM Initialization Parameter
必须为Oracle ASM实例设置几个初始化参数。您可以使用Oracle ASM Configuration Assistant (ASMCA)设置这些参数。还可以使用SQL ALTER SYSTEM或ALTER SESSION语句在创建数据库之后设置一些参数。
ASM参数对大多数环境使用合适的默认值。在数据库实例参数文件中,不能使用名称前缀为ASM_*的参数。
About Automatic Memory Management for Oracle ASM
自动内存管理使用MEMORY_TARGET参数为ASM和数据库实例自动管理与内存相关的参数。默认情况下,即使没有显式地设置MEMORY_TARGET参数,也会在Oracle ASM实例上启用自动内存管理。MEMORY_TARGET使用的默认值对于大多数环境都是可以接受的。这是完成ASM内存管理必须设置的惟一参数。Oracle强烈建议对ASM使用自动内存管理。
如果引起ORA-04031错误并启用了自动内存管理,Oracle ASM实例可以自动增加MEMORY_TARGET和MEMORY_MAX_TARGET的设置值。如果显式地将MEMORY_MAX_TARGET设置为一个值,那么每次引发ORA-04031时,MEMORY_TARGET值将增加现有MEMORY_TARGET值的10%或128 MB,以较大的值(但不大于客户指定的MEMORY_MAX_TARGET值)为上限。如果没有显式地设置MEMORY_MAX_TARGET,那么MEMORY_TARGET和MEMORY_MAX_TARGET都将增加现有MEMORY_TARGET值的10%或128 MB(以较大的那个为准),最多增加5个。必须重新启动Oracle ASM实例,以使用新的MEMORY_TARGET和MEMORY_MAX_TARGET设置。
如果您没有为MEMORY_TARGET设置值,但是为其他与内存相关的参数设置了值,Oracle将根据这些内存参数值在内部计算MEMORY_TARGET的最佳值。您还可以动态地增加MEMORY_TARGET,直到MEMORY_MAX_TARGET参数的值,就像您可以为数据库实例所做的那样。
虽然不建议这样做,但是可以通过在Oracle ASM参数文件中将MEMORY_TARGET的值设置为0,或者运行ALTER SYSTEM SET MEMORY_TARGET=0语句来禁用自动内存管理。当您禁用自动内存管理时,Oracle将恢复到自动共享内存管理和自动PGA内存管理。要恢复到Oracle Database 10g Release 2(10.2)的功能来手动管理Oracle ASM SGA内存,还需要运行ALTER SYSTEM SET SGA_TARGET=0语句。除非指定,否则Oracle ASM实例中的自动内存管理参数的行为与Oracle数据库实例中的行为相同。
Recommended Settings for Oracle ASM Initialization Parameters
建议设置Oracle ASM初始化参数
ASM_DISKGROUPS
ASM_DISKGROUPS初始化参数指定当SQL ALTER DISKGROUP ALL MOUNT语句发出时,ASM实例在启动时挂载的磁盘组名称列表。
ASM实例启动进程执行ALTER DISKGROUP ALL MOUNT,除非指定了NOMOUNT启动选项。
ASM_DISKGROUPS参数的默认值是一个空字符串。
ASM_DISKGROUPS参数是动态的。如果您正在使用服务器参数文件(SPFILE),那么在大多数情况下,您不必手动更改ASM_DISKGROUPS的值。当磁盘组成功创建或挂载时,ASM会自动将磁盘组添加到参数中。当删除磁盘组时,ASM还会自动从参数中删除磁盘组。但是,SPFILE不会在手动卸载时更新。
注意:在Oracle Flex ASM配置中,在卸载时不会从SPFILE中删除磁盘组。必须始终自动挂载磁盘组,以便远程实例可以访问它们。远程实例是Oracle数据库、Oracle IOServer或Oracle ASM代理实例,它们位于与Oracle ASM实例不同的节点上。
The following is an example of setting the ASM_DISKGROUPS
parameter dynamically:
SQL>ALTER SYSTEM SET ASM_DISKGROUPS = DATA, FRA;
在使用文本初始化参数文件(PFILE)时,可以编辑初始化参数文件来添加任何磁盘组的名称,以便在实例启动时自动挂载它。必须删除不再希望自动挂载的任何磁盘组的名称。
下面是一个例子的ASM_DISKGROUPS参数在初始化文件:
ASM_DISKGROUPS =DATA, FRA
注意:发出ALTER DISKGROUP…所有挂载或更改磁盘组…所有的卸载命令不会影响ASM_DISKGROUPS的值。
对于Oracle数据库12c.1或更高版本,ASM配置最多支持511个磁盘组。12c版本1之前的Oracle数据库版本的ASM配置最多只能支持63个磁盘组。
ASM_DISKSTRING
ASM_DISKSTRING初始化参数指定一个以逗号分隔的字符串列表,该列表限制ASM实例发现的磁盘集。
wildcard 通配符
发现字符串可以包含通配符。只有匹配其中一个字符串的磁盘被发现。同一个磁盘不能被发现两次。
发现字符串格式取决于所使用的ASM库和操作系统。支持模式匹配。有关默认模式匹配的信息,请参阅特定于操作系统的安装指南。
例如,在Linux服务器上,为了限制发现过程只包含/dev/rdsk/mydisks目录下的磁盘,对于不使用ASM过滤驱动程序(Oracle ASMFD)或ASMLIB的Oracle ASM实例,将ASM_DISKSTRING初始化参数设置为:
/dev/rdsk/mydisks/*
The asterisk required.
星号是必需的。
为了限制发现过程只包含以disk3或disk4结尾的磁盘,您可以在Linux系统上设置ASM_DISKSTRING,如下所示:
ASM_DISKSTRING = '/dev/rdsk/*disk3','/dev/rdsk/*disk4'
?字符,用作路径的第一个字符时,展开到Oracle主目录。取决于操作系统,当您使用?在路径的其他位置,它是一个字符的通配符。
ASM_DISKSTRING参数的默认值是空字符串。空值导致ASM为系统中所有磁盘搜索默认路径,ASM实例对这些磁盘有读写访问权。默认的搜索路径是特定于平台的。有关默认搜索路径的更多信息,请参阅特定于操作系统的安装指南。
除非集群中的所有ASM实例都能通过它们自己的发现字符串发现磁盘,否则ASM不能使用磁盘。名称不必在每个节点上都相同,但是所有磁盘必须能够被集群中的所有节点发现。这可能需要动态更改初始化参数来启用添加新存储。
ASM_IO_PROCESSES
ASM_IO_PROCESSES初始化参数指定在Oracle IOServer (IOS)服务器实例中要启动的IO工作进程的数量。
此参数仅适用于Oracle IOServer实例,该实例在Oracle网格基础设施中运行。
在为客户端集群生成凭据文件时,IOServer实例在Oracle网格基础结构配置中自动启动。您可以配置在客户端集群中运行的IOServer实例的数量。
默认值在大多数情况下都可以使用。然而,在沉重的IO负载下,一个比默认值更高的值可能是合适的。
ASM_POWER_LIMIT
ASM_POWER_LIMIT初始化参数指定磁盘组中磁盘再平衡的默认电源。
值的范围是0到1024。默认值是1。值为0将禁用再平衡。数值越大,再平衡操作完成得越快,但可能会导致更高的I/O开销和更多的再平衡过程。
对于磁盘组ASM兼容性设置为11.2.0.2或更高的磁盘组(例如,COMPATIBLE.ASM = 11.2.0.2),再平衡功率运行范围为0 ~ 1024。
对于磁盘组ASM兼容性设置为小于11.2.0.2的磁盘组,操作范围为0到11(包括11)。如果ASM_POWER_LIMIT的值大于11,则对这些磁盘组使用11的值。
还可以使用SQL ALTER DISKGROUP的power子句指定磁盘组中再平衡操作的权限。平衡的声明。POWER子句的允许值范围与ASM_POWER_LIMIT初始化参数相同。如果将ASM兼容性设置为小于11.2.0.2的磁盘组的POWER子句的值指定为大于11,则会显示一个警告,并使用一个等于11的POWER值进行再平衡。
指定磁盘组中重新平衡操作的权限只影响重新平衡操作,而不影响对磁盘组的新分配。
注意:
Oracle建议不要将ASM_POWER_LIMIT初始化参数设置为0。
在Oracle Exadata或Oracle数据设备环境中,不能将ASM_POWER_LIMIT初始化参数设置为0。
ASM_PREFERRED_READ_FAILURE_GROUPS
ASM_PREFERRED_READ_FAILURE_GROUPS初始化参数值是一个以逗号分隔的字符串列表,它指定给定实例应该优先读取的故障组 failure groups。
注意:ASM_PREFERRED_READ_FAILURE_GROUPS初始化参数在Oracle ASM 12c版本2(12.2)中已经被弃用,可能在将来的版本中会被弃用。
ASM_PREFERRED_READ_FAILURE_GROUPS参数设置是实例特有的。默认值为NULL。该参数通常用于集群化的ASM实例,其值在不同的节点上可能不同。
For example:
diskgroup_name1
.failure_group_name1
, ...
Note:
In an Oracle extended cluster, which contains nodes that span multiple physically separated sites, the PREFERRED_READ.ENABLED
disk group attribute controls whether preferred read functionality is enabled for a disk group. If preferred read functionality is enabled, then this functionality enables an instance to determine and read from disks at the same site as itself, which can improve performance. Whether or not PREFERRED_READ.ENABLED
has been enabled, preferred read can be set at the failure group level on an Oracle ASM instance or a client instance in a cluster with the ASM_PREFERRED_READ_FAILURE_GROUPS
initialization parameter, which is available for backward compatibility.
The failure group values set by ASM_PREFERRED_READ_FAILURE_GROUPS
take precedence over the PREFERRED_READ.ENABLED
site values. The values of ASM_PREFERRED_READ_FAILURE_GROUPS
on the client ins
DB_CACHE_SIZE
DB_CACHE_SIZE参数的设置决定缓冲区缓存的大小。
如果使用自动内存管理,则不必为DB_CACHE_SIZE初始化参数设置值。
这个缓冲区缓存存储元数据块。此参数的默认值适用于大多数环境。
SQL> show parameter db_Cache_size; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_cache_size big integer 1008M
DIAGNOSTIC_DEST
DIAGNOSTIC_DEST初始化参数指定实例诊断所在的目录。
Oracle ASM实例的默认值是Oracle网格基础设施安装的$ORACLE_BASE目录。
例3-1显示了一个Oracle ASM实例的诊断目录示例。
Example 3-1 Sample diagnostic directory for an Oracle ASM instance
$ ls $ORACLE_BASE/diag/asm/+asm/+ASM alert cdump hm incident incpkg ir lck metadata stage sweep trace
INSTANCE_TYPE
INSTANCE_TYPE初始化参数指定实例是数据库实例、Oracle自动存储管理(Oracle ASM)实例还是Oracle ASM代理实例。
Oracle ASM Proxy instance oracle 代理实例
以下是初始化文件中的INSTANCE_TYPE参数示例:
INSTANCE_TYPE = ASM
除了asm和rdbms的值之外,还可以在Oracle Flex asm配置中将INSTANCE_TYPE设置为asmproxy。
LARGE_POOL_SIZE
LARGE_POOL_SIZE参数的设置用于大型分配。
如果使用自动内存管理,则不必为LARGE_POOL_SIZE初始化参数设置值。
此参数的默认值适用于大多数环境。
PROCESSES
进程初始化参数会影响ASM,但是默认值通常是合适的。
但是,如果多个数据库实例连接到一个Oracle ASM实例,那么可以使用以下公式,其中n是连接到Oracle ASM实例的数据库实例数量。
在非exadata环境中,推荐的设置如下:
对于n < 10,进程= 50*n + 50
对于n >= 10,进程= 10*n + 450
Oracle Exadata 数据库一体机
在Oracle Exadata环境中,推荐的设置是PROCESSES = MAX(450 + 10*n, 1024)。
REMOTE_LOGIN_PASSWORDFILE
REMOTE_LOGIN_PASSWORDFILE初始化参数指定ASM实例是否检查密码文件。
该参数对ASM和数据库实例的操作是相同的
SHARED_POOL_SIZE
The setting for the SHARED_POOL_SIZE
parameter determines the amount of memory required to manage the instance.
You do not have to set a value for the SHARED_POOL_SIZE
initialization parameter if you use automatic memory management. The setting for this parameter is also used to determine the amount of space that is allocated for extent storage. The default value for this parameter is suitable for most environments.
SQL> show parameter shared_pool_size; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ shared_pool_size big integer 1008M
About Setting Database Initialization Parameters for Use with Oracle ASM
关于设置数据库初始化参数与Oracle ASM一起使用
当您在数据库实例中不使用自动内存管理时,数据库实例的SGA参数设置可能需要进行少量修改才能支持Oracle ASM。在使用自动内存管理时,本节中讨论的分级数据只能作为信息性信息或辅助信息来帮助确定应该为SGA使用的适当值。Oracle强烈建议使用自动内存管理。
以下是数据库实例SGA分级的配置指南:
处理初始化参数—将16添加到当前值
LARGE_POOL_SIZE初始化参数—在当前值上添加额外的600K
SHARED_POOL_SIZE初始化参数——聚合以下查询中的值,以获得当前数据库的存储大小,该存储大小可以在Oracle ASM上,也可以存储在Oracle ASM中。接下来,确定冗余类型并使用聚合值作为输入计算SHARED_POOL_SIZE。
The following are configuration guidelines for SGA sizing on the database instance:
-
PROCESSES
initialization parameter—Add 16 to the current value -
LARGE_POOL_SIZE
initialization parameter—Add an additional 600K to the current value -
SHARED_POOL_SIZE
initialization parameter—Aggregate the values from the following queries to obtain the current database storage size that is either on Oracle ASM or stored in Oracle ASM. Next, determine the redundancy type and calculate theSHARED_POOL_SIZE
using the aggregated value as input. -
SELECT SUM(bytes)/(1024*1024*1024) FROM V$DATAFILE; SELECT SUM(bytes)/(1024*1024*1024) FROM V$LOGFILE a, V$LOG b WHERE a.group#=b.group#; SELECT SUM(bytes)/(1024*1024*1024) FROM V$TEMPFILE WHERE status='ONLINE';
对于使用外部冗余的磁盘组,每100gb空间需要1mb额外的共享池和2mb
对于使用正常冗余的磁盘组,每50gb空间需要1mb额外的共享池和4mb
对于使用高冗余的磁盘组,每33 GB空间需要1 MB额外的共享池和6 MB
-
-
For disk groups using external redundancy, every 100 GB of space needs 1 MB of extra shared pool plus 2 MB
-
For disk groups using normal redundancy, every 50 GB of space needs 1 MB of extra shared pool plus 4 MB
-
For disk groups using high redundancy, every 33 GB of space needs 1 MB of extra shared pool plus 6 MB
-