星期四, 4月 26, 2007

[oracle]在RHEL 3上安裝Oracle 9i RAC(利用Vmware 5.5)

原文::在這邊!



一.說明



  安裝Oracle RAC基本需要設定很多,我也是花滿多時間,搜集網路相關的資



料,並且測試多次,才成功,中間也有遇到一些錯誤,我會將可能遇到的錯誤儘



量標示出來,如果各位大大在測試過程中有遇到什麼問題,可以儘管提出來。





二、安裝前準備工作



 1.軟體需求:



(1).Vmware 5.5軟體:安裝RAC二個節點



(2).plainmaker工具:產生一個Shared Disk



(3).Oracle 9軟體:我們在這裡使用9.2.0.4版本



(4).OS版本:RHEL AS 3





 2.環境說明:



RAC節點名稱   資料庫名稱    Oracle SID  資料庫安裝位置  



 資料庫檔案位置



 rac1pub/rac2prv  orcl       orcl1    /opt/oracle

 /var/opt/oracle/oradata(跟上面是同一行)



 rac2pub/rac2prv  orcl       orcl2    /opt/oracle

 /var/opt/oracle/oradata(跟上面是同一行)





 3.產生ShareDisk:



  在DOS下:



   F:\> plainmaker f:\virtual\rac\sharedisk.pln 4096M





 4.安裝二個節點Linux OS虛擬作業系統,建議要有二張網卡,一張為Public,



  一張為Private,請先修改主機名稱及IP,範例如下:



節點1:

   主機名稱:rac1pub

   IP:192.168.1.241(Public)、192.168.0.241(Private)



節點2:

   主機名稱:rac2pub

   IP:192.168.1.242(Public)、192.168.0.242(Private)





 5.修改二個節點的/etc/hosts檔案,範例如下:



  127.0.0.1 localhost.localdomain localhost

  192.168.1.241 rac1pub

  192.168.0.241 rac1prv

  192.168.1.242 rac2pub

  192.168.0.242 rac2prv





 6.增加二台虛擬機器的Shared Disks,將我們剛剛新增的sharedisk.pln加進



  來,注意在新增Disk,是選擇“Use an existing virtual 

  

  “Advanced”→“SCSI 1:1”→打勾“Independent及Persistent”,記得



   二台都要增加,最後先不要啟動,修改二台虛擬機器副檔名為vmx檔案,



   增加以下內容:



          disk.locking=FALSE

          scsi1.sharedBus="virtual"

          diskLib.dataCacheMaxSize="0"

          diskLib.dataCacheMaxReadAheadSize="0"

          diskLib.datacacheMinReadAheadSize="0"

          diskLib.dataCachePageSize="4096"

          diskLib.maxUnsyncedWrites="0"



P.S. 在啟動二台虛擬機器時,會出現Vmware不支援Cluster,但那不影響後面操  

  作





 7.進行ShareDisk的分割,主要用來安裝Oracle資料檔及一些RAC所需要用到



  的檔案,請參考以下內容,並且利用fdisk工具進行分割(記住:只要在一個



  節點進行分割):



分割區名稱   大小(MB)        用途



/dev/sdb1   10    存放Cluster Manager Quorum文件



/dev/sdb2   350    存放Undotbs1



/dev/sdb3   350    存放Undotbs2



/dev/sdb5   500    存放system tablespace



/dev/sdb6   10    存放Spfile



/dev/sdb7   300    存放temp tablespace



/dev/sdb8   300    存放indx tablespace



/dev/sdb9   100    存放控制檔1



/dev/sdb10   100    存放控制檔2



/dev/sdb11   100    存放第1個節點的第1組log檔



/dev/sdb12   100    存放第1個節點的第2組log檔



/dev/sdb13   100    存放第2個節點的第1組log檔



/dev/sdb14   100    存放第2個節點的第1組log檔



/dev/sdb15   100    存放Shared Configuration文件





P.S. 分割完成後,在另一個節點請執行“partprobe”後,再執行“fdisk –l”,



  查看是否可以看到已經完成的分割區





三、安裝Oracle RAC



 1.新增使用者並設定環境變數,請參考以下指令說明《二個節點上都須要做》



Root的身份:



  # groupadd –g dba (在這個群組的使用者將有SYSDBA權限)



  # gropadd –g oinstall (Oracle檔案的擁有者)



  # useradd –c “Oracle software owner” –g oinstall –G dba oracle



  # passwd oracle(設定Oracle密碼)





Oracle的身份:(請利用Oracle身份登入)



  $ vi ~/.bash_profile (修改內容如下)



export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=/opt/oracle/product/9.2.0

export ORACLE_SID=orcl1 (節點2請設定為orcl2)

export ORACLE_TERM=xterm

export NLS_LANG=AMERICAN

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

export PATH=$PATH:$ORACLE_HOME/bin

export THREADS_FLAG=native

export LD_ASSUME_KERNEL=2.4.1





  請登出然後再登入,讓設定值套用



  $ echo $ORACLE_SID





 2.產生Oracle安裝目錄《二個節點上都須要做》



  $ su – root(使用root身份)



  # mkdir –p /opt/oracle/product/9.2.0 (資料庫軟體)



  # mkdir –p /var/opt/oracle/oradata/orcl (資料檔位置)



  # chown –R oracle.oinstall /opt

  # chown –R oracle.dba /var/opt/oracle



  # chmod –R 775 /var/opt/oracle



  $ mkdir –p $ORACLE_HOME/oracm/log(使用Oracle身份)



  $ mkdir –p $ORACLE_HOME/network/log



  $ mkdir –p $ORACLE_HOME/network/trace



  $ mkdir –p $ORACLE_HOME/rdbms/log



  $ mkdir –p $ORACLE_HOME/rdbms/audit



  $ mkdir –p $ORACLE_HOME/network/agent/log



  $ mkdir –p $ORACLE_HOME/network/agent/reco





 3.配置Raw Devices《二個節點上都須要做》



  $ su – root



  # raw /dev/raw/raw1 /dev/sdb1



  # raw /dev/raw/raw2 /dev/sdb2



  # raw /dev/raw/raw3 /dev/sdb3



  # raw /dev/raw/raw4 /dev/sdb5



  # raw /dev/raw/raw5 /dev/sdb6



  # raw /dev/raw/raw6 /dev/sdb7



  # raw /dev/raw/raw7 /dev/sdb8



  # raw /dev/raw/raw8 /dev/sdb9



  # raw /dev/raw/raw9 /dev/sdb10



  # raw /dev/raw/raw10 /dev/sdb11



  # raw /dev/raw/raw11 /dev/sdb12

  # raw /dev/raw/raw12 /dev/sdb13



  # raw /dev/raw/raw13 /dev/sdb14



  # raw /dev/raw/raw14 /dev/sdb15



  # raw –aq(檢查是否設定正確)





  請將上面的語法附加到 /etc/rc.local這個檔案(raw –aq這個不用加入)





  # ./chang_owner(利用root身份執行,檔案內容請參考下面)





     for i in `seq 1 14`

     do

      chmod 660 /dev/raw/raw$i

      chown oracle.dba /dev/raw/raw$i

     done





  $ ./lnoracle(利用Oracle身份執行,檔案內容請參考下面)



  ln -s /dev/raw/raw1 /var/opt/oracle/oradata/orcl/CMQuorumFile

  ln -s /dev/raw/raw2 /var/opt/oracle/oradata/orcl/undotbs01.dbf

  ln -s /dev/raw/raw3 /var/opt/oracle/oradata/orcl/undotbs02.dbf

  ln -s /dev/raw/raw4 /var/opt/oracle/oradata/orcl/system01.dbf

  ln -s /dev/raw/raw5 /var/opt/oracle/oradata/orcl/spfileorcl.ora

  ln -s /dev/raw/raw6 /var/opt/oracle/oradata/orcl/temp01.dbf

  ln -s /dev/raw/raw7 /var/opt/oracle/oradata/orcl/indx01.dbf

  ln -s /dev/raw/raw8 /var/opt/oracle/oradata/orcl/control01.ctl

  ln -s /dev/raw/raw9 /var/opt/oracle/oradata/orcl/control02.ctl

  ln -s /dev/raw/raw10 /var/opt/oracle/oradata/orcl/redo01.log

  ln -s /dev/raw/raw11 /var/opt/oracle/oradata/orcl/redo02.log

  ln -s /dev/raw/raw12 /var/opt/oracle/oradata/orcl/redo01_1.log

  ln -s /dev/raw/raw13 /var/opt/oracle/oradata/orcl/redo02_1.log

ln -s /dev/raw/raw14 /var/opt/oracle/oradata/orcl/SharedSrvctlConfigFile





 4.安裝hangcheck-timer,使用監視節點之間的狀況,請參考以下指令《二個



  節點上都須要做》



 $ su – root



 # insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180



 # grep Hangcheck /var/log/messages | tail –1

 (查看是否有載入這個Module)



 # echo “options hangcheck-timer hangcheck_tick=30   

  hangcheck_margin=180” >> /etc/modules.conf



  # modprobe hangcheck-timer



  # grep Hangcheck /var/log/messages | tail -1





 5.設定RAC Nodes之間信任《二個節點上都須要做》



  # chkconfig rsh on (使用root身份)



  # chkconfig rlogin on



  # service xinetd reload



  # vi /etc/hosts.equiv



    +rac1prv oracle

    +rac2prv oracle

    +rac1pub oracle

    +rac2pub oracle



  # chmod 600 /etc/hosts.equiv



  # chown root.root /etc/hosts.equiv



  $ rsh rac2prv ls –l /etc/hosts.equiv

(在節點1上,利用Oracle身份執行,是否可以正常看到)



  $ rsh rac1prv ls –l /etc/hosts.equiv

(在節點2上,利用Oracle身份執行,是否可以正常看到)





 6.安裝Oracle 9i Cluster Manager



  我們先將Oracle安裝檔案放在rac1pub上



  $ su – root(切換成root身份執行,必須二個節點都要做)



  # unzip p3006854_9204_LINUX.zip(RHEL 3必須安裝這個Patch)



  # cd 3006854



  # chmod +x rhel3_pre_install.sh



  # ./ rhel3_pre_install.sh



  $ ./runInstaller(利用Oracle身份執行,只須在一個節點上都須要做)



  此部份安裝此先選擇“Oracle Cluster Manager”,並先後輸public及



  private節點,在這個我們public為“rac1pub”及“rac2pub”,private



  為“rac1prv”及”rac2prv”,Quorum Disk Information



  為“/var/opt/oracle/oradata/orcl/CMQuorumFile”





 7.組態Oracle 9i Cluster Manager《二個節點上都須要做》



  $ su – root



  # . /home/oracle/.bash_profile



  # ORACLE_HOME/oracm/bin/ocmstart.sh



  # ps –ef | grep oracm(檢查是否有oracm process出現)







 8.安裝Oracle 9i 資料庫軟體



  $ ./ runInstaller(利用Oracle身份執行,只須在一個節點上都須要做)



  在安裝的初期,記得選擇二個節點,並且選擇只安裝“Software only”,



  Shared Configuration File Name請輸



  入”/var/opt/oracle/oradata/orcl/SharedSrvctlConfigFile





  P.S. 記得要有足夠的硬碟容量





 9.啟動Oracle Global Services



  $ srvconfig –init (利用Oracle身份執行,在節點1執行即可)



  $ gsdctl start (利用Oracle身份執行,二個節點都要執行)



  $



 10.安裝Oracle資料庫



  $ dbca –datafileDestination /var/opt/oracle/oradata

 (利用Oracle身份執行,只須在一個節點上都須要做)





  選擇“Oracle Cluster Database”,“Create Database”,“二個節點都



  要選擇”,“New Database”,資料庫名稱及SID為“orcl”,將所有



  Database Feature打勾都取消,在Database Storage部份請注意,只保



  留“二個控制檔”,Tablespaces保



  留“SYSTEM”、“TEMP”、”UNDOTBS1”、”UNDOTBS2”即可,將



  redo log 3檔案名稱改為“redo01_1.log,redo log 4檔案名稱改



  為”redo02_1.log,其它保持預設值即可







 安裝在3%會出現錯誤,出現原因為無法解析到網路名

 

 稱“LISTENERS_ORCL”,所以請先離開,並執行以下指令:





  $ netca





  選擇“Cluster Configuration”,會出現二個節點,選擇“Listener



  configuration”,在名稱部份輸入“LISTENERS_ORCL”,其它保持預設值





  $ dbca –datafileDestination /var/opt/oracle/oradata

  (利用Oracle身份執行,只須在一個節點上都須要做)





  其它請依照上面的設定值輸入,這次就不會再出現任何錯誤





  P.S. 我大部份發生問題都是在這個,所以要特別小心,尤其是檔案名稱要與



     我前面設定連結名稱一樣,否則會出現





四、進行驗證及Failover



驗證:



  $ srvctl status database –d orcl

(如果出現二個Instance都在run,那代表安裝成功)



  $ lsnrctl status

 (會看到二個Instance:orcl1及orcl2)







Failover:



  請在一台有安裝Oracle Client軟體上,修改tnsnames.ora設定檔,加入以下



  內容:



orcl =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac1pub)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = rac2pub)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

(failover_mode=(type=select)(method=basic))

)

(LOAD_BALANCE=ON)

(FAILOVER=ON)

)





  sql> select instance_name from v$instance(利用sql plus工具)



(得知目前連到那一台Instance上,假設為orcl2的話,故意將orcl2的Instance



 關閉,並且再執行一次,您會發現已變更為orcl1,證實已經自動進行



 Failover)

沒有留言: