当前位置导航:炫浪网>>网络学院>>编程开发>>Oracle教程

利用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
相关内容
赞助商链接