利用vmware體驗(yàn)Oracle10g的ASM數(shù)據(jù)庫
2024-08-29 13:36:44
供稿:網(wǎng)友
 
             
  WindowsXP PRo 安裝VMware GSX Server
  用vmware安裝了RHEL3
  
  虛擬了一個(gè)主硬盤sda,用來安裝系統(tǒng)
  添加了四塊虛擬硬盤sdb-sde,預(yù)備用來安裝ASM的Oracle10g
  
  系統(tǒng)安裝完畢
                                                                                              安裝Oracle10g,不作具體描述了
  
  安裝完畢之后開始創(chuàng)建數(shù)據(jù)庫
  
  選擇ASM類型,到創(chuàng)建磁盤組那一步,發(fā)現(xiàn)找不到可用的硬盤。
  指定discovery string為/dev/*
  dbca死掉了
  自動(dòng)啟動(dòng)的ASM實(shí)例也登陸不了
  沒辦法,重啟虛擬機(jī)
  
  之后參考了一系列文章
  包括:
  Oracle Magazine中的“Add Storage, Not Projects”
  OTN上的Tuning Oracle Database 10g on linux Using ASM
  10g的聯(lián)機(jī)文檔
  
  發(fā)現(xiàn)全部沒有說當(dāng)用dbca創(chuàng)建Disk Group的時(shí)候,為什么會(huì)找不到應(yīng)該有的磁盤,也沒有說磁盤應(yīng)該是怎樣的文件系統(tǒng),或者說只能當(dāng)成裸設(shè)備
  
  于是將磁盤格式化成ext3文件系統(tǒng),mount到自行創(chuàng)建的目錄中指定discovery string為這個(gè)目錄,啟動(dòng)實(shí)例,檢查v$asm_disk視圖,仍然沒有可用的磁盤
  
  后來在Google上搜,發(fā)現(xiàn)了還有oracleasm這個(gè)東東要從OTN上下載,用來治理asm的磁盤組下載完畢以后,是幾個(gè)rpm包,安裝正常但是enable的時(shí)候,總是報(bào)module加載失敗查看/var/log/messege文件,發(fā)現(xiàn)報(bào)系統(tǒng)內(nèi)核版本不匹配于是又上網(wǎng)下載新的內(nèi)核,安裝,depmod -a
  重新啟動(dòng),OK
  
  ln -s ../init.d/oracleasm S99oracleasm
  ln -s ../init.d/oracleasm K01oracleasm
  以便下次系統(tǒng)啟動(dòng)的時(shí)候會(huì)自動(dòng)加載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*'
  
  啟動(dòng)實(shí)例
  報(bào)錯(cuò),ORA-29701: unable to connect to Cluster Manager
  查google,查不到
  再查metalink,原來是因?yàn)榘惭b完10g以后,就直接把/etc/inittab中的
  h1:35:respawn:/etc/init.d/init.Cssd run >/dev/null 2>&1   這句注釋了
  原來這就是10g內(nèi)置的cluster manager
  
  取消注釋
  重新啟動(dòng)系統(tǒng)
  再次啟動(dòng)實(shí)例,OK
  
  代碼: 
  SQL> select disk_number,label from v$asm_disk;
  
  DISK_NUMBER LABEL
  ----------- ----
  0 VOL1
  1 VOL2
  2 VOL3
  &n
  
  創(chuàng)建磁盤組,報(bào)錯(cuò)
  
  代碼: 
  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的聯(lián)機(jī)文檔
  發(fā)現(xiàn)disk name應(yīng)該是跟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,創(chuàng)建ASM類型的數(shù)據(jù)庫,基本上沒什么別的問題了。
                         
  
  結(jié)論:
  1。OTN上的文檔和10g的聯(lián)機(jī)文檔很多錯(cuò)誤的地方,可能很多文章都是想當(dāng)然寫出來的,也許根本作者自己都沒有作過測試
  2。糾正了我以前的一個(gè)概念,一個(gè)ASM數(shù)據(jù)庫需要一個(gè)ASM實(shí)例和一個(gè)自己的數(shù)據(jù)庫實(shí)例,多個(gè)數(shù)據(jù)庫實(shí)例可以共享一個(gè)ASM實(shí)例
  
  創(chuàng)建完畢了,明天測試ASM數(shù)據(jù)庫的automatic rebalance功能
  
  等到測試完畢,會(huì)抽空寫一份完整的安裝文檔。
  呵呵,假如能在這周完成,應(yīng)該是世界上最早的一份完整的ASM在LINUX上的安裝文檔了
  http://www.puschitz.com/上面這個(gè)專題還是comming soon呢
  而且據(jù)Werner Puschitz自己說,他是用裸設(shè)備來在Linux下面實(shí)現(xiàn)ASM的,而不是oracleasm