在Windows上怎么运行Oracle,在windows上的两种建立ASM实例的方式

我们可以在windows上建立ASM实例。oracle给我们提供了一个很贴心的工具,来实现在windows上安装asm,这个工具就是asmtool。该工具可以在安装介质的asmtool目录中找到,也可以在安装数据库软件后,在$ORACLE_HOME/bin下找到。下面,我们就用asmtool来在windows xp上安装asm实例。

安装的方式有两种,一种是利用windows自身的没有格式化过的磁盘(其实是磁盘分区),来作为asm disk;另一种是用asmtool在windows的已经格式化好的分区上(如D盘)建立asm disk。注意第二种的方式需要利用隐含参数来启动asm实例,因此不被oracle推荐,也不适合用在生产系统上。另外,第二种方式建立的asm实例,不能被dbca所识别,在图形化界面安装数据库时,无法识别出来asm实例的diskgroup,但是手工建库却没问题。下面,我们就来分别介绍两种方式的建立ASM实例。

方法一,用windows中尚未格式化的硬盘分区:

1. 如果你的硬盘已经完全占有,没有未格式化的分区,可以用Norton PartitionMagic来resize一下你的空闲较多的分区,新建一个unallocated的分区。然后,关闭PartitionMagic,我们在控制面板-管理工具-计算机管理-磁盘管理,那边进行分区的建立。在这里,我们虽然建立的分区,但是没有格式化。

2. 我这边的例子是我有一个14.65G的空余分区:

2f4a9da65b3035802ef18fa760570356.png

3. 先新建需要的分区:

反击右键新建分区:

de6d705e72fab16f7331c424d03a2cf0.png

选择新建逻辑分区:

948b74d3fceac7ee4fb598c17c508958.png

选择大小为4G:

060b20f31d741fa9ac34b90130e4455d.png

选择挂载目录为D盘的asmdisks下:

19d96ce5e5a603d30e4d08137cd532da.png

选择不要格式化分区:

6846f6d2b3fdd37d44b7ab8c116b24a9.png

汇总信息:

0601037cafaf863dae9db762f0819f63.png

类似的建立其他3G,3G,1G,1G,1G,1.64G的分区:

63c6d19e223551fe79731c1b277b342a.png

说明:4G用于做external redundancy,用于放一般的数据,3G+3G用于做normal redundancy,放比较重要数据,1G+1G+1G用于做high redundancy,用于放最重要的数据,最后的1.64G做external redundancy,存放flashback的文件。

最后,我们可以在D盘的asmdisks目录下可以看到:

5e8d5b6ca6308ad230a1068480559f7c.png

上面的几个分区都是未格式化的,对于数据库来说,类似裸设备,可以添加到asm中,因此我们的这种方式不需要用隐含参数_asm_allow_only_raw_disks。

下面,我们就开始建立asm实例:

4.我们先list看看有哪些分区是能被asm使用,我们用asmtool -list这个命令:

D:\oracle\product\10.2.0\db_1\database>asmtool -list

NTFS \Device\Harddisk0\Partition1 29996M

NTFS \Device\Harddisk0\Partition2 45005M

NTFS \Device\Harddisk0\Partition3 215238M

\Device\Harddisk0\Partition4 4097M

\Device\Harddisk0\Partition5 3071M

\Device\Harddisk0\Partition6 3071M

\Device\Harddisk0\Partition7 1026M

\Device\Harddisk0\Partition8 1026M

\Device\Harddisk0\Partition9 1026M

\Device\Harddisk0\Partition10 1683M

D:\oracle\product\10.2.0\db_1\database>

1

2

3

4

5

6

7

8

9

10

11

12

13

D:\oracle\product\10.2.0\db_1\database>asmtool-list

NTFS\Device\Harddisk0\Partition129996M

NTFS\Device\Harddisk0\Partition245005M

NTFS\Device\Harddisk0\Partition3215238M

\Device\Harddisk0\Partition44097M

\Device\Harddisk0\Partition53071M

\Device\Harddisk0\Partition63071M

\Device\Harddisk0\Partition71026M

\Device\Harddisk0\Partition81026M

\Device\Harddisk0\Partition91026M

\Device\Harddisk0\Partition101683M

D:\oracle\product\10.2.0\db_1\database>

我们看到partition4~partition10都是可以用的。我们用asmtool -add加入asm的标签:

D:\oracle\product\10.2.0\db_1\database>asmtool -add \Device\Harddisk0\Partition4 ORCLDISKDATA0

D:\oracle\product\10.2.0\db_1\database>asmtool -add \Device\Harddisk0\Partition5 ORCLDISKDATA1

D:\oracle\product\10.2.0\db_1\database>asmtool -add \Device\Harddisk0\Partition6 ORCLDISKDATA2

D:\oracle\product\10.2.0\db_1\database>asmtool -add \Device\Harddisk0\Partition7 ORCLDISKDATA3

D:\oracle\product\10.2.0\db_1\database>asmtool -add \Device\Harddisk0\Partition8 ORCLDISKDATA4

D:\oracle\product\10.2.0\db_1\database>asmtool -add \Device\Harddisk0\Partition9 ORCLDISKDATA5

D:\oracle\product\10.2.0\db_1\database>asmtool -add \Device\Harddisk0\Partition10 ORCLDISKDATA6

D:\oracle\product\10.2.0\db_1\database>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

D:\oracle\product\10.2.0\db_1\database>asmtool-add\Device\Harddisk0\Partition4ORCLDISKDATA0

D:\oracle\product\10.2.0\db_1\database>asmtool-add\Device\Harddisk0\Partition5ORCLDISKDATA1

D:\oracle\product\10.2.0\db_1\database>asmtool-add\Device\Harddisk0\Partition6ORCLDISKDATA2

D:\oracle\product\10.2.0\db_1\database>asmtool-add\Device\Harddisk0\Partition7ORCLDISKDATA3

D:\oracle\product\10.2.0\db_1\database>asmtool-add\Device\Harddisk0\Partition8ORCLDISKDATA4

D:\oracle\product\10.2.0\db_1\database>asmtool-add\Device\Harddisk0\Partition9ORCLDISKDATA5

D:\oracle\product\10.2.0\db_1\database>asmtool-add\Device\Harddisk0\Partition10ORCLDISKDATA6

D:\oracle\product\10.2.0\db_1\database>

在list看看:

D:\oracle\product\10.2.0\db_1\database>asmtool -list

NTFS \Device\Harddisk0\Partition1 29996M

NTFS \Device\Harddisk0\Partition2 45005M

NTFS \Device\Harddisk0\Partition3 215238M

ORCLDISKDATA0 \Device\Harddisk0\Partition4 4097M

ORCLDISKDATA1 \Device\Harddisk0\Partition5 3071M

ORCLDISKDATA2 \Device\Harddisk0\Partition6 3071M

ORCLDISKDATA3 \Device\Harddisk0\Partition7 1026M

ORCLDISKDATA4 \Device\Harddisk0\Partition8 1026M

ORCLDISKDATA5 \Device\Harddisk0\Partition9 1026M

ORCLDISKDATA6 \Device\Harddisk0\Partition10 1683M

D:\oracle\product\10.2.0\db_1\database>

1

2

3

4

5

6

7

8

9

10

11

12

13

D:\oracle\product\10.2.0\db_1\database>asmtool-list

NTFS\Device\Harddisk0\Partition129996M

NTFS\Device\Harddisk0\Partition245005M

NTFS\Device\Harddisk0\Partition3215238M

ORCLDISKDATA0\Device\Harddisk0\Partition44097M

ORCLDISKDATA1\Device\Harddisk0\Partition53071M

ORCLDISKDATA2\Device\Harddisk0\Partition63071M

ORCLDISKDATA3\Device\Harddisk0\Partition71026M

ORCLDISKDATA4\Device\Harddisk0\Partition81026M

ORCLDISKDATA5\Device\Harddisk0\Partition91026M

ORCLDISKDATA6\Device\Harddisk0\Partition101683M

D:\oracle\product\10.2.0\db_1\database>

另外,由于asm实例需要css服务,第一次使用的之前,我们需要建议css服务。在命令行运行:

localconfig add

1

localconfigadd

建立完成后我们可以检查一下是否运行正常,在命令行运行:

D:\oracle\product\10.2.0\db_1\database>crsctl check css

CSS appears healthy

D:\oracle\product\10.2.0\db_1\database>

1

2

3

4

D:\oracle\product\10.2.0\db_1\database>crsctlcheckcss

CSSappearshealthy

D:\oracle\product\10.2.0\db_1\database>

css appears healthy说明css运行正常。

5. 建立asm的instance:

我们可以用dbca来建立,也可以用命令行来建立,在这里,我们用命令行的建立作为例子:

5.1 在$ORACLE_HOME/database下新建asm的初始化文件INIT+ASM1.ora:

*.instance_type='ASM'

*.asm_diskstring='D:\asmdisks\*'

*.large_pool_size=12M

*.db_unique_name='+ASM1'

*.asm_power_limit=1

*.remote_login_passwordfile='SHARED'

*.background_dump_dest='D:\oracle\admin\asm\bdump'

*.core_dump_dest='D:\oracle\admin\asm\cdump'

*.user_dump_dest='D:\oracle\admin\asm\udump'

1

2

3

4

5

6

7

8

9

*.instance_type='ASM'

*.asm_diskstring='D:\asmdisks\*'

*.large_pool_size=12M

*.db_unique_name='+ASM1'

*.asm_power_limit=1

*.remote_login_passwordfile='SHARED'

*.background_dump_dest='D:\oracle\admin\asm\bdump'

*.core_dump_dest='D:\oracle\admin\asm\cdump'

*.user_dump_dest='D:\oracle\admin\asm\udump'

5.2 在$ORACLE_HOME/database下新建+ASM1的密码文件:

orapwd file=orapw+ASM2 password=oracle

1

orapwdfile=orapw+ASM2password=oracle

5.3 用oradim新建+ASM1的windows服务:

D:\oracle\product\10.2.0\db_1\database>oradim -new -asmsid +ASM1 -startmode auto

Instance created.

D:\oracle\product\10.2.0\db_1\database>

1

2

3

4

D:\oracle\product\10.2.0\db_1\database>oradim-new-asmsid+ASM1-startmodeauto

Instancecreated.

D:\oracle\product\10.2.0\db_1\database>

5.4 启动+ASM1的实例:

D:\oracle\product\10.2.0\db_1\database>sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Feb 12 00:17:24 2011

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

Connected to an idle instance.

SQL> startup

ASM instance started

Total System Global Area 83886080 bytes

Fixed Size 1247420 bytes

Variable Size 57472836 bytes

ASM Cache 25165824 bytes

ORA-15110: no diskgroups mounted

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

D:\oracle\product\10.2.0\db_1\database>sqlplus"/ as sysdba"

SQL*Plus:Release10.2.0.1.0-ProductiononSatFeb1200:17:242011

Copyright(c)1982,2005,Oracle.Allrightsreserved.

Connectedtoanidleinstance.

SQL>startup

ASMinstancestarted

TotalSystemGlobalArea83886080bytes

FixedSize1247420bytes

VariableSize57472836bytes

ASMCache25165824bytes

ORA-15110:nodiskgroupsmounted

SQL>

6. 我们开始新建asm diskgroup,给oracle数据库使用:

6.1 检查asm disk的状态是否为cache:

SQL> select path,mount_status from v$asm_disk;

PATH MOUNT_S

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

D:\ASMDISKS\ASMDISK1 CLOSED

D:\ASMDISKS\ASMDISK2 CLOSED

D:\ASMDISKS\ASMDISK3 CLOSED

D:\ASMDISKS\ASMDISK7 CLOSED

D:\ASMDISKS\ASMDISK5 CLOSED

D:\ASMDISKS\ASMDISK6 CLOSED

D:\ASMDISKS\ASMDISK4 CLOSED

7 rows selected.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

6.1检查asmdisk的状态是否为cache:

SQL>selectpath,mount_statusfromv$asm_disk;

PATHMOUNT_S

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

D:\ASMDISKS\ASMDISK1CLOSED

D:\ASMDISKS\ASMDISK2CLOSED

D:\ASMDISKS\ASMDISK3CLOSED

D:\ASMDISKS\ASMDISK7CLOSED

D:\ASMDISKS\ASMDISK5CLOSED

D:\ASMDISKS\ASMDISK6CLOSED

D:\ASMDISKS\ASMDISK4CLOSED

7rowsselected.

6.2 新建disk group:

SQL> create diskgroup dg_data_01

2 external redundancy

3 disk 'D:\ASMDISKS\ASMDISK1';

Diskgroup created.

SQL>

SQL> create diskgroup dg_data_02

2 normal redundancy

3 failgroup fg_dgdata02_01 disk 'D:\ASMDISKS\ASMDISK2'

4 failgroup fg_dgdata02_02 disk 'D:\ASMDISKS\ASMDISK3';

Diskgroup created.

SQL> create diskgroup dg_data_03

2 high redundancy

3 failgroup fg_dgdata03_01 disk 'D:\ASMDISKS\ASMDISK4'

4 failgroup fg_dgdata03_02 disk 'D:\ASMDISKS\ASMDISK5'

5 failgroup fg_dgdata03_03 disk 'D:\ASMDISKS\ASMDISK6';

Diskgroup created.

SQL>

SQL> create diskgroup dg_flashback

2 external redundancy

3 disk 'D:\ASMDISKS\ASMDISK7';

Diskgroup created.

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

SQL>creatediskgroupdg_data_01

2externalredundancy

3disk'D:\ASMDISKS\ASMDISK1';

Diskgroupcreated.

SQL>

SQL>creatediskgroupdg_data_02

2normalredundancy

3failgroupfg_dgdata02_01disk'D:\ASMDISKS\ASMDISK2'

4failgroupfg_dgdata02_02disk'D:\ASMDISKS\ASMDISK3';

Diskgroupcreated.

SQL>creatediskgroupdg_data_03

2highredundancy

3failgroupfg_dgdata03_01disk'D:\ASMDISKS\ASMDISK4'

4failgroupfg_dgdata03_02disk'D:\ASMDISKS\ASMDISK5'

5failgroupfg_dgdata03_03disk'D:\ASMDISKS\ASMDISK6';

Diskgroupcreated.

SQL>

SQL>creatediskgroupdg_flashback

2externalredundancy

3disk'D:\ASMDISKS\ASMDISK7';

Diskgroupcreated.

SQL>

6.3 检查asm disk的状态以及diskgroup的使用率:

SQL> select path,mount_status from v$asm_disk order by disk_number;

PATH MOUNT_S

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

D:\ASMDISKS\ASMDISK1 CACHED

D:\ASMDISKS\ASMDISK2 CACHED

D:\ASMDISKS\ASMDISK4 CACHED

D:\ASMDISKS\ASMDISK7 CACHED

D:\ASMDISKS\ASMDISK5 CACHED

D:\ASMDISKS\ASMDISK3 CACHED

D:\ASMDISKS\ASMDISK6 CACHED

7 rows selected.

SQL>

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 DG_DATA_01 512 4096 1048576 MOUNTED EXTERN 4097 4047

2 DG_DATA_02 512 4096 1048576 MOUNTED NORMAL 6142 6040

3 DG_DATA_03 512 4096 1048576 MOUNTED HIGH 3078 2925

4 DG_FLASHBACK 512 4096 1048576 MOUNTED EXTERN 1683 1633

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

SQL>selectpath,mount_statusfromv$asm_diskorderbydisk_number;

PATHMOUNT_S

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

D:\ASMDISKS\ASMDISK1CACHED

D:\ASMDISKS\ASMDISK2CACHED

D:\ASMDISKS\ASMDISK4CACHED

D:\ASMDISKS\ASMDISK7CACHED

D:\ASMDISKS\ASMDISK5CACHED

D:\ASMDISKS\ASMDISK3CACHED

D:\ASMDISKS\ASMDISK6CACHED

7rowsselected.

SQL>

SQL>selectgroup_number,name,sector_size,block_size,allocation_unit_size,state,type,total_mb,free_mbfromv$asm_diskgroup;

GROUP_NUMBERNAMESECTOR_SIZEBLOCK_SIZEALLOCATION_UNIT_SIZESTATETYPETOTAL_MBFREE_MB

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

1DG_DATA_0151240961048576MOUNTEDEXTERN40974047

2DG_DATA_0251240961048576MOUNTEDNORMAL61426040

3DG_DATA_0351240961048576MOUNTEDHIGH30782925

4DG_FLASHBACK51240961048576MOUNTEDEXTERN16831633

SQL>

7. 把asm diskgroup加入到初始化文件中:

SQL> show parameter asm_disk

NAME TYPE VALUE

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

asm_diskgroups string DG_DATA_01, DG_DATA_02, DG_DAT

A_03, DG_FLASHBACK

asm_diskstring string D:\asmdisks\*

SQL>

1

2

3

4

5

6

7

8

SQL>showparameterasm_disk

NAMETYPEVALUE

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

asm_diskgroupsstringDG_DATA_01,DG_DATA_02,DG_DAT

A_03,DG_FLASHBACK

asm_diskstringstringD:\asmdisks\*

SQL>

因此在INIT+ASM1.ora中加入这行:

*.asm_diskgroups='DG_DATA_01', 'DG_DATA_02', 'DG_DATA_03', 'DG_FLASHBACK'

1

*.asm_diskgroups='DG_DATA_01','DG_DATA_02','DG_DATA_03','DG_FLASHBACK'

然后shutdown asm实例,重新用pfile启动,再create spfile from pfile,最后从spfile启动。

这样,asm实例就建立完成了。

方法二,用windows中已经存在的分区,比如我们可以选择D盘。

1. 在已经格式化好的分区上新建asm disk:

C:\Documents and Settings\Administrator>asmtool -create d:\asmfiles\asmfile1 2048

C:\Documents and Settings\Administrator>asmtool -create d:\asmfiles\asmfile2 1024

C:\Documents and Settings\Administrator>asmtool -create d:\asmfiles\asmfile3 1024

C:\Documents and Settings\Administrator>asmtool -create d:\asmfiles\asmfile4 200

C:\Documents and Settings\Administrator>asmtool -create d:\asmfiles\asmfile5 200

C:\Documents and Settings\Administrator>asmtool -create d:\asmfiles\asmfile6 200

C:\Documents and Settings\Administrator>asmtool -create d:\asmfiles\asmfile7 400

C:\Documents and Settings\Administrator>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

C:\DocumentsandSettings\Administrator>asmtool-created:\asmfiles\asmfile12048

C:\DocumentsandSettings\Administrator>asmtool-created:\asmfiles\asmfile21024

C:\DocumentsandSettings\Administrator>asmtool-created:\asmfiles\asmfile31024

C:\DocumentsandSettings\Administrator>asmtool-created:\asmfiles\asmfile4200

C:\DocumentsandSettings\Administrator>asmtool-created:\asmfiles\asmfile5200

C:\DocumentsandSettings\Administrator>asmtool-created:\asmfiles\asmfile6200

C:\DocumentsandSettings\Administrator>asmtool-created:\asmfiles\asmfile7400

C:\DocumentsandSettings\Administrator>

上述文件的规划也和方法一类似,只是大小变小了一点。2G用于做external redundancy放一般数据,1G+1G做normal redundancy,200M+200M+200M做high redundancy,最后的400M做external redundancy。

我们看一下建立好后的文件类似如此:

061a886c83534f8b809e13c49d4a3df9.png

同时我们看到建立好这些文件之后,用asmtool -list是看不到的:

D:\oracle\product\10.2.0\db_1\database>asmtool -list

NTFS \Device\Harddisk0\Partition1 29996M

NTFS \Device\Harddisk0\Partition2 45005M

NTFS \Device\Harddisk0\Partition3 215238M

ORCLDISKDATA0 \Device\Harddisk0\Partition4 4097M

ORCLDISKDATA1 \Device\Harddisk0\Partition5 3071M

ORCLDISKDATA2 \Device\Harddisk0\Partition6 3071M

ORCLDISKDATA3 \Device\Harddisk0\Partition7 1026M

ORCLDISKDATA4 \Device\Harddisk0\Partition8 1026M

ORCLDISKDATA5 \Device\Harddisk0\Partition9 1026M

ORCLDISKDATA6 \Device\Harddisk0\Partition10 1683M

D:\oracle\product\10.2.0\db_1\database>

1

2

3

4

5

6

7

8

9

10

11

12

13

D:\oracle\product\10.2.0\db_1\database>asmtool-list

NTFS\Device\Harddisk0\Partition129996M

NTFS\Device\Harddisk0\Partition245005M

NTFS\Device\Harddisk0\Partition3215238M

ORCLDISKDATA0\Device\Harddisk0\Partition44097M

ORCLDISKDATA1\Device\Harddisk0\Partition53071M

ORCLDISKDATA2\Device\Harddisk0\Partition63071M

ORCLDISKDATA3\Device\Harddisk0\Partition71026M

ORCLDISKDATA4\Device\Harddisk0\Partition81026M

ORCLDISKDATA5\Device\Harddisk0\Partition91026M

ORCLDISKDATA6\Device\Harddisk0\Partition101683M

D:\oracle\product\10.2.0\db_1\database>

这也可以解释为什么在后续的dbca中也看不到,因为在dbca中有一步骤是给asm disk的分区做标签,加前缀,也就是我们用命令asmtool -add做的,但是如果在asmtool -list都看不到,那还怎么做标签、加前缀呢。

不过我们可以不管这个,这个asm实例还是可以建立起来的。

2. 建立初始化文件和密码文件:

初始化文件INIT+ASM2.ora,注意这里多了一个隐含参数*._asm_allow_only_raw_disks=FALSE,这可以让asm在其disk文件为非裸设备的情况下启动:

*._asm_allow_only_raw_disks=FALSE

*.instance_type='ASM'

*.asm_diskstring='D:\asmfiles\*'

*.large_pool_size=12M

*.db_unique_name='+ASM2'

*.asm_power_limit=1

*.remote_login_passwordfile='SHARED'

*.background_dump_dest='D:\oracle\admin\asm\bdump'

*.core_dump_dest='D:\oracle\admin\asm\cdump'

*.user_dump_dest='D:\oracle\admin\asm\udump'

1

2

3

4

5

6

7

8

9

10

*._asm_allow_only_raw_disks=FALSE

*.instance_type='ASM'

*.asm_diskstring='D:\asmfiles\*'

*.large_pool_size=12M

*.db_unique_name='+ASM2'

*.asm_power_limit=1

*.remote_login_passwordfile='SHARED'

*.background_dump_dest='D:\oracle\admin\asm\bdump'

*.core_dump_dest='D:\oracle\admin\asm\cdump'

*.user_dump_dest='D:\oracle\admin\asm\udump'

新建密码文件:

D:\oracle\product\10.2.0\db_1\database>orapwd file=orapw+ASM2 password=oracle

D:\oracle\product\10.2.0\db_1\database>

1

2

3

D:\oracle\product\10.2.0\db_1\database>orapwdfile=orapw+ASM2password=oracle

D:\oracle\product\10.2.0\db_1\database>

3. 后续的操作就比较类似了,新建+ASM2的windows 服务,启动该实例,新建diskgroup:

D:\oracle\product\10.2.0\db_1\database>oradim -new -asmsid +ASM2 -startmode auto

Instance created.

D:\oracle\product\10.2.0\db_1\database>set ORACLE_SID=+ASM2

D:\oracle\product\10.2.0\db_1\database>

1

2

3

4

5

6

D:\oracle\product\10.2.0\db_1\database>oradim-new-asmsid+ASM2-startmodeauto

Instancecreated.

D:\oracle\product\10.2.0\db_1\database>setORACLE_SID=+ASM2

D:\oracle\product\10.2.0\db_1\database>

D:\oracle\product\10.2.0\db_1\database>set ORACLE_SID=+ASM2

D:\oracle\product\10.2.0\db_1\database>sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 2月 13 12:36:40 2011

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

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

SQL> set line 1000

SQL> set pages 1000

SQL> col path for a30

SQL> select path,mount_status from v$asm_disk order by disk_number;

PATH MOUNT_STATUS

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

D:\ASMFILES\ASMFILE1 CLOSED

D:\ASMFILES\ASMFILE2 CLOSED

D:\ASMFILES\ASMFILE3 CLOSED

D:\ASMFILES\ASMFILE4 CLOSED

D:\ASMFILES\ASMFILE5 CLOSED

D:\ASMFILES\ASMFILE6 CLOSED

D:\ASMFILES\ASMFILE7 CLOSED

已选择7行。

SQL> select group_number,name,sector_size,block_size,allocation_unit_size,state,type,total_mb,free_mb from v$asm_diskgroup;

未选定行

SQL> select instance_name from v$instance;

INSTANCE_NAME

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

+asm2

SQL> create diskgroup dg_fs_data_01

2 external redundancy

3 disk 'D:\ASMFILES\ASMFILE1';

磁盘组已创建。

SQL> create diskgroup dg_fs_data_02

2 normal redundancy

3 failgroup fg_dgfsdata02_01 disk 'D:\ASMFILES\ASMFILE2'

4 failgroup fg_dgfsdata02_02 disk 'D:\ASMFILES\ASMFILE3';

磁盘组已创建。

SQL> create diskgroup dg_fs_data_03

2 high redundancy

3 failgroup fg_dgfsdata03_01 disk 'D:\ASMFILES\ASMFILE4'

4 failgroup fg_dgfsdata03_02 disk 'D:\ASMFILES\ASMFILE5'

5 failgroup fg_dgfsdata03_03 disk 'D:\ASMFILES\ASMFILE6';

磁盘组已创建。

SQL>

SQL> create diskgroup dg_fs_flashback

2 external redundancy

3 disk 'D:\ASMFILES\ASMFILE7';

Diskgroup created.

SQL>

SQL>

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

D:\oracle\product\10.2.0\db_1\database>setORACLE_SID=+ASM2

D:\oracle\product\10.2.0\db_1\database>sqlplus"/ as sysdba"

SQL*Plus:Release10.2.0.1.0-Productionon星期日2月1312:36:402011

Copyright(c)1982,2005,Oracle.Allrightsreserved.

连接到:

OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production

WiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptions

SQL>setline1000

SQL>setpages1000

SQL>colpathfora30

SQL>selectpath,mount_statusfromv$asm_diskorderbydisk_number;

PATHMOUNT_STATUS

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

D:\ASMFILES\ASMFILE1CLOSED

D:\ASMFILES\ASMFILE2CLOSED

D:\ASMFILES\ASMFILE3CLOSED

D:\ASMFILES\ASMFILE4CLOSED

D:\ASMFILES\ASMFILE5CLOSED

D:\ASMFILES\ASMFILE6CLOSED

D:\ASMFILES\ASMFILE7CLOSED

已选择7行。

SQL>selectgroup_number,name,sector_size,block_size,allocation_unit_size,state,type,total_mb,free_mbfromv$asm_diskgroup;

未选定行

SQL>selectinstance_namefromv$instance;

INSTANCE_NAME

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

+asm2

SQL>creatediskgroupdg_fs_data_01

2externalredundancy

3disk'D:\ASMFILES\ASMFILE1';

磁盘组已创建。

SQL>creatediskgroupdg_fs_data_02

2normalredundancy

3failgroupfg_dgfsdata02_01disk'D:\ASMFILES\ASMFILE2'

4failgroupfg_dgfsdata02_02disk'D:\ASMFILES\ASMFILE3';

磁盘组已创建。

SQL>creatediskgroupdg_fs_data_03

2highredundancy

3failgroupfg_dgfsdata03_01disk'D:\ASMFILES\ASMFILE4'

4failgroupfg_dgfsdata03_02disk'D:\ASMFILES\ASMFILE5'

5failgroupfg_dgfsdata03_03disk'D:\ASMFILES\ASMFILE6';

磁盘组已创建。

SQL>

SQL>creatediskgroupdg_fs_flashback

2externalredundancy

3disk'D:\ASMFILES\ASMFILE7';

Diskgroupcreated.

SQL>

SQL>

SQL>

注意如果我们建立的diskgroup name和之前的,另一个实例的diskgroup同名,就会报错:

SQL> create diskgroup dg_flashback

2 external redundancy

3 disk 'D:\ASMFILES\ASMFILE7';

create diskgroup dg_flashback

*

ERROR at line 1:

ORA-15018: diskgroup cannot be created

ORA-15003: diskgroup "DG_FLASHBACK" already mounted in another lock name space

1

2

3

4

5

6

7

8

SQL>creatediskgroupdg_flashback

2externalredundancy

3disk'D:\ASMFILES\ASMFILE7';

creatediskgroupdg_flashback

*

ERRORatline1:

ORA-15018:diskgroupcannotbecreated

ORA-15003:diskgroup"DG_FLASHBACK"alreadymountedinanotherlocknamespace

虽然二者属于不同实例,但是一旦实例启动,disk被cache起来,diskgroup状态变成mount,这个时候的disk和diskgroup name就会被锁定。

4. 修改pfile,增加asm_diskgroups,然后从spfile启动。

至此,方法二也建立好了asm实例。

后续,我们就可以用这2个asm实例来作为存储,存放数据文件了。我们就简单的来建立一个数据库:

1. 建立bdump,cdump,udump对应的目录。

2. 建立密码文件和初始化文件,注意初始化文件中的db_create_file_dest:

db_create_file_dest='+DG_FS_DATA_01'

nls_language="SIMPLIFIED CHINESE"

nls_territory="CHINA"

sga_target=167772160

job_queue_processes=10

dispatchers="(PROTOCOL=TCP) (SERVICE=oralocalXDB)"

compatible=10.2.0.1.0

audit_file_dest=D:\oracle\admin\oralocal\adump

remote_login_passwordfile=EXCLUSIVE

log_archive_format=oralocal_%S_%R_%T.arc

pga_aggregate_target=16777216

db_domain=""

db_name=oralocal

control_files=("+DG_FS_DATA_02\cfile\oralocal\control01.ctl", "+DG_FS_DATA_02\cfile\oralocal\control02.ctl", "+DG_FS_DATA_02\cfile\oralocal\control03.ctl")

db_recovery_file_dest=+DG_FS_FLASHBACK

db_recovery_file_dest_size=350m

open_cursors=300

undo_management=AUTO

undo_tablespace=UNDOTBS1

background_dump_dest=D:\oracle\admin\oralocal\bdump

core_dump_dest=D:\oracle\admin\oralocal\cdump

user_dump_dest=D:\oracle\admin\oralocal\udump

processes=150

db_block_size=8192

db_file_multiblock_read_count=16

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

db_create_file_dest='+DG_FS_DATA_01'

nls_language="SIMPLIFIED CHINESE"

nls_territory="CHINA"

sga_target=167772160

job_queue_processes=10

dispatchers="(PROTOCOL=TCP) (SERVICE=oralocalXDB)"

compatible=10.2.0.1.0

audit_file_dest=D:\oracle\admin\oralocal\adump

remote_login_passwordfile=EXCLUSIVE

log_archive_format=oralocal_%S_%R_%T.arc

pga_aggregate_target=16777216

db_domain=""

db_name=oralocal

control_files=("+DG_FS_DATA_02\cfile\oralocal\control01.ctl","+DG_FS_DATA_02\cfile\oralocal\control02.ctl","+DG_FS_DATA_02\cfile\oralocal\control03.ctl")

db_recovery_file_dest=+DG_FS_FLASHBACK

db_recovery_file_dest_size=350m

open_cursors=300

undo_management=AUTO

undo_tablespace=UNDOTBS1

background_dump_dest=D:\oracle\admin\oralocal\bdump

core_dump_dest=D:\oracle\admin\oralocal\cdump

user_dump_dest=D:\oracle\admin\oralocal\udump

processes=150

db_block_size=8192

db_file_multiblock_read_count=16

3. 启动到nmount状态后,create database:

SQL> startup nomount pfile='?/database/initoralocal.ora'

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1247876 bytes

Variable Size 67110268 bytes

Database Buffers 92274688 bytes

Redo Buffers 7139328 bytes

SQL>

SQL>

SQL>

SQL> CREATE DATABASE "oralocal"

2 MAXINSTANCES 8

3 MAXLOGHISTORY 1

4 MAXLOGFILES 192

5 MAXLOGMEMBERS 3

6 MAXDATAFILES 100

7 DATAFILE SIZE 500M

8 EXTENT MANAGEMENT LOCAL

9 SYSAUX DATAFILE SIZE 300M

10 SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE SIZE 20M

11 SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 200M

12 CHARACTER SET ZHS16GBK

13 NATIONAL CHARACTER SET AL16UTF16

14 LOGFILE GROUP 1 SIZE 51200K,

15 GROUP 2 SIZE 51200K,

16 GROUP 3 SIZE 51200K;

Database created.

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

SQL>startupnomountpfile='?/database/initoralocal.ora'

ORACLEinstancestarted.

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize67110268bytes

DatabaseBuffers92274688bytes

RedoBuffers7139328bytes

SQL>

SQL>

SQL>

SQL>CREATEDATABASE"oralocal"

2MAXINSTANCES8

3MAXLOGHISTORY1

4MAXLOGFILES192

5MAXLOGMEMBERS3

6MAXDATAFILES100

7DATAFILESIZE500M

8EXTENTMANAGEMENTLOCAL

9SYSAUXDATAFILESIZE300M

10SMALLFILEDEFAULTTEMPORARYTABLESPACETEMPTEMPFILESIZE20M

11SMALLFILEUNDOTABLESPACE"UNDOTBS1"DATAFILESIZE200M

12CHARACTERSETZHS16GBK

13NATIONALCHARACTERSETAL16UTF16

14LOGFILEGROUP1SIZE51200K,

15GROUP2SIZE51200K,

16GROUP3SIZE51200K;

Databasecreated.

SQL>

我们看到相关的文件已经用OMF管理:

SQL> select name from v$datafile;

NAME

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

+DG_FS_DATA_01/oralocal/datafile/system.258.743030629

+DG_FS_DATA_01/oralocal/datafile/undotbs1.264.743030639

+DG_FS_DATA_01/oralocal/datafile/sysaux.260.743030643

+DG_FS_DATA_01/oralocal/datafile/users.265.743030697

1

2

3

4

5

6

7

8

SQL>selectnamefromv$datafile;

NAME

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

+DG_FS_DATA_01/oralocal/datafile/system.258.743030629

+DG_FS_DATA_01/oralocal/datafile/undotbs1.264.743030639

+DG_FS_DATA_01/oralocal/datafile/sysaux.260.743030643

+DG_FS_DATA_01/oralocal/datafile/users.265.743030697

最后@?/rdbms/admin/catalog和@?/rdbms/admin/catproc即完成数据库的创建。

那么,如果我在数据库的初始化文件中写上了db_create_file_dest=’+DG_FS_DATA_01’,那么我是否还能用到另一个asm实例的存储呢?

SQL> create tablespace test_02 datafile '+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf' size 10m;

create tablespace test_02 datafile '+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf' size 10m

*

ERROR at line 1:

ORA-01119: error in creating database file

'+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf'

ORA-17502: ksfdcre:4 Failed to create file

+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf

ORA-15001: diskgroup "DG_DATA_01" does not exist or is not mounted

ORA-15001: diskgroup "DG_DATA_01" does not exist or is not mounted

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

13

SQL>createtablespacetest_02datafile'+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf'size10m;

createtablespacetest_02datafile'+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf'size10m

*

ERRORatline1:

ORA-01119:errorincreatingdatabasefile

'+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf'

ORA-17502:ksfdcre:4Failedtocreatefile

+DG_DATA_01/oralocal/dfile/tbs_test_02.dbf

ORA-15001:diskgroup"DG_DATA_01"doesnotexistorisnotmounted

ORA-15001:diskgroup"DG_DATA_01"doesnotexistorisnotmounted

SQL>

看来一个asm实例只能被一个数据库使用。

呵呵,看来一个数据库实例不能跨asm实例,用不同的diskgroup,一个数据库实例只能用一个asm实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值