close
原文::在這邊!

一.說明

  安裝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)
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Erny 的頭像
    Erny

    Blog->Erny

    Erny 發表在 痞客邦 留言(0) 人氣()