1. 首页
  2. IT资讯

Windows下虚拟ASM磁盘搭建基于ASM的Oracle 10g数据库系统

http://tomszrp.itpub.net/post/11835/487501[@more@]

前言

很多人对Oracle 10g推出的ASM技术感到畏惧,总觉得是一个black box,自己驾御不了,其实呢,ASM并不是黑匣子,只是大家还没有完全掌握她、了解她。本小结不对ASM技术本身做过多的介绍,假设你对ASM技术有了一定的了解(至少看过一些别人的案例或相关的技术白皮书什么的吧?),本文介绍一个在Windows XP环境下构建一个基于ASM的Oracle 10g(10.2.0.4)单机的数据库,从而给大家提供一个ASM的学习环境,从而尽快的了解ASM,让她变的不再陌生!

 

在Windows平台下,Oracle提供了一个工具叫asmtool(位于%ORACLE_HOME%bin目录下),通过asmtool可以构建虚拟ASM磁盘,从而让我们有了一个可以在虚拟ASM磁盘上建立学习环境的机会。

不过大家要注意,这种方法不是官方支持的的,所以千万不要用于生产系统,仅限于学习研究

 

第一部分:创建ASM实例

第一步:创建ASM虚拟磁盘

在我这个个测试中,我总共创建4个diskgroup,下面创建的asm磁盘的单位是M

asmtool -create d:asmdiskasmdisk1 500asmtool -create d:asmdiskasmdisk2 500asmtool -create d:asmdiskasmdisk3 500 — SYS_DATA External Redundancyasmtool -create d:asmdiskasmdisk4 200 asmtool -create d:asmdiskasmdisk5 200 — FLASH_DATA External Redundancyasmtool -create d:asmdiskasmdisk6 100asmtool -create d:asmdiskasmdisk7 100 — USER_DATA Normal Redundancy

asmtool -create d:asmdiskasmdisk8 100asmtool -create d:asmdiskasmdisk9 100

asmtool -create d:asmdiskasmdisk10 100 — TEST_DATA High Redundancy

具体的执行过程就略了。执行完了的结果就是:

D:oracle10g>dir d:asmdisk驱动器 D 中的卷是 应用盘卷的序列号是 64B6-D634d:asmdisk 的目录2009-07-13 09:51

.2009-07-13 09:51 ..2009-07-13 09:42 524,288,000 asmdisk12009-07-13 09:51 104,857,600 asmdisk102009-07-13 09:44 524,288,000 asmdisk22009-07-13 09:46 524,288,000 asmdisk32009-07-13 09:46 209,715,200 asmdisk42009-07-13 09:47 209,715,200 asmdisk52009-07-13 09:47 104,857,600 asmdisk62009-07-13 09:47 104,857,600 asmdisk72009-07-13 09:48 104,857,600 asmdisk82009-07-13 09:48 104,857,600 asmdisk910 个文件 2,516,582,400 字节2 个目录 7,263,399,936 可用字节D:oracle10g>

第二步:配置CSS(Cluster Synchronization Services)

CSS主要用来同步ASM instance和它的client,也即database instance。可以由Oracle自带的localconfig命令来完成。Localconfig命令也位于ORACLE_HOMEbin目录下.

%ORACLE_HOME%binlocalconfig add

D:oracle10g>localconfig addStep 1: creating new OCR repositorySuccessfully accumulated necessary OCR keys.Creating OCR keys for user ‘zhangrp’, privgrp ”..Operation successful.Step 2: creating new CSS servicesuccessfully created local CSS servicesuccessfully added CSS to homeD:oracle10g>

配置完成后,在Windows Services中会出现类似如下一个entry

asm

–检查CSS守护进程的状态

D:oracle10g>crsctl check cssdCSS appears healthyD:oracle10g>

 

备注:如果后期要删除这个css服务,只需要在windows command下执行如下命令即可:

localconfig delete

 

第三步:准备ASM实例的参数文件

注意:ASM的实例名一定要以+开头的字符串,比如+ASM,否则后面通过dbca配置ASM实例或创建数据库的时候,DBCA无法识别到之前的asm实例。

参见Metalink Doc ID: 403644.1

 

先创建一个pfile文件,我的这个测试ASM实例的名字就叫+ASM,所以我需要在%ORACLE_HOME%database下创建一个INIT+asm.ORA的参数文件,内容如下:

*._asm_allow_only_raw_disks=FALSE*.asm_diskstring=’D:asmdiskasmdisk*’*.background_dump_dest=’D:adminasmbdump’*.core_dump_dest=’D:adminasmcdump’*.instance_type=’ASM’*.large_pool_size=12M

*.db_unique_name=’+ASM’

*.asm_power_limit=1*.remote_login_passwordfile=’SHARED’*.user_dump_dest=’D:adminasmudump’

注意:此处”_asm_allow_only_raw_disks”为隐含参数,设为FALSE是为了允许ASM使用非裸设备,在这里是必须要设置为FALSE的。

第四步:创建ASM实例

D:oracle10g>oradim -new -asmsid +asm -startmode manualInstance created.

备注:如果后期要删除这个asm实例,只需要在windows command下执行如下命令即可:

oradim -delete -asmsid +asm

第五步:连接到ASM实例

D:oracle10g>set ORACLE_SID=+ASMMicrosoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 Microsoft Corp.D:oracle10g>sqlplus “/as sysdba”SQL*Plus: Release 10.2.0.4.0 – Production on Mon Jul 13 10:15:33 2009Copyright (c) 1982, 2007, Oracle. All Rights Reserved.Connected to an idle instance.SQL> startupASM instance startedTotal System Global Area 83886080 bytesFixed Size 1295152 bytesVariable Size 57425104 bytesASM Cache 25165824 bytesORA-15110: no diskgroups mountedSQL>

注意:这里有一个ORA-15110的错误信息,因为是首次启动asm实例,还没有创建diskgroup,所以显示15110错误是正常的,忽略掉该错误,继续后面的步骤。

 

SQL> select host_name,instance_name,version,status from v$instance;HOST_NAME INSTANCE_NAME VERSION STATUS————— ————– ————- ———-zhangrp-cn +asm 10.2.0.4.0 STARTED

第六步:创建磁盘组

按照我之前的规划,我这里需要创建4个磁盘组.

–查看一下磁盘信息SQL> col path for a30SQL> select path,mount_status from v$asm_disk order by disk_number;PATH MOUNT_STATUS———————- ————–D:ASMDISKASMDISK1 CLOSEDD:ASMDISKASMDISK10 CLOSEDD:ASMDISKASMDISK2 CLOSEDD:ASMDISKASMDISK3 CLOSEDD:ASMDISKASMDISK4 CLOSEDD:ASMDISKASMDISK5 CLOSEDD:ASMDISKASMDISK6 CLOSEDD:ASMDISKASMDISK7 CLOSEDD:ASMDISKASMDISK8 CLOSEDD:ASMDISKASMDISK9 CLOSED10 rows selected.SQL>

可以看到,我之前创建的10块ASM虚拟磁盘mount 状态全是closed,因为他们还没有被加到任何的diskgroup中.下面开始创建我的diskgroup

–系统用的磁盘组SYS_DATA,由3块500M的磁盘组成,采用外部冗余

SQL> create diskgroup sys_data2 External Redundancy3 disk ‘d:asmdiskasmdisk1’,4 ‘d:asmdiskasmdisk2’,5 ‘d:asmdiskasmdisk3’;Diskgroup created.–闪回用的磁盘组FLASH_DATA,由2块200M的磁盘组成,采用外部冗余SQL> create diskgroup flash_data2 External Redundancy3 disk ‘d:asmdiskasmdisk4’,4 ‘d:asmdiskasmdisk5’;Diskgroup created.–用户STUDY用的磁盘组USER_DATA,由2块100M的磁盘组成,采用2-way冗余SQL> create diskgroup user_data

2 Normal Redundancy3 failgroup user_fg_01 disk ‘d:asmdiskasmdisk6’4 failgroup user_fg_02 disk ‘d:asmdiskasmdisk7’;Diskgroup created.–测试用的磁盘组TEST_DATA,由3块100M的磁盘组成,采用3-way冗余SQL> create diskgroup test_data

2 High Redundancy3 failgroup test_fg_01 disk ‘d:asmdiskasmdisk8’4 failgroup test_fg_02 disk ‘d:asmdiskasmdisk9’5 failgroup test_fg_03 disk ‘d:asmdiskasmdisk10’;Diskgroup created.SQL>

–再看一下磁盘的状态

SQL> select path,mount_status from v$asm_disk order by disk_number;PATH MOUNT_STATUS———————- ————–D:ASMDISKASMDISK1 CACHEDD:ASMDISKASMDISK10 CACHEDD:ASMDISKASMDISK2 CACHEDD:ASMDISKASMDISK3 CACHEDD:ASMDISKASMDISK4 CACHEDD:ASMDISKASMDISK5 CACHEDD:ASMDISKASMDISK6 CACHEDD:ASMDISKASMDISK7 CACHEDD:ASMDISKASMDISK8 CACHEDD:ASMDISKASMDISK9 CACHED

10 rows selected.SQL>

这时的磁盘状态,MOUNT_STATUS变成”CACHED”,表示磁盘已经成为磁盘组的一部分,并且正在被ASM Instance访问

SQL> select group_number,name,sector_size,block_size,allocation_unit_size,state,type,total_mb,free_mb from v$asm_diskgroup;GROUP_NUMBER NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE STATE TYPE TOTAL_MB FREE_MB———— ———– ———– ———- ——————– ——— —— ———- ——-1 FLASH_DATA 512 4096 1048576 MOUNTED EXTERN 400 3482 SYS_DATA 512 4096 1048576 MOUNTED EXTERN 1500 14463 TEST_DATA 512 4096 1048576 MOUNTED HIGH 300 1474 USER_DATA 512 4096 1048576 MOUNTED NORMAL 200 98SQL>

SQL> show parameter asm_diskNAME TYPE VALUE—————— ———– ——————————————asm_diskgroups string SYS_DATA, FLASH_DATA, USER_DATA, TEST_DATAasm_diskstring string D:asmdiskasmdisk*SQL>

第七步:关闭ASM实例,修改pfile并转为spfile,创建密码文件

在这一步中,先关闭ASM实例,然后修改pfile,增加如下参数:

asm_diskgroups=’SYS_DATA’, ‘FLASH_DATA’, ‘USER_DATA’, ‘TEST_DATA’

–关闭ASM实例

SQL> shutdown immediate;ASM diskgroups dismountedASM instance shutdown–编辑INITasm.ORA参数文件,增加asm_diskgroups设置保存退出。内容如下

SQL> host more d:oracle10gdatabaseINITasm.ORA*._asm_allow_only_raw_disks=FALSE*.asm_diskstring=’D:asmdiskasmdisk*’*.asm_diskgroups=’SYS_DATA’, ‘FLASH_DATA’, ‘USER_DATA’, ‘TEST_DATA’*.background_dump_dest=’D:adminasmbdump’*.core_dump_dest=’D:adminasmcdump’*.instance_type=’ASM’*.large_pool_size=12M*.db_unique_name=’ASM’*.asm_power_limit=1*.remote_login_passwordfile=’SHARED’*.user_dump_dest=’D:adminasmudump’ 

–创建密码文件

D:oracle10g>orapwd file=d:oracle10gdatabasePWDasm.ora password=admin entries=10D:oracle10g>

–重启ASM实例SQL> startupASM instance startedTotal System Global Area 83886080 bytesFixed Size 1295152 bytesVariable Size 57425104 bytesASM Cache 25165824 bytesASM diskgroups mountedSQL>

好了,刚才的ORA-15110: no diskgroups mounted”错误信息也没了。

–生成SPFILE

SQL> create spfile from pfile;File created.SQL>

–配置listener.ora和tnsnames.ora,这样就可以通过pl/sql developer这样的工具连接访问你的ASM实例了。参见我另外的文章:如何从远程连接ASM实例

(第一部分完)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/450962/viewspace-1028422/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/194632.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code