我的步骤:vmware 5 + rhel 4 as 2 +oracle 10g
1 用DBCA配置asm的时候系统会帮忙建立一个asm instance.默认instance name为 +ASM 而下面的一篇帖子是自己手动更全面的控制建立的asm instance. 要设置sys密码,然后退出,不继续了,因为不知道何种原因,不能显示添加的虚拟磁盘.查找了网上帖子,需要安装asmlib等等等等。
2:http://www.oracle.com/technology/software/tech/linux/asmlib/rhel4.html
下载了5个包,安装。要按照对应的版本(uname -r)下载相应的包。我的是2.6.9-22
3 :按照下面第2篇帖子的步骤加入添加磁盘。有人说不需要分区,裸设备即可,不清楚裸设备的概念,听网友的用raw -qa没有查找到裸设备,所以用fdisk /dev/sdc ....n 创建了一个主分区。然后用类似etc/init.d/oracleasm createdisk VOL5 /dev/sdf
的语法etc/init.d/oracleasm createdisk VOL5 /dev/sdf1 创建了asm磁盘。连续创建了4个
补充:未分区的和分区但没有格式化的都属于裸设备。具体可以参考itpub一篇帖子(如何添加裸设备)
4 在dbca中创建了磁盘组。这样更容易操作。再用dbca创建数据库,选择存储为asm。搞定。
5 export ORACLE_SID=+asm
sqlplus / as sysdba
startup
export ORACLE_SID=prod
sqlplus /as sysdba
startup
连接+asm instance
sql>select group_number,disk_number,name,failgroup,create_date,path from v$asm_disk
GROUP_NUMBER DISK_NUMBER NAME FAILGROUP CREATE_DATE PATH
------------ ---------- ---------- ---------- ------------ -------------------
1 0 VOL1 VOL1 03-OCT-06 ORCL:VOL1
1 1 VOL2 VOL2 03-OCT-06 ORCL:VOL2
2 0 VOL3 VOL3 03-OCT-06 ORCL:VOL3
2 1 VOL4 VOL4 03-OCT-06 ORCL:VOL4
http://www.linuxmine.com/48923.html
利用vmware体验Oracle10g的ASM数据库
WindowsXP Pro 安装VMware GSX Server
用vmware安装了RHEL3
虚拟了一个主硬盘sda,用来安装系统
添加了四块虚拟硬盘sdb-sde,准备用来安装ASM的Oracle10g
系统安装完毕
安装Oracle10g,不作详细描述了
安装完毕之后开始创建数据库
选择ASM类型,到创建磁盘组那一步,发现找不到可用的硬盘。
指定discovery string为/dev/*
dbca死掉了
自动启动的ASM实例也登陆不了
没办法,重启虚拟机
之后参考了一系列文章
包括:
Oracle Magazine中的“Add Storage, Not Projects”
OTN上的Tuning Oracle Database 10g on Linux Using ASM
10g的联机文档
发现全部没有说当用dbca创建Disk Group的时候,为什么会找不到应该有的磁盘,也没有说磁盘应该是怎样的文件系统,或者说只能当成裸设备
于是将磁盘格式化成ext3文件系统,mount到自行创建的目录中指定discovery string为这个目录,启动实例,检查v$asm_disk视图,仍然没有可用的磁盘
后来在google上搜,发现了还有oracleasm这个东东要从OTN上下载,用来管理asm的磁盘组下载完毕以后,是几个rpm包,安装正常但是enable的时候,总是报module加载失败查看/var/log/messege文件,发现报系统内核版本不匹配于是又上网下载新的内核,安装,depmod -a
重新启动,OK
ln -s ../init.d/oracleasm S99oracleasm
ln -s ../init.d/oracleasm K01oracleasm
以便下次系统启动的时候会自动加载ASMlib driver
#/etc/init.d/oracleasm createdisk VOL1 /dev/sdb
#/etc/init.d/oracleasm createdisk VOL2 /dev/sdc
#/etc/init.d/oracleasm createdisk VOL3 /dev/sdd
#/etc/init.d/oracleasm createdisk VOL4 /dev/sde
修改$ORACLE_HOME/dbs/init+ASM.ora文件
添加一行:asm_diskstring='ORCL:VOL*'
启动实例
报错,ORA-29701: unable to connect to Cluster Manager
查google,查不到
再查metalink,原来是因为安装完10g以后,就直接把/etc/inittab中的
h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 这句注释了
原来这就是10g内置的cluster manager
取消注释
重新启动系统
再次启动实例,OK
代码:
SQL> select disk_number,label from v$asm_disk;
DISK_NUMBER LABEL
----------- ----
0 VOL1
1 VOL2
2 VOL3
&n
创建磁盘组,报错
代码:
SQL> create diskgroup dgroup1 normal redundancy
2 failgroup fgroup1 disk 'VOL1','VOL2'
3 failgroup fgroup2 disk 'VOL3','VOL4';
create diskgroup dgroup1 normal redundancy
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15031: disk specification 'VOL4' matches no disks
ORA-15031: disk specification 'VOL3' matches no disks
ORA-15031: disk specification 'VOL2' matches no disks
ORA-15031: disk specification 'VOL1'
再去查10g的联机文档
发现disk name应该是跟asm_diskstring的写法一样
代码:
SQL> create diskgroup dgroup1 normal redundancy
2 failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'
3 failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';
Diskgroup created.
OK,通过
代码:
SQL> col name for a10
SQL> set linesize 999
SQL> select * from v$asm_diskgroup;
然后,使用dbca,创建ASM类型的数据库,基本上没什么别的问题了。
结论:
1。OTN上的文档和10g的联机文档很多错误的地方,可能很多文章都是想当然写出来的,也许根本作者自己都没有作过测试
2。纠正了我以前的一个概念,一个ASM数据库需要一个ASM实例和一个自己的数据库实例,多个数据库实例可以共享一个ASM实例
创建完毕了,明天测试ASM数据库的automatic rebalance功能
等到测试完毕,会抽空写一份完整的安装文档。
呵呵,如果能在这周完成,应该是世界上最早的一份完整的ASM在LINUX上的安装文档了
http://www.puschitz.com/上面这个专题还是comming soon呢
而且据Werner Puschitz自己说,他是用裸设备来在Linux下面实现ASM的,而不是oracleasm
(本文已被浏览 次) | | |