asm联机文档自己翻译的

发布时间:2015-02-04 15:08:47   来源:文档文库   
字号:

Asm

1、 ASM是针对于oracle数据库的卷管理器和文件系统,它支持单实例和rac集群数据库配置。Asmoracle推荐的卷管理,文件系统,裸设备的管理方案。OracleASM使用磁盘组去存储数据文件,oracleASM磁盘组是多个磁盘组成的集,这个磁盘集中的磁盘是oracleasm的管理单元

2、 在磁盘组中oracle数据文件是不需要手动去指定位置,存储在asm磁盘中的文件时均匀分析在磁盘中的以消除热点,并且提供一致的性能,这个性能和裸设备的性能相媲美

3、 你能够从asm磁盘组中添加或删除一个磁盘,同时并不会影响数据库继续访问磁盘组中的文件。当你从磁盘组中添加或者删除一个磁盘后,oracleasm自动重新分布文件的内容,这样就避免了当你手工重新分布文件内容所造成的当机时间。

4、 Oracleasm卷管理器新特性提供了镜像选项,oracleasm正常情况下提供高冗余的磁盘组,使用两路或者三路镜像,你能够使用外部的镜像比如磁盘阵列的raid进行镜像保护功能当使用外部镜像时就不需要设置asm镜像

5、 Oracleasm依然使用omforacle managed files)特性去简化数据文件管理。Omf在指定的本地位置会自动建立文件,并且当表空间或者文件被删除后,omf也会从asm删除文件,并且释放空间。

6、 Oracle asm 会降低管理开销,因为它将数据库存储,整合成一个小数量的磁盘组并且改善了I/O性能。

7、 Oracle asm 文件能够与其他的存储管理特性共存,像裸磁盘,第三方的文件系统。这个特性对于已经存在的oracle环境起到了整合的简化功能。

8、 Oracle acfs文件系统是一个多平台可扩展的文件系统,acfs的管理技术是oracleasm特性的扩展以支持客户保持oracle数据库以外的文件。Oracle asm动态卷管理器。即oracle-advm提供卷管理服务和一个标准的磁盘驱动接口给客户端负责维护使用

Oracle asm 概念

1、 oracle asm 实例(instances):由sga和后台进程组成oracle asm实例比正常的数据库要精简的多,并且SGA也比正常的数据库要小很多。Oracle asm 实例加载asm文件提供给生产数据库实例,但是oracleasm实例是不能加载数据库的,即mount databases

2、 oracle asm 要先安装与oracle数据库。并且有单独的oracle home目录,oracle asm实例和数据库实例必须共享访问磁盘组中的磁盘。Oracle asm 实例管理磁盘组中的元数据,并且提供文件布局的信息给生产数据库实例;

3、 oracle asm元数据他是一个信息,这个信息是提供给oracle asm使用去控制磁盘组和驻留在磁盘组内部的元数据。Oracle asm 元数据信息metadata)包括下面的信息

磁盘属于哪个磁盘组

磁盘组中可供使用的空间

磁盘组中的文件的文件名

本地磁盘组中数据文件的位置

Redo log记录信息这个信息是关于元数据块变化的

Oracle advm信息(动态卷信息)

4、 oracle asm 实例能够在oracle clusterwareoracle集群)中被集群。这个oracle asm实例是针对于集群中所有的节点。如果有多个数据库实例在同一个节点上,但是对应不通的数据库,那么数据库实例会在该节点上共享同一个oracleasm实例。

如果oracle asm实例在一个节点上失败,那么在该节点上所有数据库实例都将会失败,oracle asm实例失败并不需要重新启动系统。在rac的环境中oracleasm实例所在节点上失败后,oracle asm实例和数据库实例会从从幸存的节点上自动恢复。

1-1 显示单实例数据库服务器

图1-1显示的是单节点的配置方式,一个oracle asm 实例和多个数据库实例,oracle asm实例管理着元数据和提供空间分配给oracle asm 文件,当一个数据库实例建立或者打开一个oracle asm 文件时,它会把这个请求传给oracle asm实例,这个oracle asm 实例将会反馈文件段(file extent)分布信息给数据库实例。图1-1中有两个磁盘组,一个磁盘组有4个磁盘。另外一个组有两个磁盘。数据库能够访问两个磁盘组。图1-1中显示多个数据库实例。但是只有一个oracle asm 实例是服务于其他多个数据库实例的。

1-2

1-2显示了在rac集群环境中oracle asm oracle asm提供了一个集群存储池,每个节点上都有一个oracle asm实例这个实例服务于rac集群中多个或者单个数据库实例,rac集群中所有的数据库统一并且共享图1-2两个ASM磁盘组

1-3

1-3显示一个集群存储池能够被多个单实例数据库所共享,像图1-3这个情况,多个数据库共享磁盘组,通过oracle clusterware可以实现共享oracle asm存储池,所以像这种情况,oracle rac license不是必须的

5节:在多个节点之间去共享磁盘组的话你必须安装oracle clusterware软件在每一个节点上。不论你是否在节点上安装了oracle racOracle asm实例可以是单独的节点,并不一定是oracle asm集群中的成员。所以如果你的oracle asm 实例不是oracle asm cluster的一部分,他们是不能通信的。多个节点如果不是oracle asm集群的成员的话,他们是不能共享磁盘组的。

6节:关于Oracle asm 磁盘组

1、 一个磁盘组由多个磁盘组成,磁盘是oracle asm 基本的管理对象,每个磁盘组包含的元数据是磁盘组中的空间的管理要求,磁盘组的组成部分包括,磁盘,文件,和分配单元。文件是磁盘组分配的,一个oracle asm文件只能属于一个磁盘组,但是一个磁盘组可以包含属于不通数据库的asm文件。一个独立的数据库可以使用多个磁盘组文件,对于大多数情况你只需要配置一个磁盘组就够了,再多一点的话就是两个,很少会超过三个。

7节:关于asm镜像特性(这个功能基本上用不到,因为现在的阵列都会配置raid

1、 两路镜像

2、 三路镜像

3、 不使用asm镜像功能,(当你配置硬件raid功能时候就可以不使用asm的镜像功能了)

8节:关于oracle asm磁盘对象

1、 oracle asm 磁盘是个存储设备,他是oracle asm 磁盘组预分配的。

2、 oracle asm 磁盘组的存储设备可以是下面的设备组成

:一个存储阵列中的一个磁盘或者一个分区

整个磁盘或者磁盘一部分

:逻辑卷

nfs

9节:当你添加一个磁盘到磁盘组时,你可以手工指定这个磁盘在oracle asm中的名字,或者也可以由oracle asm 自动分配的。当oracle asm分配这些名字时这个名称是不相同的,这些不同的名称由使用的操作系统路径名构成。在一个集群中,一个磁盘可能被分配不同的操作系统的设备名称在不同的节点上,但是在所有的节点上这个硬盘存放在oracleasm中的名称是相同的。Oracle asm 会把文件均匀分布在所有的磁盘上,确保负载均衡。因为oracle asm在磁盘组中所有的磁盘做负载均衡,所以不同的oracle asm 不应该共享相同的物理驱动器。

10节:Oracle asm 分配单元

每个oracle asm 磁盘被分割成一个个的(AU)单位。AU 是磁盘组的基本组成单位。默认为1M一个文件段包括一个或多个AU单位,一个oracle asm 文件包括一个或多个文件段(extents)。当你建立一个磁盘组时,你可以设置oracle asm的分配单位即:au_size

这个值包括1,2,4,8,16,32,64。单位是MB

11节:关于oracle asm 文件

1、 文件存放在oracle asm 磁盘组中后被叫做 oracle asm文件,oracle asm可以存放的文件包括 :控制文件,数据文件,临时文件,数据文件的拷贝,spfile参数文件,日志文件,归档日志,flashback logs(闪回日志),rman backup,等等

2、 Oracle asm会自动生成oracle asm 文件名。在建立表空间时候不需要在指定文件的路径和名称了。Oracle asm文件的名称是以+号开头后面跟磁盘路径名。你可以给oracle asm文件指定别名也可以给目录指定别名。

12节:oracle asm 文件组从部分

1、 extent

2、 Oracle asm striping

3、 File templates(文件模板)

Extent初始大小等于AU的大小在20000extent之前0-19999

extent达到20000-39999的范围时候extent的大小就等于4*AU的大小了

extent的数量达到20000或者40000+的时候extent的大小就等于16*AU的大小了。

13oracle asm striping(条带)

1、 oracle asm 条带只要有两个主要目的,一个是将数据均衡分布在磁盘组中的所有磁盘上,第二是均衡I/O挣用,striping(条带)又分为粗粒度条带和细粒度条带,粗粒度条带的大小等于AU的大小,细粒度条带的大小等于128KB当文件很大时候使用粗粒度条带,文件很小时候使用细粒度条带,会提高IO的性能。减少延迟。

14节:file templates(模板文件模板文件是用于指定“磁盘集合或者叫磁盘区域”的属性值的集合,当你建立一个文件的时候,你可以选择一个模板文件,并且在模板文件的基础上指定所需要的属性。一个默认的模板提供了所有oracle文件的类型,但是你能够定制你所要求的,每个磁盘组都有个默认模板这个模板于磁盘组内每个文件都是关联的。

15了解oracle-asm 磁盘组的管理

Asm磁盘组的管理包括:discovering disks(发现磁盘),加载和卸载磁盘组,添加和删除磁盘,在线存储重新配置和动态再平衡

1、 关于发现磁盘:磁盘发现进程可以找到并且可以访问位于操作系统下的磁盘,磁盘发现进程会找到磁盘组中包含的所有磁盘并且去加载它。Oracle-asm-instanceoracle-asm实例)的初始化参数 adm_diskstring的值是发现进程所必须的,而且这个参数的值只能是路径的名称

2、 组成asm磁盘组的源可以是

1、 磁盘分区,这个磁盘分区可以是整个磁盘或者磁盘的一部分,但是不能给这个磁盘分区格式化后给asm使用,而且这个分区内部能有其他的数据,因为会被覆盖掉。类似于裸设备

2、 Logical Unit Number (LUN)即‘逻辑单元号’:先解释下什么叫做lun

LUN的全称是Logical Unit Number,也就是逻辑单元号。(这个主要用于存储阵列中)我们知道SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个,我们可以用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了。

而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了LUN的概念,也就是说LUN ID的作用就是扩充了Target ID。每个Target下都可以有多个LUN Device,我们通常简称LUN Device为LUN,这样就可以说每个设备的描述就有原来的Target x变成Target x LUN y了,那么显而易见的,我们描述设备的能力增强了。就好比,以前你给别人邮寄东西,写地址的时候,可以写:

xx市人民大街54号 xxx(收)

但是自从高楼大厦越来越多,你不得不这么写:

xx市人民大街54号xx大厦518室 xxx (收)

所以我们可以总结一下,LUN就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方。(从阵列划过来的空间同样不能格式化给asm用,也就是相当于裸设备)

3、 Logical Volume(逻辑卷):逻辑卷的意思并不是逻辑分区,具体含义参考QQ日志。Oracle不推荐这种配置。(物理磁盘组成---卷组然后卷组可以划分成N个逻辑卷对逻辑卷进行格式化后就可以给系统使用了。

4、 NFS文件系统:从nfs文件系统中可以建立asm的磁盘组,使用nfs文件系统能够更好的负载均衡和存储规划,windows上的direct nfs能够存储数据文件但不支持oracle的集群文件去安装rac,当从nfs建立磁盘组时候目前它不能够支持oracle-asm 动态卷管理器(advm)和oracle-asm集群文件系统(acfs,或 internet file systemcifs

16:用于oracle-asm存储资源(构成存储空间的组成部分)的准备过程

1、 识别存储资源的名称,比如认到硬盘了:识别或创建用于Oracle ASM存储设备通过识别所有的存储资源的设备名称,你可以用它来创建Oracle ASM磁盘组。例如,在没有ASMLibLinux系统中,设备名称通常是从/ dev目录与/ dev/ device_name_identifier的名称

2、 改变存储资源拥有者和权限

17节:存储准备的建议

1、 配置两个磁盘组,一个是数据另外一个是快速恢复区(fast recovery area

2、 每个磁盘组至少有4lun(逻辑单元号)而且lun的大小相同

3、 磁盘组中的硬盘最好选择性能一样的,如果一个硬盘rpm(转速)是10k/s 另一个是15K/S,那么磁盘组就会使用最低的那个速度为整个磁盘组的速度。

4、 选择硬件raidstripe 大小是2的次方比如2K,4K,8K,128K,但是这个值要小于或者等于oracle asm allocation unitoracle asm 分配单元)的大小。

5、 linux系统中,使用oracle asmlib特性去提供一致的硬件名称和永久的许可权限

6、

18节: 管理oracle-asm 实例

1、 Oracle-asm实例和数据库实例的版本关系: asm的版本要大于等于数据库的版本。对于集群软件oracle的集群软件版本必须高于等于oracle asm的版本。

2、 可以在oracle_asm和数据库实例中查询v$asm_client视图,通过这个视图可以了解oracle_asm版本和兼容的数据库版本。还有asm的实例名

19节: 配置oracleASM实例的初始化参数

1、 关于asm instance的初始化参数文件

1、 asm instance在建立的时候会单独建立一个spfile文件和一个password file。并且存储在asm磁盘组中

2、 当安装的asm 是在一个asm 集群的环境中,那么ouioracle安装卸载程序)这个工具会建立一个独立的,共享的spfile文件存储在asm磁盘组中。

3、 Asm instance可以使用spfilepfile ,如果在asm的集群环境中使用spfile文件的话就必须要把spfile文件放在共享的raw设备或者集群文件系统上。Oracle推荐把asmspfile放在磁盘组中。

4、 oracle asm实例去搜索spfile的时候顺序是

1、 grid plug and play (gpnp) profile,指定的位置

2、 如果本地没有设置grid plug and play (gpnp) profile,这时搜索的顺序改变为

A、 oracle asm instance home主目录,例如在linux系统下当没有使用grid plug and play (gpnp) profile时候spfile的默认路径是oracle_home/dbs/spfile+asm.ora

B、 你可以使用sqlplusemasmcaasmcmd来管理oracle asm instance的参数文件spfile

2备份,拷贝,移动asm实例的参数文件

1可以通过asmcmd spbackupspcopyspmove命令进行备份,拷贝,移动。

2、设置asm实例初始化参数文件可以通过asmca,如果数据库建立之后也可以通过em,或者alter system,或者alter session命令

3instance_type参数是必须的对于asm实例的参数文件,

3asm的自动内存管理

1Oracle强烈建议对于asm实例使用自动内存管理

4Oracle asm 参数设置建议

1ASM_DISKGROUPS

2ASM_DISKSTRING

3ASM_POWER_LIMIT

4ASM_PREFERRED_READ_FAILURE_GROUPS

5DB_CACHE_SIZE

6DIAGNOSTIC_DEST

7INSTANCE_TYPE

8LARGE_POOL_SIZE

9PROCESSES

10REMOTE_LOGIN_PASSWORDFILE

11SHARED_POOL_SIZE

下面详细的解释下每个参数的意思:

1、 ASM_DISKGROUPSasm实例启动时候加载的磁盘组列表,这个参数的值是null或者磁盘组的名字,当你在asm实例启动时候指定nomount或者ALTER DISKGROUP ALL MOUNT那么这个参数将会被忽略掉。

例:修改asm_diskgroups参数命令

alter system set asm_diskgroups = datafqa 注意:datafqa是磁盘组名

2、ASM_DISKSTRINGASM_DISKSTRING: 定义哪些磁盘可以被ASM 使用, ASM 实例启动时就根据这个参数值扫描发现ASM磁盘,配置了这个参数以后,还必须确认ORACLE 用户对这些磁盘有操作的权限

1. 如果使用裸设备, 用逗号分隔每个设备名:

Asm_diskstring='/dev/raw/raw1','/dev/raw/raw2','/dev/raw/raw3'

2. 如果使用ASMLib时,就需要使用"ORCL:磁盘名"

Asm_diskstring='ORCL:VOL1'

3. 使用ASMLib 时, 也可以使用通配符

Asm_diskstring='ORCL:VOL*'

4linux下是不能使用asmlib的,举例在linux下设置asm_diskstring参数的例子

alter system set ASM_DISKSTRING = /dev/rdsk/mydisks/*

如果想只发现mydisks下的disk3disk4命令如下

alter system set ASM_DISKSTRING = /dev/rdsk/mydisks/*disk3/dev/rdsk/mydisks/*disk4

3ASM_POWER_LIMIT设置磁盘再平衡的级别,这个级别范围是0-1024,默认值是1

值越大再平衡的速度就快,但是消耗的磁盘IO和再平衡的进程就更多。

注意:

如果ASM compatibility set to 11.2.0.2或者更高,那么ASM_POWER_LIMIT参数设置范围是0-1024

如果ASM compatibility 设置低于11.2.0.2那么ASM_POWER_LIMIT参数设置范围是小于或者等于11

4ASM_PREFERRED_READ_FAILURE_GROUPS

    最近有一些客户有这样一个需求,一个ASM磁盘组中分别挂载不同性能的存储或磁盘。希望ASM在读取的时候,优先读取性能好的磁盘,性能差的磁盘更多的是扮演'standby'的角色。
    oracle提供一个参数ASM_PREFERRED_READ_FAILURE_GROUPS,来实现ASM优先读取的功能,但是以 FAILURE_GROUP为单位实现的。我们可以将不同性能的存储(磁盘),分别划分到不同的FAILURE_GROUP,然后根据这个参数来指定优先 读取哪个FAILURE_GROUP

关于参数说明
ASM_PREFERRED_READ_FAILURE_GROUPS specifies the failure groups that contain preferred read disks. Preferred disks are instance specific. This parameter is only valid in ASM instances.
下面就是在测试环境测试的过程:
1. 修改参数(无需重启instance,立即生效)

SQL> alter system set ASM_PREFERRED_READ_FAILURE_GROUPS='DATA.QR01CEL03';

System altered.

2. 检查修改结果

SQL> show parameter prefer

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

asm_preferred_read_failure_groups string DATA.QR01CEL03

下面是测试部分:
1. 查询修改后每个FAILGROUP的读取次数

SQL> select instname, failgroup, sum(reads), sum(writes) from v$asm_disk_iostat group by instname,failgroup order by 1,2;

INSTNAME FAILGROUP SUM(READS) SUM(WRITES)

---------------------------------------------------------------- -----------

dbm2 QR01CEL01 12608 5470

dbm2 QR01CEL02 3544 4529

dbm2 QR01CEL03 1997 4107

2. 另一个窗口2,执行read操作

select * from dba_objects;

3. 窗口1,可以看到,读取都是QR01CEL03上的reads是一直增加的,而其他的FAILGROUP是没有reads的

SQL> /

INSTNAME FAILGROUP SUM(READS) SUM(WRITES)

---------------------------------------------------------------- -----------

dbm2 QR01CEL01 12608 5492

dbm2 QR01CEL02 3545 4550

dbm2 QR01CEL03 2081 4128

SQL> /

INSTNAME FAILGROUP SUM(READS) SUM(WRITES)

---------------------------------------------------------------- -----------

dbm2 QR01CEL01 12608 5508

dbm2 QR01CEL02 3545 4560

dbm2 QR01CEL03 2102 4138

SQL> /

INSTNAME FAILGROUP SUM(READS) SUM(WRITES)

---------------------------------------------------------------- -----------

dbm2 QR01CEL01 12608 5561

dbm2 QR01CEL02 3546 4606

dbm2 QR01CEL03 2250 4185

SQL> /

INSTNAME FAILGROUP SUM(READS) SUM(WRITES)

---------------------------------------------------------------- -----------

dbm2 QR01CEL01 12608 5645

dbm2 QR01CEL02 3546 4669

dbm2 QR01CEL03 2414 4246

最后可以看到本次查询共读取2414-1997=417次。并且全部在FAILGROUP-QR01CEL03上。
4. 下面我们测试写入部分:

窗口1

SQL> /

INSTNAME FAILGROUP SUM(READS) SUM(WRITES)

---------------------------------------------------------------- -----------

dbm2 QR01CEL01 12619 5991

dbm2 QR01CEL02 3558 4957

dbm2 QR01CEL03 3389 4539

窗口2

SQL> create table test as select * from dba_objects;

窗口1

SQL> /

INSTNAME FAILGROUP SUM(READS) SUM(WRITES)

---------------------------------------------------------------- -----------

dbm2 QR01CEL01 12621 6178

dbm2 QR01CEL02 3559 5097

dbm2 QR01CEL03 3720 4675

实际测试显示,对写操作是没有影响。
   写操作的测试--很白痴的行为,想想也是,data磁盘组是normal模式,一定会根据算法,将数据块分配到不同的FAILGROUP。也就不可能有优先写的概念。
    总结,很简单的一个参数设置,可以实现和实用的一个功能。

5DB_CACHE_SIZE:当使用自动内存管理时候可以不用设置这个参数

6DIAGNOSTIC_DESTasm实例的诊断目录,就是存放alter日志或者其他日志的地方,默认是$oracle_BASE:

例:$ORACLE_BASE/diag/asm/+asm/+ASM

7INSTANCE_TYPE:例子INSTANCE_TYPE = ASM

8LARGE_POOL_SIZE:自动内存方式时候不需要设置

9PROCESSESasm实例使用的进程,默认值是合适的,如果有多个数据库连接这个asm的话可以根据下面公式计算

PROCESSES = 50 + 50*n

9、 REMOTE_LOGIN_PASSWORDFILE

20节: 管理oracleASM实例

1、 可以使用服务器管理工具(SRVCTL)在集群的Oracle ASM环境中执行以下Oracle ASM管理任务

添加和删除Oracle集群注册表中的Oracle ASMCRS资源(OCR

启用,禁用,启动和关闭Oracle ASM实例

显示Oracle ASM实例的配置和状态

2、 使用Oracle restart功能:这个功能只能使用单实例,当安装Oracle Grid Infrastructure(网格计算基础架构)会安装asmOracle restartOracle restart可以自动启动,停止Oracleasm或者其他的任何进程,但是这个restart不能用于集群,只能用于单实例。

3、 启动asm实例:默认asm实例的sid+asm,在rac环境中的asmsid格式是+asmnode_number,node_number是节点号的时候,oracle_home环境变量必须设置成Grid Infrastructure home(网格基础架构的家目录)

4、 例子:启动asm实例

SQLPLUS /NOLOG

SQL> CONNECT SYS AS SYSASM

Enter password: sys_password

Connected to an idle instance

SQL> STARTUP

ASM instance started

Total System Global Area 71303168 bytes

Fixed Size 1069292 bytes

Variable Size 45068052 bytes

ASM Cache 25165824 bytes

ASM disk groups mounted

修改asmspfile文件的路径

进入asmcmd

asmcmd>spset +data/asm/asmparameterfile/asmspfile.ora

asm实例启动时候使用受限模式,startup restrict命令启动时候,所有的磁盘组是不可被其他的实例访问的。

5、 关闭asm实例:shutdown immediate

21:管理asm磁盘组

管理磁盘组主要包括下面内容

asm磁盘组管理内容

Disk Group Attributes

Creating Disk Groups

Altering Disk Groups

Oracle ASM Disk Discovery

Managing Capacity in Disk Groups

Oracle ASM Mirroring and Disk Group Redundancy

Performance and Scalability Considerations for Disk Groups

Disk Group Compatibility

Managing Oracle ASM File Access Control for Disk Groups

Mounting and Dismounting Disk Groups

Checking the Internal Consistency of Disk Group Metadata

Dropping Disk Groups

Renaming Disks Groups

下面分别描述每项具体含义和用法

1、 Disk Group Attributes:磁盘组属性

access_control.enabled:这个属性是磁盘组建立后通过alter命令修改的

access_control.umask:和上面一样

au_size:这个是在建立磁盘组的时候设立的,不能通过alter修改

cell.smart_scan_capable:这个属性只用于exadata(Oracle一体机)

content.type:这个属性是定义磁盘组类型,包括:data,recovery,or system

磁盘组的属性可以通过 sql,asmcmd,asmca的三种方式修改

disk_repair_time:通过alter修改

2、 Creating Disk Groups:建立磁盘组

例子:下面的例子前提是asm_diskstring初始化参数设置为‘devices/*’Oracleasm磁盘发现的路径是/devices目录,包括下面的磁盘

Controller 1:

/devices/diska1

/devices/diska2

/devices/diska3

/devices/diska4

Controller 2:

/devices/diskb1

/devices/diskb2

/devices/diskb3

/devices/diskb4

语法如下

CREATE DISKGROUP data

FAILGROUP controller1 DISK

'/devices/diska1' NAME diska1,

'/devices/diska2' NAME diska2,

'/devices/diska3' NAME diska3,

'/devices/diska4' NAME diska4

FAILGROUP controller2 DISK

'/devices/diskb1' NAME diskb1,

'/devices/diskb2' NAME diskb2,

'/devices/diskb3' NAME diskb3,

'/devices/diskb4' NAME diskb4

ATTRIBUTE 'au_size'='4M',(磁盘组分配单位的大小,Oracle建议的值

'compatible.asm' = '11.2',

'compatible.rdbms' = '11.2',

'compatible.advm' = '11.2'; advm是设置磁盘组卷的

兼容性可以不写

3、 Altering Disk Groups:修改磁盘组,可以通过alter diskgroup的语句去修改磁盘组的配置,可以add,resize,或者drop磁盘,通过v$asm_operation视图可以查询修改操作的状态

4、 添加磁盘到磁盘组

下面多种方式添加都可以

alter diskgroup data1 add disk ‘/devices/disk*4’;

ALTER DISKGROUP data1 ADD DISK'/devices/diska*';

ALTER DISKGROUP data1 ADD DISK

'/devices/diska5' NAME diska5,

'/devices/diska6' NAME diska6,

'/devices/diska7' NAME diska7,

'/devices/diska8' NAME diska8;

5、 从磁盘组中删除磁盘

第一种方式 ALTER DISKGROUP data1 DROP DISK diska5;

第二种方式ALTER DISKGROUP data1 DROP DISK diska5 ADD FAILGROUP failgrp1 DISK '/devices/diska9' NAME diska9;

6、 改变磁盘组中磁盘的大小

ALTER DISKGROUP data1 RESIZE DISKS IN FAILGROUP failgrp1 SIZE 100G;

7、 加载磁盘组和卸载磁盘组:

ALTER DISKGROUP ALL DISMOUNT;

ALTER DISKGROUP data1 MOUNT;

8、 当磁盘组有问题时候可以通过force强制加载磁盘组

ALTER DISKGROUP data1 MOUNT FORCE

9、 删除磁盘组

DROP DISKGROUP data1;

如果磁盘组不能加载,但是必须要删除可以通过下面命令

drop diskgroup data1 force

10、 重命名磁盘组

重命名磁盘组必须保证磁盘组不能是加载的状态

重命名磁盘组分两步操作:

第一步:生成一个配置文件给第二步使用

第二步:使用配置文件区重命名磁盘组

例子:

renamedg dgname=data newdgname=new_data asm_diskstring='/devices/disk*'

配置文件省略了同样可以写成下面方式

renamedg dgname=data newdgname=new_data asm_diskstring='/devices/disk*' config=/tmp/data2.conf

第五部分:查询asm磁盘组的视图信息

第6部分:管理asm文件,目录,模板

1、 asm文件的格式为

+data/orcl/controlfile/Current.256.541956473

可以讲asm文件名修改成别名,修改的方式包括add alias,alter diskgroup,alias别名必须包括磁盘组的名。建立的别名不能是根级别的,比如+data这个目录是不允许使用别名的。

例:ALTER DISKGROUP data ADD ALIAS '+data/orcl/second.dbf'

FOR '+data/orcl/datafile/mytable.342.123456789';

ALTER DISKGROUP data RENAME ALIAS '+data/orcl/datafile.dbf'

TO '+data/payroll/compensation.dbf';(重命名)

删除别名

ALTER DISKGROUP data DROP ALIAS '+data/payroll/compensation.dbf';

通过别名删除文件

ALTER DISKGROUP data DROP FILE '+data/payroll/compensation.dbf';

通过文件名删除文件

ALTER DISKGROUP data

DROP FILE '+data/orcl/datafile/mytable.342.123456789';

2、 在asm环境中建立表空间不需要制定文件名和路径,那么建立的文件路径是收到下面参数的影响

DB_CREATE_FILE_DEST

DB_CREATE_ONLINE_LOG_DEST_n

DB_RECOVERY_FILE_DEST

CONTROL_FILES

LOG_ARCHIVE_DEST_n

LOG_ARCHIVE_DEST

STANDBY_ARCHIVE_DEST

例子:CREATE TABLESPACE mytblspace DATAFILE '+data' SIZE 200M AUTOEXTEND ON;

CREATE TABLESPACE mytblspace;

3、 asm磁盘中建立目录:ALTER DISKGROUP data ADD DIRECTORY '+data/orcl';

4、 重命名磁盘目录:ALTER DISKGROUP data RENAME DIRECTORY '+data/mydir'

TO '+data/yourdir';

5、 删除磁盘目录:ALTER DISKGROUP data DROP DIRECTORY '+data/yourdir' FORCE;

6、 使用DBMS_FILE包可以将本地文件和asm磁盘组互相传输文件,这个包包括下面三个功能

一、 COPY_FILE从本地拷贝文件到asm磁盘组,或者从asm磁盘组拷贝文件到本地

二、 GET_FILE 连接到远程数据库然后将文件拷贝到本地或者asm磁盘组

三、 PUT_FILE 从本地或者asm磁盘组拷贝文件到远程数据库

22:通过rman迁入或者迁出asm数据

1、 数据迁移到asm磁盘的步骤如下

一、 备份整个数据库,和服务器参数文件,关闭闪回功能

二、 restore文件,recovery文件,迁移快速恢复区。

步骤如下:

RUN

{

ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev2 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev3 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev4 DEVICE TYPE DISK;

BACKUP AS COPY

INCREMENTAL LEVEL 0

DATABASE

FORMAT '+DATA'

TAG 'ORA_ASM_MIGRATION';

}

先把数据库备份到asm磁盘组 +data

如果数据库是归档方式,需要把当前日志归档

RMAN> SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";

备份服务器参数文件

RMAN> BACKUP AS BACKUPSET SPFILE;

禁用数据库闪回

RMAN> SQL "ALTER DATABASE FLASHBACK OFF";

关闭数据库

RMAN> SHUTDOWN IMMEDIATE;

下面是恢复的部分

RMAN> STARTUP MOUNT;

RMAN> RESTORE SPFILE TO '+DATA/spfilesid.ora';

RMAN> SHUTDOWN IMMEDIATE;

设置Oracle在asm中各种文件的位置

SQL> STARTUP FORCE NOMOUNT;

SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA' SID='*';

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=100G SID='*';

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FRA' SID='*';

设置控制文件位置

SQL> STARTUP FORCE NOMOUNT;

SQL> ALTER SYSTEM SET CONTROL_FILES='+DATA','+FRA' SCOPE=SPFILE SID='*';

恢复控制文件

RMAN> STARTUP FORCE NOMOUNT;

RMAN> RESTORE CONTROLFILE FROM 'original_cf_name';

RMAN> ALTER DATABASE MOUNT;

恢复数据文件

SWITCH DATABASE TO COPY;

RUN

{

ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev2 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev3 DEVICE TYPE DISK;

ALLOCATE CHANNEL dev4 DEVICE TYPE DISK;

RECOVER DATABASE;

}

如果数据库开启了闪回功能,现在需要重新打开闪回

SQL> ALTER DATABASE FLASHBACK ON;

打开数据库

alter database open;

删除临时表空间和建立临时表空间

SQL> ALTER DATABASE TEMPFILE 'tempfile_name' DROP;

SQL> ALTER TABLESPACE temp_tbs_name ADD TEMPFILE;

到此只有日志文件没有存放到Oracle asm磁盘中,如果要像迁移oracle的日志文件到asm磁盘,下面是详细步骤。

22、迁移Oracle 日志文件到asm磁盘组

下面是Oracle给出的迁移语句拷贝执行就可以了

SET SERVEROUTPUT ON;

DECLARE

CURSOR rlc IS

SELECT GROUP# GRP, THREAD# THR, BYTES, 'NO' SRL

FROM V$LOG

UNION

SELECT GROUP# GRP, THREAD# THR, BYTES, 'YES' SRL

FROM V$STANDBY_LOG

ORDER BY 1;

stmt VARCHAR2(2048);

BEGIN

FOR rlcRec IN rlc LOOP

IF (rlcRec.srl = 'YES') THEN

stmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' ||

rlcRec.thr || ' SIZE ' || rlcRec.bytes;

EXECUTE IMMEDIATE stmt;

stmt := 'ALTER DATABASE DROP STANDBY LOGFILE GROUP ' || rlcRec.grp;

EXECUTE IMMEDIATE stmt;

ELSE

stmt := 'ALTER DATABASE ADD LOGFILE THREAD ' ||

rlcRec.thr || ' SIZE ' || rlcRec.bytes;

EXECUTE IMMEDIATE stmt;

BEGIN

stmt := 'ALTER DATABASE DROP LOGFILE GROUP ' || rlcRec.grp;

DBMS_OUTPUT.PUT_LINE(stmt);

EXECUTE IMMEDIATE stmt;

EXCEPTION

WHEN OTHERS THEN

EXECUTE IMMEDIATE 'ALTER SYSTEM SWITCH LOGFILE';

EXECUTE IMMEDIATE 'ALTER SYSTEM CHECKPOINT GLOBAL';

EXECUTE IMMEDIATE stmt;

END;

END IF;

END LOOP;

END;

/

本文来源:https://www.2haoxitong.net/k/doc/3ad6fa514b35eefdc8d3337e.html

《asm联机文档自己翻译的.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式