安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > DataBase > oracle > 探索ORACLE之ASM概念(完整版)

探索ORACLE之ASM概念(完整版)

时间:2014-06-16来源: 作者:点击:
一、 ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的LVM,它不仅支持单实例

一、     ASM(自动存储管理)的来由:

//本文来自安云网

ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的LVM,它不仅支持单实例,同时对RAC的支持也是非常好。ASM可以自动管理磁盘组并提供有效的数据冗余功能。使用ASM(自动存储管理)后,数据库管理员不再需要对ORACLE中成千上万的数据文件进行管理和分类,从而简化了DBA的工作量,可以使得工作效率大大提高。

//本文来自安云网

二、     什么是ASM //本文来自安云网

ASM它提供了以平台无关的文件系统、逻辑卷管理以及软RAID服务。ASM可以支持条带化和磁盘镜像,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡I/O以删除“热点”。它还支持直接和异步的I/O并使用Oracle9i中引入的Oracle数据管理器API(简化的I/O系统调用接口)。

//内容来自AnYun.ORG

ASM是做为单独的Oracle实例实施和部署,并且它只需要有参数文件,不需要其它的任何物理文件,就可以启动ASM实例,只有它在运行的时候,才能被其它数据访问。在Linux平台上,只有运行了OCSSD服务(Oracle安装程序默认安装)了才能和访问ASM。

//内容来自AnYun.ORG

三、     使用ASM的好处: //内容来自安云网

1、 将I/O平均分部到所有可用磁盘驱动器上以防止产生热点,并且最大化性能。 //内容来自AnYun.ORG

2、 配置更简单,并且最大化推动数据库合并的存储资源利用。

//内容来自安云网

3、 内在的支持大文件

//内容来自安云网

4、 在增量增加或删除存储容量后执行自动联系重分配

//本文来自安云网

5、 维护数据的冗余副本以提高可用性。 //本文来自安云网

6、 支持10g,11g的数据存储及RAC的共享存储管理 //内容来自安云网

7、 支持第三方的多路径软件 //内容来自安云网

8、 使用OMF方式来管理文件

//内容来自AnYun.ORG

四、     ASM冗余: //内容来自AnYun.ORG

ASM使用独特的镜像算法:不镜像磁盘,而是镜像盘区。作为结果,为了在产生故障时提供连续的保护,只需要磁盘组中的空间容量,而不需要预备一个热备(hot spare)磁盘。不建议用户创建不同尺寸的故障组,因为这将会导致在分配辅助盘区时产生问题。ASM将文件的主盘区分配给磁盘组中的一个磁盘时,它会将该盘区的镜像副本分配给磁盘组中的另一个磁盘。给定磁盘上的主盘区将在磁盘组中的某个伙伴磁盘上具有各自的镜像盘区。ASM确保主盘区和其镜像副本不会驻留在相同的故障组中。磁盘组的冗余可以有如下的形式:双向镜像文件(至少需要两个故障组)的普通冗余(默认冗余)和使用三向镜像(至少需要3个故障组)提供较高保护程度的高冗余。一旦创建磁盘组,就不可以改变它的冗余级别。为了改变磁盘组的冗余,必须创建具有适当冗余的另一个磁盘组,然后必须使用RMAN还原或DBMS_FILE_TRANSFER将数据文件移动到这个新创建的磁盘组。 //本文来自安云网

三种不同的冗余方式如下:

//内容来自安云网

1、 外部冗余(external redundancy):表示Oracle不帮你管理镜像,功能由外部存储系统实现,比如通过RAID技术;有效磁盘空间是所有磁盘设备空间的大小之和。

//内容来自AnYun.ORG

2、 默认冗余(normal redundancy):表示Oracle提供2份镜像来保护数据,有效磁盘空间是所有磁盘设备大小之和的1/2 (使用最多) //内容来自安云网

3、 高度冗余(high redundancy):表示Oracle提供3份镜像来保护数据,以提高性能和数据的安全,最少需要三块磁盘(三个failure group);有效磁盘空间是所有磁盘设备大小之和的1/3,虽然冗余级别高了,但是硬件的代价也最高。

//本文来自安云网

五、     ASM进程 //本文来自安云网

ASM实例除了传统的DBWR,LGWR,CKPT,SMON,PMON等进程还包含如下四个新后台进程:

//内容来自AnYun.ORG

RBAL:负责协调磁盘组的重新平衡活动(负责磁盘组均衡) //内容来自AnYun.ORG

ARB0-ARBn:在同一时刻可以存在许多此类进程,它们分别名为ARB0、ARB1,以此类推,执行实际的重新平衡分配单元移动进程。

//本文来自安云网

GMON:用于ASM磁盘组监控 //内容来自AnYun.ORG

O0nn 01-10:这组进程建立到ASM实例的连接,某些长时间操作比如创建数据文件,RDBMS会通过这些进程向ASM发送信息

//本文来自安云网

ASMB与ASM 实例的前台进程连接,周期性的检查两个instance的健康状况。每个数据库实例同时只能与一个ASM实例连接,因此数据库只会有一个ASMB后台进程。如一个节点上有多个数据库实例,它们只能共享一个ASM实例。 //内容来自安云网

RBAL用来进行全局调用,以打开某个磁盘组内的磁盘。ASMB进程与该节点的CSS守护进程进行通信,并接收来自ASM实例的文件区间映射信息。ASMB还负责为ASM实例提供I/O统计数据 //内容来自AnYun.ORG

CSS集群同步服务。要使用ASM,必须确保已经运行了CSS集群同步服务,CSS负责ASM实例和数据库实例之间的同步。 //本文来自安云网

注意:ASM实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。ASM 实例和数据库实例的关系可以是1:1,也可以是1:n。如果是1:n,最好为ASM 安装单独的ASM_HOME。

//内容来自安云网

六、   ASM支持datafile,logfiles,control files,archivelogs,RMAN backup sets等自动的数据库文件管理 //内容来自安云网

七、     ASM实例和数据库实例对应关系

//内容来自AnYun.ORG

探索ORACLE之ASM概念(完整版) //本文来自安云网

八、     Cluster ASM 架构 //内容来自安云网

 探索ORACLE之ASM概念(完整版) //内容来自AnYun.ORG

如需了解更详细信息请参见Oracle数据库管理员指南(Oracle首次放出)

//内容来自AnYun.ORG

http://docs.oracle.com/cd/B28359_01/server.111/b31107/toc.htm //内容来自AnYun.ORG

好了,现在开始谈谈有关于ASM安装的相关内容,ASM的安装必须建立在操作系统和数据库软件已经安装完成的及实例未创建之前来进行安装,之后再进行选择ASM方式建库。ASM不仅可以应用于单实例的数据库,同时更适用于RAC集群方式的数据库,并且ASM只被Oracle所认,同时也是ORACLE最佳的存储解决方案,可以有效的替代RAID技术和卷管理技术,比裸设备的管理更加方便;所以现在大部分企业都在迅速的向ASM技术迁移。 //内容来自AnYun.ORG

在上面我们已经探讨过了ASM的三种模式,及其的一些应用,在这里我们就不对其进行过多的累述。正式进入这篇的主题,如何安装ASM软件,安装ASM需要具备哪些条件。

//本文来自安云网

ASM安装步骤: //内容来自安云网

一、基础环境准备

//内容来自AnYun.ORG

1、  检查操作系统和数据库软件是否安装完成:

//内容来自安云网

Installation in progress (Mon Apr 09 19:12:44 CST 2012)

//本文来自安云网

...............................................................  18% Done. //内容来自AnYun.ORG

...............................................................  36% Done.

//内容来自安云网

...............................................................  54% Done.

//内容来自安云网

...............................................................  73% Done.

//内容来自安云网

............                                                     76% Done.

//本文来自安云网

Install successful //内容来自安云网

Linking in progress (Mon Apr 09 19:19:34 CST 2012) //内容来自安云网

Link successful

//内容来自安云网

Setup in progress (Mon Apr 09 19:23:13 CST 2012) //内容来自AnYun.ORG

..............                                                  100% Done. //本文来自安云网

Setup successful //内容来自AnYun.ORG

End of install phases.(Mon Apr 09 19:23:26 CST 2012) //本文来自安云网

WARNING:A new inventory has been created in this session. However, it has not yet been registered as the central inventory of this system.

//内容来自AnYun.ORG

To register the new inventory please run the script '/oracle/oraInventory/orainstRoot.sh' with root privileges.

//本文来自安云网

If you do not register the inventory, you may not be able to update or patch the products you installed.

//内容来自AnYun.ORG

The following configuration scripts //内容来自AnYun.ORG

/oracle/orahome/10.2.0/db_1/root.sh

//内容来自AnYun.ORG

need to be executed as root for configuring the system. If you skip the execution of the configuration tools, the configuration will not be complete and the product wont function properly. In order to get the product to function properly, you will be required to execute the scripts and the configuration tools after exiting the OUI.

//本文来自安云网

The installation of Oracle Database 10g was successful. //内容来自安云网

//内容来自安云网

从如上信息我们可以看到数据库已经安装完成,操作系统肯定也是没有问题的。

//内容来自AnYun.ORG

2、  检查数据库和操作系统版本:

//内容来自安云网

[oracle@ jb51.net db_1]$ lsb_release -a //内容来自安云网

LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch

//内容来自AnYun.ORG

Distributor ID: EnterpriseEnterpriseServer //内容来自AnYun.ORG

Description:    Enterprise Linux Enterprise Linux Server release 5.4 (Carthage) //内容来自AnYun.ORG

Release:        5.4 //内容来自安云网

Codename:       Carthage

//内容来自安云网

[oracle@ jb51.net db_1]$ //本文来自安云网

//内容来自安云网

[oracle@ jb51.net db_1]$ uname -a //本文来自安云网

Linux wwl 2.6.18-164.el5 #1 SMP Thu Sep 3 02:16:47 EDT 2009 i686 i686 i386 GNU/Linux //内容来自AnYun.ORG

//内容来自AnYun.ORG

操作系统版本为5.4 X86,内核版本为2.6.18-164.el5,后面下载ASM包必须要对应 //内容来自安云网

//内容来自AnYun.ORG

[oracle@ jb51.net db_1]$ sqlplus / as sysdba

//内容来自安云网

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 9 19:41:54 2012

//本文来自安云网

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

//内容来自安云网

Connected to an idle instance.

//本文来自安云网

SQL> //本文来自安云网

数据库版本是10.2.0.1.

//内容来自安云网

3、  我们已经知道了这些信息后,我们就可以有针对性的下载ASM了: //内容来自AnYun.ORG

ASM下载地址,版本不一样,用的ASM包也不一样: //内容来自安云网

http://www.oracle.com/technetwork/server-storage/linux/downloads/rhel5-084877.html

//内容来自AnYun.ORG

找到Intel IA32 (x86) Architecture系列中的这个包下载下来:

//内容来自AnYun.ORG

Drivers for kernel 2.6.18-164.el5

·         oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm

//本文来自安云网

·         以及如下两个包下载下来就可以了: //本文来自安云网

Library and Tools

·         oracleasm-support-2.1.7-1.el5.i386.rpm

//内容来自安云网

·         oracleasmlib-2.0.4-1.el5.i386.rpm

//内容来自AnYun.ORG

·           //内容来自AnYun.ORG

4、  下载完了之后开始安装asm的rpm包,用root用户安装,注意安装顺序,如下:

//内容来自AnYun.ORG

//内容来自安云网

[root@wwl asmpark]# ls

//内容来自AnYun.ORG

oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm //内容来自AnYun.ORG

oracleasmlib-2.0.4-1.el5.i386.rpm //内容来自安云网

oracleasm-support-2.1.7-1.el5.i386.rpm //内容来自AnYun.ORG

[root@wwl asmpark]# rpm -ivh oracleasm-support-2.1.7-1.el5.i386.rpm //内容来自AnYun.ORG

warning: oracleasm-support-2.1.7-1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 //内容来自AnYun.ORG

Preparing...                ########################################### [100%]

//内容来自AnYun.ORG

   1:oracleasm-support      ########################################### [100%]

//本文来自安云网

[root@wwl asmpark]# rpm -ivh oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm

//本文来自安云网

warning: oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159

//内容来自安云网

Preparing...                ########################################### [100%]

//内容来自AnYun.ORG

   1:oracleasm-2.6.18-164.el########################################### [100%] //内容来自AnYun.ORG

[root@wwl asmpark]# rpm -ivh oracleasmlib-2.0.4-1.el5.i386.rpm //本文来自安云网

warning: oracleasmlib-2.0.4-1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 //内容来自AnYun.ORG

Preparing...                ########################################### [100%]

//本文来自安云网

   1:oracleasmlib           ########################################### [100%] //本文来自安云网

[root@wwl asmpark]# //本文来自安云网

5、  好了,现在ASM相关包已经安装完成,现在来开始创建用于ASM的磁盘分区(不是一定要做,裸盘也可以做ASM)

//内容来自AnYun.ORG

//本文来自安云网

[root@wwl asmpark]# fdisk -l

//本文来自安云网

Disk /dev/sda: 16.1 GB, 16106127360 bytes

//本文来自安云网

255 heads, 63 sectors/track, 1958 cylinders //内容来自安云网

Units = cylinders of 16065 * 512 = 8225280 bytes

//本文来自安云网

   Device Boot      Start         End      Blocks   Id  System //内容来自安云网

/dev/sda1   *           1          13      104391   83  Linux //内容来自安云网

/dev/sda2              14        1958    15623212+  8e  Linux LVM //内容来自安云网

Disk /dev/sdb: 10.7 GB, 10737418240 bytes //内容来自安云网

255 heads, 63 sectors/track, 1305 cylinders

//内容来自AnYun.ORG

Units = cylinders of 16065 * 512 = 8225280 bytes

//本文来自安云网

Disk /dev/sdb doesn't contain a valid partition table //内容来自AnYun.ORG

Disk /dev/sdc: 10.7 GB, 10737418240 bytes //内容来自AnYun.ORG

255 heads, 63 sectors/track, 1305 cylinders

//内容来自AnYun.ORG

Units = cylinders of 16065 * 512 = 8225280 bytes //内容来自AnYun.ORG

Disk /dev/sdc doesn't contain a valid partition table

//本文来自安云网

[root@wwl asmpark]# //内容来自安云网

我们从上图可以看出系统中有两块空闲的磁盘没有使用,我们首先需要对磁盘创建分区,但不能格式化,命令如下: //内容来自AnYun.ORG

fdisk /dev/sdb /n/p/1/回车/回车/w //本文来自安云网

fdisk /dev/sdc /n/p/1/回车/回车/w //本文来自安云网

如下就已经创建好了分区: //内容来自安云网

//本文来自安云网

[root@wwl asmpark]# fdisk -l //本文来自安云网

Disk /dev/sda: 16.1 GB, 16106127360 bytes //内容来自安云网

255 heads, 63 sectors/track, 1958 cylinders

//内容来自安云网

Units = cylinders of 16065 * 512 = 8225280 bytes //内容来自安云网

   Device Boot      Start         End      Blocks   Id  System

//内容来自AnYun.ORG

/dev/sda1   *           1          13      104391   83  Linux

//内容来自安云网

/dev/sda2              14        1958    15623212+  8e  Linux LVM //内容来自AnYun.ORG

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

//本文来自安云网

255 heads, 63 sectors/track, 1305 cylinders //内容来自AnYun.ORG

Units = cylinders of 16065 * 512 = 8225280 bytes

//内容来自AnYun.ORG

   Device Boot      Start         End      Blocks   Id  System

//本文来自安云网

/dev/sdb1               1        1305    10482381   83  Linux //内容来自安云网

Disk /dev/sdc: 10.7 GB, 10737418240 bytes

//内容来自AnYun.ORG

255 heads, 63 sectors/track, 1305 cylinders

//本文来自安云网

Units = cylinders of 16065 * 512 = 8225280 bytes //本文来自安云网

   Device Boot      Start         End      Blocks   Id  System

//本文来自安云网

/dev/sdc1               1        1305    10482381   83  Linux //本文来自安云网

二、ASM配置 //内容来自AnYun.ORG

以上已将准备环境准备好,下一步骤就是开始配置了,这里面配置包括如下几个步骤 //内容来自AnYun.ORG

开始创建ASM实例,创建ASM实例的方式有两种,一种是通过命令行,还有一种是通过图形界面,执行DBCA后有一步是创建ASM实例,图形界面实在太简单了,跟创建DB是一样的,在这里就不累赘了。

//本文来自安云网

在使用ASM之前首先要配置ASMLib驱动程序,如下: //内容来自安云网

我们首先可以看下asm的配置工具 oracleasm的语法和功能,如下:

//本文来自安云网

 [root@wwl asmpark]# /etc/init.d/oracleasm --help

//本文来自安云网

Usage: /etc/init.d/oracleasm {start|stop|restart|enable|disable|configure|createdisk|deletedisk|querydisk|listdisks|scandisks|status} //内容来自安云网

[root@wwl asmpark]# //内容来自安云网

1、开始配置ASMLib:

//内容来自安云网

 [root@wwl asmpark]# /etc/init.d/oracleasm configure

//内容来自安云网

Configuring the Oracle ASM library driver. //本文来自安云网

This will configure the on-boot properties of the Oracle ASM library //内容来自安云网

driver.  The following questions will determine whether the driver is

//内容来自AnYun.ORG

loaded on boot and what permissions it will have.  The current values

//本文来自安云网

will be shown in brackets ('[]').  Hitting <ENTER> without typing an //内容来自AnYun.ORG

answer will keep that current value.  Ctrl-C will abort. //本文来自安云网

Default user to own the driver interface []: oracle //内容来自安云网

Default group to own the driver interface []: dba

//本文来自安云网

Start Oracle ASM library driver on boot (y/n) [n]: y

//内容来自安云网

Scan for Oracle ASM disks on boot (y/n) [y]: y

//本文来自安云网

Writing Oracle ASM library driver configuration: done //内容来自安云网

Initializing the Oracle ASMLib driver: [  OK  ]

//内容来自AnYun.ORG

Scanning the system for Oracle ASMLib disks: [  OK  ] //本文来自安云网

2、启用ASMLib驱动程序: //本文来自安云网

[root@wwl asmpark]# /etc/init.d/oracleasm enable

//内容来自安云网

Writing Oracle ASM library driver configuration: done

//本文来自安云网

Initializing the Oracle ASMLib driver: [  OK  ] //本文来自安云网

Scanning the system for Oracle ASMLib disks: [  OK  ]

//内容来自安云网

3、通过以root用户身份运行以下命令来标记由 ASMLib 使用的磁盘:

//内容来自AnYun.ORG

//内容来自安云网

[root@wwl asmpark]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1

//本文来自安云网

Marking disk "VOL1" as an ASM disk: [  OK  ]

//本文来自安云网

[root@wwl asmpark]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1

//本文来自安云网

Marking disk "VOL2" as an ASM disk: [  OK  ] //内容来自安云网

[root@wwl asmpark]# //内容来自AnYun.ORG

4、通过如下命令查看ASM所能使用的磁盘及状态,一切显示都是正常的。

//内容来自AnYun.ORG

[root@wwl asmpark]# oracleasm querydisk VOL1 //本文来自安云网

Disk "VOL1" is a valid ASM disk

//本文来自安云网

[root@wwl asmpark]# oracleasm querydisk /dev/sdb1

//本文来自安云网

Device "/dev/sdb1" is marked an ASM disk with the label "VOL1"

//本文来自安云网

[root@wwl asmpark]# oracleasm querydisk VOL2

//内容来自安云网

Disk "VOL2" is a valid ASM disk

//内容来自安云网

[root@wwl ~]# oracleasm querydisk /dev/sdc1 //内容来自安云网

Device "/dev/sdc1" is marked an ASM disk with the label "VOL2" //内容来自AnYun.ORG

[root@wwl asmpark]# oracleasm listdisks //内容来自AnYun.ORG

VOL1

//内容来自安云网

VOL2 //内容来自AnYun.ORG

[root@wwl asmpark]# ls -l /dev/oracleasm/disks/* //本文来自安云网

brw-rw---- 1 oracle dba 8, 17 Apr 10 00:25 /dev/oracleasm/disks/VOL1

//内容来自安云网

brw-rw---- 1 oracle dba 8, 33 Apr 10 00:25 /dev/oracleasm/disks/VOL2

//本文来自安云网

[root@wwl asmpark]# oracleasm status //本文来自安云网

Checking if ASM is loaded: yes //内容来自安云网

Checking if /dev/oracleasm is mounted: yes

//内容来自安云网

5、如上ASMLib已经安装完成,并且也将磁盘标记为可用,接下来要做的就是创建ASM实例,并构建一个使用ASM磁盘来存储数据的数据库,可以使用DBCA,当然也可以使用手工的方式来创,在这里,我就采用手工方式创建ASM实例,步骤如下:

//本文来自安云网

6、创建初始化参数文件,信息如下:

//内容来自安云网

[oracle@ jb51.net dbs]$ vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora

//内容来自AnYun.ORG

asm_diskstring='WWL:VOL*'

//本文来自安云网

background_dump_dest='/oracle/admin/+ASM/bdump' //本文来自安云网

core_dump_dest='/oracle/admin/+ASM/cdump' //内容来自安云网

user_dump_dest='/oracle/admin/+ASM/udump' //内容来自AnYun.ORG

instance_type='asm'

//内容来自安云网

large_pool_size=12M //内容来自安云网

remote_login_passwordfile='SHARED' //内容来自安云网

7、增加实例信息到/etc/oratab //内容来自AnYun.ORG

$ vi /etc/oratab

//内容来自安云网

+ASM:/u01/app/oracle/product/10.2.0/db_1:Y //内容来自安云网

8、创建ASM实例密码文件: //内容来自AnYun.ORG

[oracle@ jb51.net dbs]$ $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password='oracle' force=y;

//内容来自安云网

[oracle@ jb51.net dbs]$

//内容来自安云网

9、创建ASM实例相应的目录: //本文来自安云网

[oracle@ jb51.net dbs]$  mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/bdump

//内容来自安云网

[oracle@ jb51.net dbs]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump //内容来自安云网

[oracle@ jb51.net dbs]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/udump //本文来自安云网

[oracle@ jb51.net dbs]$

//内容来自安云网

10、开启CSS服务

//本文来自安云网

$ su - root //内容来自AnYun.ORG

[root@wwl ~]# /oracle/orahome/10.2.0/db_1/bin/localconfig add //内容来自安云网

/etc/oracle does not exist. Creating it now. //本文来自安云网

Successfully accumulated necessary OCR keys.

//本文来自安云网

Creating OCR keys for user 'root', privgrp 'root'.. //本文来自安云网

Operation successful.

//内容来自AnYun.ORG

Configuration for local CSS has been initialized //内容来自AnYun.ORG

Adding to inittab

//内容来自安云网

Startup will be queued to init within 90 seconds. //内容来自安云网

Checking the status of new Oracle init process... //内容来自AnYun.ORG

Expecting the CRS daemons to be up within 600 seconds.

//本文来自安云网

CSS is active on these nodes. //内容来自AnYun.ORG

        wwl

//内容来自AnYun.ORG

CSS is active on all nodes.

//内容来自安云网

Oracle CSS service is installed and running under init(1M) //内容来自AnYun.ORG

11、启动ASM实例,并创建ASM磁盘组:

//内容来自AnYun.ORG

[oracle@ jb51.net dbs]$ sqlplus / as sysdba //内容来自安云网

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Apr 10 01:23:44 2012 //内容来自安云网

Copyright (c) 1982, 2005, Oracle.  All rights reserved. //内容来自AnYun.ORG

Connected to: //内容来自AnYun.ORG

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production //本文来自安云网

With the Partitioning, OLAP and Data Mining options //本文来自安云网

SQL> startup nomount; //本文来自安云网

ASM instance started

//内容来自AnYun.ORG

Total System Global Area   83886080 bytes

//内容来自安云网

Fixed Size                  1217836 bytes

//内容来自安云网

Variable Size              57502420 bytes

//本文来自安云网

ASM Cache                  25165824 bytes

//内容来自安云网

SQL> select instance_name,status from v$instance; //内容来自安云网

INSTANCE_NAME    STATUS

//内容来自安云网

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

//本文来自安云网

+ASM             STARTED

//内容来自AnYun.ORG

SQL> //内容来自AnYun.ORG

现在实例我已经将其启动到nomount状态,下一步开始创建ASM磁盘组。 //内容来自AnYun.ORG

12、创建ASM组并将其启动到MOUNT状态,

//本文来自安云网

SQL> create diskgroup ASMGROUP1 normal redundancy disk '/dev/oracleasm/disks/VOL1','/dev/oracleasm/disks/VOL2';

//内容来自安云网

Diskgroup created. //内容来自安云网

好了,磁盘组已经创建好了,并且也已经挂载了 //内容来自AnYun.ORG

SQL> select name,state from v$asm_diskgroup;

//内容来自AnYun.ORG

NAME                           STATE //内容来自AnYun.ORG

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

//内容来自AnYun.ORG

ASMGROUP1                      MOUNTED

//内容来自AnYun.ORG

SQL> //内容来自安云网

可以看到如下,参数文件也随着更新了:

//内容来自AnYun.ORG

SQL> show parameter asm_diskgroups; //内容来自AnYun.ORG

NAME                                 TYPE        VALUE //内容来自安云网

------------------------------------ ----------- ------------------------------ //本文来自安云网

asm_diskgroups                       string      ASMGROUP1 //内容来自AnYun.ORG

13、检查ASM进程是否都正常启动了,我们之前提到的几个进程名称,这里面都有了,说明现在ASM已经是正常运行状态。 //内容来自AnYun.ORG

[oracle@ jb51.net ~]$ ps -ef | grep asm //内容来自AnYun.ORG

oracle    3887     1  0 02:58 ?        00:00:00 asm_pmon_+ASM //本文来自安云网

oracle    3889     1  0 02:58 ?        00:00:00 asm_psp0_+ASM //内容来自安云网

oracle    3891     1  0 02:58 ?        00:00:00 asm_mman_+ASM //内容来自AnYun.ORG

oracle    3893     1  0 02:58 ?        00:00:00 asm_dbw0_+ASM

//内容来自AnYun.ORG

oracle    3895     1  0 02:58 ?        00:00:00 asm_lgwr_+ASM

//本文来自安云网

oracle    3897     1  0 02:58 ?        00:00:00 asm_ckpt_+ASM

//内容来自AnYun.ORG

oracle    3899     1  0 02:58 ?        00:00:00 asm_smon_+ASM //本文来自安云网

oracle    3901     1  0 02:58 ?        00:00:00 asm_rbal_+ASM //内容来自安云网

oracle    3903     1  0 02:58 ?        00:00:00 asm_gmon_+ASM //内容来自AnYun.ORG

探索ORACLE之ASM概念(完整版)

一、通过ASM方式建立单实例库 //本文来自安云网

 探索ORACLE之ASM概念(完整版)

//本文来自安云网

探索ORACLE之ASM概念(完整版) //本文来自安云网

探索ORACLE之ASM概念(完整版) //内容来自安云网

二、检查通过ASM建库后,文件存储的状态: //内容来自安云网

SQL>select file_name,tablespace_name from dba_data_files;

//内容来自安云网

FILE_NAME                                         TABLESPACE_NAME

//内容来自安云网

----------------------------------------------------------------- //内容来自AnYun.ORG

+ASMGROUP1/wwl/datafile/users.259.780215953        USERS

//本文来自安云网

+ASMGROUP1/wwl/datafile/sysaux.257.780215951       SYSAUX

//本文来自安云网

+ASMGROUP1/wwl/datafile/undotbs1.258.780215953     UNDOTBS1 //内容来自AnYun.ORG

+ASMGROUP1/wwl/datafile/system.256.780215951       SYSTEM

//内容来自安云网

SQL>

//本文来自安云网

我们由如上可以看出,现在数据都是存储在ASM新建的+ASMGROUP1的组里面,并且文件名后面跟了一大串的数字,这是因为我们在新建表空间的时候直接采用就是Oracle OMF规范来进行创建的(OMF实际上是9i里面就已经推出来的功能了),在ASM中创建表空间和添加数据文件我们就没有必要指定数据文件的存放路径了,当然他跟db_create_file_dest这个参数是相关联的。

//内容来自安云网

如下通过OMF方式创建表空间和添加数据文件的方式,可以看到很方便,默认大小就是100M,会自动扩展: //本文来自安云网

1、我们通过查看db_create_file_dest参数,发现了数据文件默认创建路径是在+ASMGROUP1 //内容来自安云网

SQL> show parameter db_create_file_dest

//内容来自AnYun.ORG

NAME                                 TYPE        VALUE //本文来自安云网

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

//内容来自安云网

db_create_file_dest                  string      +ASMGROUP1

//内容来自AnYun.ORG

2、使用OMF特性来进行表空间的创建

//内容来自AnYun.ORG

SQL> create tablespace asm;

//内容来自AnYun.ORG

Tablespace created. //内容来自AnYun.ORG

SQL> alter tablespace asm add datafile; //内容来自安云网

Tablespace altered. //内容来自AnYun.ORG

3、检查表空间是否已创建好 //内容来自安云网

通过如下,我们可以看到,表空间已经创建成功,并且已经开启了数据文件自动扩展功能。

//内容来自AnYun.ORG

SQL> selectFILE_NAME,tablespace_name,bytes/1024/1024,AUTOEXTENSIBLE,MAXBYTES/1024/1024from dba_data_files where TABLESPACE_NAME='ASM'; //内容来自安云网

FILE_NAME                                          TABLESPACE_NAMEBYTES/1024/1024 AUT MAXBYTES/1024/1024 //内容来自安云网

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

//内容来自安云网

+ASMGROUP1/wwl/datafile/asm.270.780300769          ASM                         100 YES         32767.9844

//内容来自AnYun.ORG

+ASMGROUP1/wwl/datafile/asm.271.780300809          ASM                         100 YES         32767.9844

//内容来自AnYun.ORG

4、可以动态的修改数据库创建文件的位置

//本文来自安云网

SQL> alter system set db_create_file_dest='/oracle/oradata/wwl'; //内容来自安云网

System altered. //本文来自安云网

探索ORACLE之ASM概念(完整版)

一、  ASM实例相关操作:

//内容来自安云网

ASM实例的管理,启动,关闭

//本文来自安云网

ASM实例的启动和数据库实例的启动有严格的先后关系,ASM启动一定早于数据库实例,关闭一定晚于ASM实例,因为它是数据库数据文件存储位置。如果ASM没有起来,起数据库将会报ORA-17503;ORA-15077的错误,错误信息如下: //本文来自安云网

SQL>startup

//本文来自安云网

ORA-01078:failure in processing system parameters //本文来自安云网

ORA-01565:error in identifying file '+ASMGROUP1/WWL/spfileWWL.ora' //内容来自AnYun.ORG

ORA-17503:ksfdopn:2 Failed to open file +ASMGROUP1/WWL/spfileWWL.ora //内容来自AnYun.ORG

ORA-15077:could not locate ASM instance serving a required diskgroup //内容来自安云网

SQL> //内容来自AnYun.ORG

1.1  ASM启动的方法:

//内容来自安云网

SQL>startup

//本文来自安云网

ASMinstance started

//内容来自安云网

TotalSystem Global Area   83886080 bytes

//本文来自安云网

FixedSize                  1217836 bytes //内容来自安云网

VariableSize              57502420 bytes

//内容来自AnYun.ORG

ASMCache                  25165824 bytes //内容来自安云网

ASMdiskgroups mounted

//内容来自安云网

SQL>select instance_name,status from v$instance;

//本文来自安云网

INSTANCE_NAME    STATUS //内容来自安云网

---------------------------- //本文来自安云网

+ASM             STARTED //本文来自安云网

SQL>

//内容来自安云网

1.2  ASM关闭的方法  (必须先关闭数据库) //内容来自AnYun.ORG

没有关闭RDBMS实例关闭ASM将报错ORA-15097,提示已连接RDBMS实例,无法关闭ASM实例//内容来自AnYun.ORG

$ export Oracle_SID=+ASM //本文来自安云网

$ sqlplus / as sysdba

//本文来自安云网

SQL> shutdown immediate //内容来自安云网

ORA-15097: cannot SHUTDOWNASM instance with connected RDBMS instance

//内容来自AnYun.ORG

关闭RDBMS实例状态ASM是可以正常关闭的。

//内容来自AnYun.ORG

$export ORACLE_SID=WWL    ---先关闭在ASM上运行的RDBMS实例

//本文来自安云网

$sqlplus / as sysdba //内容来自AnYun.ORG

SQL> shutdown immediate //内容来自安云网

Database closed.

//内容来自安云网

Database dismounted.

//本文来自安云网

ORACLE instance shut down. //内容来自安云网

SQL>

//内容来自AnYun.ORG

$export ORACLE_SID=+ASM   ---再关闭ASM实例 //内容来自安云网

$ sqlplus / as sysdba //本文来自安云网

SQL> shutdown immediate

//本文来自安云网

ASM diskgroups dismounted //本文来自安云网

ASM instance shutdown //内容来自安云网

SQL> //内容来自AnYun.ORG

  //内容来自安云网

二、  ASM三种磁盘组及磁盘的添加和维护 //内容来自安云网

1、ASM磁盘的添加及删除 //本文来自安云网

1.1   添加这个步骤所需的磁盘(/dev/sdd -- /dev/sdm  共10块10G的盘) //内容来自安云网

1.2   通过root用户查看下当前有几个ASM磁盘,磁盘状态,实例状态 //内容来自AnYun.ORG

# oracleasm listdisks

//内容来自AnYun.ORG

VOL1 //内容来自安云网

VOL2

//内容来自AnYun.ORG

# oracleasm querydisk VOL1

//内容来自安云网

Disk"VOL1" is a valid ASM disk //内容来自AnYun.ORG

# oracleasm querydisk VOL2 //本文来自安云网

Disk"VOL2" is a valid ASM disk

//本文来自安云网

# ls -l /dev/oracleasm/disks/* //内容来自AnYun.ORG

brw-rw---- 1oracle dba 8, 17 Apr 12 05:30 /dev/oracleasm/disks/VOL1 //内容来自安云网

brw-rw---- 1oracle dba 8, 33 Apr 12 05:30 /dev/oracleasm/disks/VOL2 //内容来自安云网

# oracleasm status

//内容来自AnYun.ORG

Checking if ASMis loaded: yes

//内容来自安云网

Checking if /dev/oracleasm is mounted: yes //内容来自安云网

     我们已知数据库当有两块通过ASMLiB已经标记了的磁盘,并且状态是正常的

//内容来自安云网

1.3   开始通过ASMLib来标记新的磁盘,用于后面的实验:

//内容来自AnYun.ORG

l  报错了,很经典,是由于没有创建分区导致: //内容来自AnYun.ORG

# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd //内容来自安云网

Marking disk"VOL3" as an ASM disk: [FAILED]

//内容来自AnYun.ORG

l  先创建分区方法:fdisk /dev/sdd /n/p/1/回车/回车/w,将所有磁盘都创建分区。 //本文来自安云网

# /etc/init.d/oracleasmcreatedisk VOL3 /dev/sdd1

//内容来自安云网

Marking disk "VOL3" as anASM disk: [  OK  ]   ---可以看到,能正常创建

//本文来自安云网

           # sh oracleasm   通过执行脚本命令,新建10个磁盘已全部完成标记 //内容来自安云网

Marking disk "VOL4" as an ASM disk: [  OK  ] //内容来自AnYun.ORG

Marking disk "VOL5" as an ASM disk: [  OK  ]

//内容来自安云网

Marking disk "VOL6" as an ASM disk: [  OK  ]

//内容来自安云网

Marking disk "VOL7" as an ASM disk: [  OK  ]

//内容来自安云网

Marking disk "VOL8" as an ASM disk: [  OK  ]

//内容来自AnYun.ORG

Marking disk "VOL9" as an ASM disk: [  OK  ]

//内容来自安云网

Marking disk "VOL10" as an ASM disk: [  OK  ]

//内容来自AnYun.ORG

Marking disk "VOL11" as an ASM disk: [  OK  ]

//本文来自安云网

Marking disk "VOL12" as an ASM disk: [  OK  ]

//内容来自AnYun.ORG

1.4   为ASMGROUP1磁盘组添加删除磁盘

//内容来自AnYun.ORG

l  查看磁盘组的状态 //内容来自AnYun.ORG

SQL> selectGROUP_NUMBER,NAME,STATE,TYPE from v$asm_diskgroup;

//内容来自安云网

GROUP_NUMBER   NAME      STATE       TYPE //内容来自安云网

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

//本文来自安云网

1  ASMGROUP1  CONNECTED  NORMAL

//内容来自安云网

           SQL> SELECT a.name GRPNAME,b.group_number GR_NUMBER,b.disk_numberDK_NUMBER,b.name ASMFILE,b.path,b.mount_status,b.state FROM v$asm_diskgroupa,v$asm_disk b; //内容来自安云网

GRPNAME    GR_NUMBER  DK_NUMBER ASMFILE                        PATH                      MOUNT_S STATE //内容来自安云网

---------- ---------- ---------------------------------------- ------------------------- ------- -------- //本文来自安云网

ASMGROUP1  1    0ASMGROUP1_0000    /dev/oracleasm/disks/VOL1OPENED  NORMAL //本文来自安云网

ASMGROUP1 1   1ASMGROUP1_0001     /dev/oracleasm/disks/VOL2 OPENED  NORMAL

//本文来自安云网

l  查看磁盘组ASMGROUP1中的成员 //内容来自AnYun.ORG

SQL> selectgroup_number,disk_number, failgroup,name,path from v$asm_disk where FAILGROUPlike 'ASMGROUP1%'; //内容来自安云网

GROUP_NUMBERDISK_NUMBER FAILGROUP                     NAME                          PATH

//内容来自AnYun.ORG

----------------------- ------------------------------ ---------------------------------------------------------------------- //内容来自安云网

          2           1 ASMGROUP1_0001                 ASMGROUP1_0001                 /dev/oracleasm/disks/VOL2 //本文来自安云网

           2           0 ASMGROUP1_0000                 ASMGROUP1_0000                 /dev/oracleasm/disks/VOL1 //内容来自安云网

SQL>

//内容来自安云网

//内容来自AnYun.ORG

l  添加为ASMGROUP1添加磁盘

//本文来自安云网

SQL> alterdiskgroup ASMGROUP1 add disk '/dev/oracleasm/disks/VOL10'; //本文来自安云网

Diskgroupaltered.

//内容来自安云网

//内容来自安云网

l  我们可以看到已经添加成功了 //内容来自AnYun.ORG

SQL>  select group_number,disk_number,failgroup,name,path from v$asm_disk where FAILGROUP like 'ASMGROUP1%';

//内容来自安云网

GROUP_NUMBERDISK_NUMBER FAILGROUP                      NAME                           PATH

//内容来自安云网

----------------------- ------------------------------ ---------------------------------------------------------------------- //本文来自安云网

           2           2 ASMGROUP1_0002                 ASMGROUP1_0002                 /dev/oracleasm/disks/VOL10 //本文来自安云网

           2           1 ASMGROUP1_0001                 ASMGROUP1_0001                 /dev/oracleasm/disks/VOL2

//内容来自安云网

           2           0 ASMGROUP1_0000                 ASMGROUP1_0000                 /dev/oracleasm/disks/VOL1 //本文来自安云网

//内容来自安云网

2、ASM三种磁盘组的创建及删除(High  Normal Extermal

//本文来自安云网

2.1  创建High级别的ASM磁盘组,最少需要三块磁盘来创建。 //本文来自安云网

SQL> create diskgroup asmhigh high redundancy disk'/dev/oracleasm/disks/VOL3','/dev/oracleasm/disks/VOL4','/dev/oracleasm/disks/VOL5';

//内容来自AnYun.ORG

Diskgroupcreated.

//本文来自安云网

//本文来自安云网

2.2  创建Normal级别的ASM磁盘,最少需要两个磁盘来创建。

//内容来自安云网

SQL> creatediskgroup asmnormal normal redundancy disk'/dev/oracleasm/disks/VOL6','/dev/oracleasm/disks/VOL7';

//内容来自AnYun.ORG

Diskgroupcreated. //内容来自AnYun.ORG

//内容来自AnYun.ORG

2.3  创建Extermal级别的ASM磁盘,最少需要一个磁盘来创建。 //内容来自AnYun.ORG

SQL> creatediskgroup asmexternal external redundancy disk '/dev/oracleasm/disks/VOL8';

//本文来自安云网

Diskgroupcreated. //本文来自安云网

                                                                        //内容来自AnYun.ORG

//内容来自安云网

2.4  查看刚才创建的磁盘状态 //内容来自AnYun.ORG

SQL> select name,state,type fromv$asm_diskgroup;

//内容来自AnYun.ORG

NAME            STATE       TYPE

//内容来自AnYun.ORG

--------------- ----------- ------ //内容来自安云网

ASMGROUP1       MOUNTED    NORMAL //内容来自AnYun.ORG

ASMHIGH         MOUNTED     HIGH

//本文来自安云网

ASMNORMAL      MOUNTED    NORMAL

//本文来自安云网

ASMEXTERNAL     MOUNTED    EXTERN

//本文来自安云网

//内容来自AnYun.ORG

2.5         为ASM磁盘组添加成员,在这里我们就以Normal磁盘组来进行成员添加的例子: //本文来自安云网

SQL> alter diskgroup ASMNORMAL add disk'/dev/oracleasm/disks/VOL9'; //内容来自AnYun.ORG

Diskgroup altered.

//本文来自安云网

SQL> select group_number,disk_number,failgroup,name,path from v$asm_disk where FAILGROUP like 'ASMNORMAL%';

//内容来自AnYun.ORG

GROUP_NUMBER DISK_NUMBER FAILGROUP                      NAME                           PATH //本文来自安云网

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

//内容来自安云网

          4           2 ASMNORMAL_0002                 ASMNORMAL_0002                 /dev/oracleasm/disks/VOL9

//内容来自AnYun.ORG

          4           1 ASMNORMAL_0001                 ASMNORMAL_0001                 /dev/oracleasm/disks/VOL7 //内容来自AnYun.ORG

           4           0 ASMNORMAL_0000                 ASMNORMAL_0000                 /dev/oracleasm/disks/VOL6 //本文来自安云网

//内容来自安云网

SQL> //本文来自安云网

2.6         删除磁盘组成员,在这里我们同样以NORMAL磁盘组来进行成员删除的例子: //内容来自AnYun.ORG

SQL> alter diskgroup ASMNORMAL drop disk ASMNORMAL_0002;

//内容来自安云网

Diskgroup altered. //本文来自安云网

SQL> select group_number,disk_number, failgroup,name,path fromv$asm_disk where FAILGROUP like 'ASMNORMAL%'; //本文来自安云网

GROUP_NUMBER DISK_NUMBER FAILGROUP                      NAME                           PATH //内容来自安云网

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

//本文来自安云网

           4           1 ASMNORMAL_0001                 ASMNORMAL_0001                 /dev/oracleasm/disks/VOL7 //本文来自安云网

           4           0 ASMNORMAL_0000                 ASMNORMAL_0000                 /dev/oracleasm/disks/VOL6

//本文来自安云网

SQL>

//内容来自AnYun.ORG

//内容来自AnYun.ORG

三、  模拟磁盘故障 //内容来自AnYun.ORG

3.1      在AMSGROUP1(NORMAL类型)磁盘组中写数据

//内容来自AnYun.ORG

//内容来自安云网

SQL> selecttablespace_name,file_name,bytes/1024/1024 M from dba_data_files;

//本文来自安云网

TABLESPACE_NAMEFILE_NAME                                              M //本文来自安云网

------------------------------------------------------------ ---------- //内容来自安云网

USERS          +ASMGROUP1/wwl/datafile/users.259.780215953            5

//内容来自安云网

SYSAUX         +ASMGROUP1/wwl/datafile/sysaux.257.780215951         230 //内容来自安云网

UNDOTBS1        +ASMGROUP1/wwl/datafile/undotbs1.258.78021595         25 //内容来自安云网

                3

//本文来自安云网

SYSTEM         +ASMGROUP1/wwl/datafile/system.256.780215951         480

//内容来自AnYun.ORG

ASM            +ASMGROUP1/wwl/datafile/asm.270.780300769            100

//内容来自安云网

ASM             +ASMGROUP1/wwl/datafile/asm.271.780300809            100 //内容来自AnYun.ORG

6 rowsselected.

//内容来自AnYun.ORG

如上我们可以看到,我们所有的表空间均是放在ASMGROUP1中的,一会儿我们将对表空间写如数据,并删除一磁盘。 //本文来自安云网

3.2     我们查看下该表空间的默认用户

//本文来自安云网

SQL> selectusername,default_tablespace from dba_users where DEFAULT_TABLESPACE='ASM';

//内容来自安云网

USERNAME                       DEFAULT_TABLESPACE //本文来自安云网

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

//本文来自安云网

WWL                            ASM

//内容来自AnYun.ORG

//内容来自安云网

3.3     在ASM表空间写入数据。

//内容来自安云网

通过WWL用户登录到系统创建一张表,用来测试.

//本文来自安云网

SQL> connwwl/wwl //内容来自AnYun.ORG

Connected. //本文来自安云网

SQL> createtable wwl (id varchar(5),name varchar(10));

//内容来自安云网

Table created. //内容来自AnYun.ORG

SQL>  begin //本文来自安云网

  2  fori in 1..1000 loop //内容来自AnYun.ORG

  3 insert into wwl values (15,'wwl15'); //内容来自安云网

  4  endloop;

//内容来自安云网

  5  end; //内容来自安云网

  6  / //内容来自安云网

PL/SQLprocedure successfully completed.

//本文来自安云网

//内容来自安云网

我们创建了一张wwl的表,并且插入了1000行数据 //内容来自安云网

SQL> selectcount(*) from wwl;

//内容来自安云网

  COUNT(*) //本文来自安云网

----------

//内容来自AnYun.ORG

      1000

//本文来自安云网

3.4     模拟磁盘突然损坏

//内容来自安云网

[root@wwl ~]#oracleasm deletedisk VOL2; //本文来自安云网

Clearing diskheader: done //本文来自安云网

Dropping disk:done //本文来自安云网

[root@wwl ~]#

//内容来自安云网

仔细看下面,我们通过如上的命令删除了VOL2后,现在只认到一个磁盘了。 //内容来自安云网

SQL> selectgroup_number,disk_number, failgroup,name,path from v$asm_disk where FAILGROUPlike 'ASMGROUP%';

//本文来自安云网

GROUP_NUMBERDISK_NUMBER FAILGROUP                     NAME                          PATH //本文来自安云网

----------------------- ------------------------------ ---------------------------------------------------------------------- //本文来自安云网

           2           0 ASMGROUP1_0000                 ASMGROUP1_0000                 /dev/oracleasm/disks/VOL1

//内容来自安云网

SQL>

//内容来自安云网

//本文来自安云网

但是我们的实例和我们刚才创建的表数据都没有丢失,这就是冗余的好处,NORMAL模式它是用牺牲一块磁盘的空间来保障数据的安全性的,hight模式是至少牺牲一块硬盘来保障数据的安全性。 //内容来自AnYun.ORG

SQL> selectcount(*) from wwl; //内容来自安云网

  COUNT(*) //内容来自AnYun.ORG

----------

//内容来自安云网

      1000 //内容来自AnYun.ORG

3.5      而且业务是不会中断的,但是在日志和硬盘指示灯上会有告警:

//内容来自安云网

ASM日志信息如下:

//内容来自AnYun.ORG

WARNING:offlining disk 2.3916240783 (ASMGROUP1_0002) with mask 0x1

//内容来自安云网

NOTE: PSTupdate: grp = 2, dsk = 2, mode = 0x6

//本文来自安云网

NOTE: cacheclosing disk 2 of grp 2: ASMGROUP1_0002 //本文来自安云网

NOTE: PSTupdate: grp = 2 //内容来自安云网

NOTE: erasingheader on grp 2 disk ASMGROUP1_0002 //本文来自安云网

3.6     这个时候我们需要尽快更换新的硬盘,因为发生这问题之后如果另外一个磁盘再损坏的话那将是不可弥补的数据丢失,更换新硬盘后,数据将会再次进行同步。 //本文来自安云网

3.7      

//内容来自AnYun.ORG

四、  ASM别名管理

//内容来自安云网

别名就是外号,比如说当系统自动产生的名称太过复杂不怎么好记,DBA可以通过别名,为它创建一个简单化的名称,而又不会对其现有名称造成任何影响。ASM中创建别名是通过alter diskgroup的alias子句实现,支持增加/修改/删除等多项操作。V$ASM_ALIAS视图中可以查询到当前实例中创建的别名。

//内容来自安云网

4.1    添加别名 //本文来自安云网

SQL> alter diskgroup ASMGROUP1 add alias'+ASMGROUP1/wwl/datafile/asm01.dbf' for'+ASMGROUP1/wwl/datafile/asm.270.780300769';

//本文来自安云网

Diskgroup altered. //内容来自AnYun.ORG

4.2    修改别名

//内容来自安云网

SQL> alter diskgroup ASMGROUP1 renamealias '+ASMGROUP1/wwl/datafile/asm01.dbf' for'+ASMGROUP1/wwl/datafile/asm.270.780300769';

//本文来自安云网

Diskgroup altered.

//内容来自安云网

4.3    删除别名 //内容来自安云网

SQL> alter diskgroup ASMGROUP1 dropalias '+ASMGROUP1/wwl/datafile/asm01.dbf' for'+ASMGROUP1/wwl/datafile/asm.270.780300769'; //内容来自安云网

Diskgroup altered.

//本文来自安云网

   无论是添加、删除或是修改别名,对原文件路径均不会有影响。 //本文来自安云网

//内容来自安云网

五、  目录及目录文件管理

//内容来自安云网

5.1   创建目录 //内容来自AnYun.ORG

SQL> alter diskgroup ASMGROUP1 add directory '+ASMGROUP1/WWL1'; //内容来自安云网

Diskgroupaltered. //内容来自AnYun.ORG

5.2   修改目录

//内容来自安云网

SQL> alterdiskgroup ASMGROUP1 rename directory '+ASMGROUP1/WWL1' to '+ASMGROUP1/WWL2'; //本文来自安云网

Diskgroupaltered.

//内容来自AnYun.ORG

5.3   删除目录

//本文来自安云网

SQL> alter diskgroup ASMGROUP1 drop directory '+ASMGROUP1/WWL2'; //内容来自安云网

Diskgroupaltered.

//本文来自安云网

六、  手动平衡磁盘组

//内容来自AnYun.ORG

一般情况下ASM都会自动对其下的磁盘组进行平衡,不过ORACLE也提供了手动平衡磁盘组的方式,通过alter diskgroup ... power 语句。前面提到过磁盘组的平衡度有0到11多个级别,默认是按照ASM_POWER_LIMIT初始化参数中设置的值,手动平衡的话,设置的平衡度可以与初始化参数中并不相同,例如,设置磁盘组平衡度为5,语句如下: //内容来自AnYun.ORG

     SQL>alter diskgroup asmgroup1 rebalance power 5;

//内容来自安云网

Diskgroup altered.

//本文来自安云网

七、  通过ASMCMD工具管理ASM //本文来自安云网

[oracle@wwl ~]$ which asmcmd

//本文来自安云网

/oracle/orahome/10.2.0/db_1/bin/asmcmd

//本文来自安云网

[oracle@wwl ~]$ cd/oracle/orahome/10.2.0/db_1/bin/

//内容来自安云网

ASMCMD> ls 

//内容来自安云网

ASMEXTERNAL/ //本文来自安云网

ASMGROUP1/ //本文来自安云网

ASMHIGH/

//内容来自安云网

ASMNORMAL/ //内容来自AnYun.ORG

ASMCMD>

//本文来自安云网

ASMCMD> help //内容来自安云网

       asmcmd [-p] [command] //本文来自安云网

       The environment variables ORACLE_HOME and ORACLE_SID determine the

//内容来自AnYun.ORG

       instance to which the program connects, and ASMCMD establishes a //内容来自安云网

       bequeath connection to it, in the same manner as a SQLPLUS / AS //本文来自安云网

       SYSDBA.  The user must be a memberof the SYSDBA group.

//内容来自AnYun.ORG

       Specifying the -p option allows the current directory to be displayed //本文来自安云网

       in the command prompt, like so: //内容来自AnYun.ORG

       ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >

//本文来自安云网

       [command] specifies one of the following commands, along with its //内容来自AnYun.ORG

       parameters. //内容来自安云网

       Type "help [command]" to get help on a specific ASMCMDcommand.

//内容来自安云网

       commands:

//内容来自安云网

       --------

//本文来自安云网

cd:------------------------------------------进入下级目录或进入所需要的目录

//本文来自安云网

du:------------------------------------------显示指定的ASM目录下ASM文件占用的所有磁盘空间 //本文来自安云网

find:-----------------------------------------查找所需的文件 //内容来自安云网

help:-----------------------------------------显示帮助信息

//内容来自安云网

ls:---------------------------------------------列出ASM目录下的内容及其属性

//内容来自安云网

lsct:-------------------------------------------列出当前ASM客户端的信息 //内容来自AnYun.ORG

lsdg:-------------------------------------------列出所有磁盘组及其属性

//内容来自安云网

mkalias:--------------------------------------为系统生成的文件名创建别名

//内容来自安云网

mkdir:----------------------------------------创建新目录 //内容来自安云网

pwd:------------------------------------------显示当前目录路径 //本文来自安云网

rm:--------------------------------------------删除ASM目录下的某个文件或文件夹

//本文来自安云网

rmalias:--------------------------------------删除别名 //内容来自安云网

ASMCMD>

//内容来自AnYun.ORG

要查看某个命令的相信通过在命令前添加help来查看,如下: //本文来自安云网

ASMCMD> help cd //本文来自安云网

       cd <dir>

//内容来自安云网

       Change the current directory to <dir>.

//内容来自安云网

ASMCMD> help du //内容来自AnYun.ORG

       du [-H] [dir]

//内容来自AnYun.ORG

       Display total space used for files located recursively under [dir],

//内容来自安云网

       similar to "du -s" under UNIX; default is the currentdirectory.  Two

//内容来自AnYun.ORG

       values are returned, both in units of megabytes.  The first value does

//内容来自AnYun.ORG

       not take into account mirroring of the diskgroup while the second does.

//内容来自AnYun.ORG

       For instance, if a file occupies 100 MB of space, then it actually

//内容来自AnYun.ORG

       takes up 200 MB of space on a normal redundancy diskgroup and 300 MB //内容来自AnYun.ORG

       of space on a high redundancy diskgroup.  //本文来自安云网

       [dir] can also contain wildcards.

//内容来自安云网

       The -H flag suppresses the column headers from the output. //内容来自安云网

ASMCMD> help find //内容来自安云网

       find [-t <type>] <dir> <pattern>

//内容来自AnYun.ORG

       Find the absolute paths of all occurrences of <pattern> under<dir>. //内容来自安云网

       <pattern> can be a directory and may include wildcards.  <dir> may also //内容来自安云网

       include wildcards.  Note thatdirectory names in the results have the

//内容来自AnYun.ORG

       "/" suffix to clarify their identity. //内容来自安云网

       The -t option allows searching by file type.  For instance, one can

//内容来自AnYun.ORG

       search for all the control files at once.  <type> must be one of the //本文来自安云网

       valid values in V$ASM_FILE.TYPE. //内容来自AnYun.ORG

ASMCMD> //内容来自安云网

 

//内容来自AnYun.ORG

八、  oracleasm工具的使用和语法介绍

//本文来自安云网

[root@wwl ~]# oracleasm --help

//内容来自AnYun.ORG

Usage: oracleasm[--exec-path=<exec_path>] <command> [ <args> ] //本文来自安云网

      oracleasm --exec-path

//内容来自AnYun.ORG

      oracleasm -h

//内容来自安云网

      oracleasm -V

//内容来自AnYun.ORG

The basic oracleasm commands are: //本文来自安云网

   configure        Configure the OracleLinux ASMLib driver //内容来自安云网

   init             Load andinitialize the ASMLib driver

//本文来自安云网

   exit             Stop the ASMLibdriver

//内容来自AnYun.ORG

   scandisks        Scan the systemfor Oracle ASMLib disks //内容来自安云网

   status           Display thestatus of the Oracle ASMLib driver //内容来自AnYun.ORG

   listdisks        List known OracleASMLib disks //内容来自安云网

   querydisk        Determine if adisk belongs to Oracle ASMlib

//本文来自安云网

   createdisk       Allocate a devicefor Oracle ASMLib use

//本文来自安云网

   deletedisk       Return a deviceto the operating system //本文来自安云网

   renamedisk       Change the labelof an Oracle ASMlib disk //内容来自安云网

   update-driver    Download thelatest ASMLib driver //内容来自安云网

[root@wwl ~]# //内容来自AnYun.ORG

九、  ASM相关视图(V$)和数据字典(X$)

//内容来自AnYun.ORG

ASM由于其高度的封装性,使得我们很难知道窥探其内部的原理。可以通过一下视图和数据字典来来查看ASM 的信息。 //内容来自安云网

相关视图和数据字典 //内容来自安云网

View Name

//内容来自安云网

X$ Table name

//内容来自AnYun.ORG

Description //内容来自安云网

V$ASM_DISKGROUP //内容来自AnYun.ORG

X$KFGRP

//内容来自安云网

performs  disk discovery and lists diskgroups

//内容来自安云网

V$ASM_DISKGROUP_STAT //本文来自安云网

X$KFGRP_STAT //本文来自安云网

diskgroup  stats without disk discovery

//内容来自AnYun.ORG

V$ASM_DISK //内容来自安云网

X$KFDSK,  X$KFKID //本文来自安云网

performs  disk discovery, lists disks and their usage metrics

//内容来自安云网

V$ASM_DISK_STAT

//内容来自安云网

X$KFDSK_STAT,  X$KFKID

//内容来自AnYun.ORG

lists  disks and their usage metrics

//本文来自安云网

V$ASM_FILE

//本文来自安云网

X$KFFIL //本文来自安云网

lists  ASM files, including metadata/asmdisk files //内容来自AnYun.ORG

V$ASM_ALIAS

//内容来自安云网

X$KFALS

//本文来自安云网

lists  ASM aliases, files and directories //本文来自安云网

V$ASM_TEMPLATE //本文来自安云网

X$KFTMTA

//本文来自安云网

lists  the available templates and their properties //本文来自安云网

V$ASM_CLIENT //本文来自安云网

X$KFNCL //内容来自安云网

lists  DB instances connected to ASM //内容来自AnYun.ORG

V$ASM_OPERATION //本文来自安云网

X$KFGMG

//本文来自安云网

lists  rebalancing operations //内容来自安云网

N.A.

//内容来自安云网

X$KFKLIB //内容来自安云网

available  libraries, includes asmlib path //本文来自安云网

N.A.

//内容来自安云网

X$KFDPARTNER

//本文来自安云网

lists  disk-to-partner relationships

//内容来自AnYun.ORG

N.A.

//内容来自安云网

X$KFFXP

//本文来自安云网

extent  map table for all ASM files //内容来自安云网

N.A.

//内容来自AnYun.ORG

X$KFDAT

//本文来自安云网

extent  list for all ASM disks

//本文来自安云网

N.A. //本文来自安云网

X$KFBH //本文来自安云网

describes  the ASM cache (buffer cache of ASM in blocks of 4K (_asm_blksize) //内容来自AnYun.ORG

N.A. //本文来自安云网

X$KFCCE

//内容来自AnYun.ORG

a  linked list of ASM blocks. to be further investigated

//内容来自AnYun.ORG

This list isobtained querying v$fixed_view_definitionwhere view_name like '%ASM%' whichexposes all the v$ and gv$ views with theirdefinition. Fixed tables are exposedby querying v$fixed_table where name like'x$kf%' (ASM fixed tables use the'X$KF' prefix).

//内容来自AnYun.ORG

SQL>select* fromv$fixed_view_definition whereview_name like '%ASM%'; //本文来自安云网

SQL>select* from sys.v$fixed_tablewhere name like 'X$KF%' ;

//内容来自安云网

十、  ASM常见的错误处理 //本文来自安云网

错误一、

//本文来自安云网

ORA-15097:cannotSHUTDOWN ASM instance with connected RDBMS instance //内容来自安云网

解决办法: //本文来自安云网

发生这个问题,唯一的一个原因就是Oracle实例没有关闭,或ORACLE实例正在关闭或处于挂起状态,导致ASM实例无法关闭,解决办法,关闭RDBMS实例后再关闭ASM实例。 //内容来自安云网

错误二、 //内容来自AnYun.ORG

[root@wwl ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd

//内容来自AnYun.ORG

Marking disk "VOL3" as an ASM disk: [FAILED]

//内容来自安云网

   报这个错的原因在于磁盘为分区导致。在创建ASM的之前必须线将磁盘分区,但不能格式化,后执行创建就不会有问题了。

//内容来自AnYun.ORG

十一、       ASM 扩展性

//本文来自安云网

最多支持63个磁盘组;     最多支持10000个磁盘;     最大支持4pb/磁盘;     最大支持40     exabyte/ASM存储; 最大支持1百W个文件/磁盘组; 外部冗余时单个文件最大35tb,标准冗余时单个文件最大5.8tb,高冗余度时单个文件最大3.9tb

十二、       ASM其它信息请参考如下连接: //内容来自AnYun.ORG

http://docs.oracle.com/cd/E11882_01/server.112/e16102/asmfiles.htm //本文来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容