RedHat Advance Server上安裝Oracle 9204 RAC參考手冊(zt)

tolywang發表於2007-07-26
前言
定位
本文定位在那些有了一定Linux與oracle基礎的,而且對RAC也要有相關了解熱人員作為參考手冊,而不是所謂的安裝嚮導。所以本文沒有詳細的安裝過程之類的步驟,卻有詳細的安裝錯誤的解決辦法。

覆蓋範圍
適合在Redhet AS 2.1與AS 3.0系統上

包括單節點、多節點安裝

包括9201升級到9204和直接安裝9204

包括檔案系統(單機),OCFS檔案系統,RAW裝置與NFS網路檔案系統的安裝異同

第一章. RAC的機制
RAC起源於版本8的OPS(Oracle parallel Server),OPS/RAC 最原始的設計初衷就是系統與應用的高可用性。OPS/RAC透過不同的節點使用一個(一般是一個)或多個oracle instances 與一個database 連線。RAC對早期的OPS做了眾多的改進,特別是在節點的通訊與管理上。RAC在工作期間,每個節點可以單獨的被使用並且被應用程式負載均衡。如果發生意外,如一個節點的失敗,可以實現節點的失敗切換(failover),保證資料庫24*7的高可用性。

RAC的資料庫要求建立在共享磁碟裝置上,對於OPS,只支援RAW裝置,RAC已經可以支援檔案系統(單機模擬)、OCFS、RAW、與NFS等檔案系統或者裝置。因為RAC是多個例項對應一個資料庫,每個節點都有自己的日誌,因此在備份與恢復方面,將需要一些特殊的處理。

但是,RAC並不提供容災的功能,如共享磁碟裝置的損壞,自然災害等不可避免的損失,將導致RAC的不可使用,所以,RAC一般與其它的容災元件配合使用,如RAC+DATA GUARD。

取代以前版本的分散式鎖管理(DLM),全域性緩衝服務(GCS)與全域性鎖服務(GES)將負責RAC的管理工作。GCS的同步層允許每個例項單獨的訪問資料庫,透過資料庫的核心層管理例項級別的一致性與鎖資源。所有的以上任務將被一組特殊的後臺程式來完成:

LMON (Lock Monitor Process),鎖監控程式

負責監控整個RAC的全域性資源,管理例項與程式的過期以及全域性緩衝服務與全域性鎖服務的恢復工作,LMON提供一個眾所周知的聚族組服務(CGS)。

LMSn(The Global Cache Service Processes),全域性緩衝服務程式

LMSn可以處理遠端節點的全域性緩衝服務的資訊,LMSn也負責控制到遠端節點的資訊流,RAC可以提供10個這樣的服務程式LMS0-LMS9,其程式的多少取決於例項之間的通訊量。LMSn負責處理遠端節點的全域性緩衝服務獲得的中斷請求,保證多個例項的讀一致性請求。LMSn建立塊的一致性的讀資訊並送到遠端節點的例項。

LMD(The Global Enqueue Service Daemon),全域性資源服務

LMD資源代理程式,負責管理全域性緩衝服務資源的管理,可以負責遠端節點資源的請求與死鎖的檢測。

第二章. Linux上安裝RAC的系統要求
2.1 核心需求
如果是如果是AS2.1,核心2.4.9 e16以上,如

[oracle@dbrac oracle]$ uname -a

Linux dbrac 2.4.9-e.37enterprise #1 SMP Mon Jan 26 11:20:59 EST 2004 i686 unknown

如果是3.0版本,則沒有核心要求,核心資訊一般如下

[root@ dbrac oracle]$ uname -a

Linux dbrac 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux

2.2 binutils需求
binutils 要求binutils-2.11.90.0.8-12以上,如

如:2.1版本

[oracle@dbrac oracle]$ rpm -qa | grep -i binutils

binutils-2.11.90.0.8-12

3.0版本

[root@ dbrac oracle]$ rpm -qa | grep -i binutils

binutils-2.14.90.0.4-26

2.3 共享磁碟需求
如果是單節點安裝,可以是本地硬碟,檔案系統即可

如果是多節點安裝,需要共享磁碟系統,可以是Raw裝置,Ocfs檔案系統,Nfs網路檔案系統等。



第三章.安裝前的準備工作
3.1調整Linux核心引數
在/etc/sysctl.conf中增加

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

net.core.rmem_max = 262144

net.ipv4.tcp_sack=0

net.ipv4.tcp_timestamps=0

fs.file-max = 65535

kernel.sem = 500 64000 100 128

kernel.shmmax = 2147483648

以上值根據不同的環境可能有變化,不再描述每個值的具體意義

3.2載入系統狀態檢查模組
這個模組在AS2.1-E16以上的核心或者是3.0的核心中是自帶的,不需要安裝,它取代了資料庫9201版本的watchdog,所以,我們可以不需要配置watchdog,如果OS核心不夠,可以升級核心。

可以透過如下方法檢測是否存在該模組

$ find /lib/modules -name "hangcheck-timer.o"

/lib/modules/2.4.9-e.37enterprise/kernel/drivers/char/hangcheck-timer.o

你可以執行該模組並檢查日誌資訊

# su - root

# /sbin/insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

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

在/etc/rc.local下增加

#!/bin/sh

touch /var/lock/subsys/local

/sbin/insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

或者

# su - root

# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modules.conf

這樣的話,在系統重新啟動後,該模組可以自動載入

3.3確定與配置節點
如果確定在單個節點上模擬RAC,那麼/etc/hosts檔案內容可以類似如下

[root@dbrac root]# more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost

10.0.29.162 dbrac

其中dbrac是該機器的機器名稱,與hostname或/etc/sysconfig/network的內容一致

如果是在多節點上安裝RAC,那麼/etc/hosts檔案內容可以類似如下

[oracle@db205 oracle]$ more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost

192.168.168.205 dbrac1

192.168.168.206 dbrac2

192.168.0.205 dbrac1-eth1

192.168.0.206 dbrac1-eth1

其中分別代表公用節點名稱與私有節點名稱,公用節點是網路卡1配置的IP地址,表示對外應用程式連線通道;私有節點是網路卡2配置的IP地址,用於多個節點之間的通訊專用。

3.4建立oracle使用者與組
#groupadd dba

#useradd oracle -g dba

#passwd oracle

3.5設定節點環境變數
如果是AS 3.0,注意設定如下引數

export LD_ASSUME_KERNEL=2.4.1

以下引數在兩個平臺下公用

export ORACLE_BASE=/u01/oracle

export ORACLE_HOME=/u01/oracle/ora920

export ORACLE_TERM=xterm

export NLS_LANG=AMERICAN_AMERICA.zhs16gbk

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

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



PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export PATH

3.6準備目錄結構
su - oracle

$cd $ORACLE_BASE

$ mkdir -p admin/rac/ ---存放配置檔案

$ cd admin/rac/

$ mkdir bdump cdump udump createdblog

$cd $ORACLE_BASE

$ mkdir -p oradata/rac ----存放資料檔案

注意:以上操作,如果是多個節點,需要在多個節點上完成 ,單個節點只需要在單節點上完成即可。

第四章. 確定共享磁碟裝置
4.1 單機檔案系統上安裝RAC
檔案系統如ext2,ext3等,可以在單機上模擬RAC。

假定我們劃分/u01分割槽為ext3檔案系統,首先,我們建立新的分割槽

#fdisk /dev/sda

假定化出的新分割槽是/dev/sda6,那我們格式化該分割槽,如果是As 2.1

#mkfs.ext2 -j /dev/sda6

其中的-j引數是以ext3格式化檔案系統,如果是3.0系統,則直接可以呼叫mkfs.ext3命令。

#mkfs.ext3 /dev/sda6

然後我們建立一個掛裝點

#mkdir /u01;chmod 777 /u01

授予使用者許可權

#chown oracle:dba /u01

可以用mount掛裝上

#mount -t ext3 /dev/sda6 /u01

如果想在啟動的時候自動掛裝,修改/etc/fstab

/dev/sda6 /u01 ext3 defaults 1 1

那麼我們用df就可以發現類似如下的資訊

/dev/sda6 17820972 2860164 14055548 17% /u01

4.2 Ocfs檔案系統上單機模擬與多節點共享安裝
OCFS是Oracle cluster file system,適合單節點與多節點的RAC安裝。在安裝前,我們需要從


下載最新的安裝包,並注意安裝包與當前核心是否匹配。如果是AS 2.1 enterprise核心下載的版本為。

ocfs-2.4.9-e-enterprise-1.0.10-1.i686.rpm

ocfs-support-1.0.10-1.i386.rpm

ocfs-tools-1.0.10-1.i386.rpm

所要求的核心版本為2.4.9-e.12或者以上

如果是AS3.0 smp核心下載的版本為

ocfs-2.4.21-EL-smp-1.0.10-1.i686.rpm

ocfs-support-1.0.10-1.i386.rpm

ocfs-tools-1.0.10-1.i386.rpm

我們可以用rpm來安裝軟體,如

#rpm -ivh ocfs*

可以用如下的命令檢視安裝是否成功

# rpm -qa | grep -i ocfs

檢查服務是否安裝成功

# chkconfig --list |grep ocfs

ocfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

配置/etc/ocfs.conf檔案,結果大致如下

# Ensure this file exists in /etc directory #

node_name = dbrac

ip_address = 10.0.29.162

ip_port = 7000

comm_voting = 1

然後執行ocfs_uid_gen -c獲得gid,之後,檔案變得如下所示

[root@dbrac root]# more /etc/ocfs.conf

node_name = dbrac

ip_address = 10.0.29.162

ip_port = 7000

comm_voting = 1

guid = 7F2311E5DABE42FBCD86000D56BAC410

如果換過網路卡之後,需要重新執行ocfs_uid_gen -c獲得gid

最後,載入ocfs啟動Oracle Cluster Manager,這個命令在一個節點上,安裝後只需要執行一次,在以後系統啟動的時候,將由ocfs服務自動從/etc/fstab中載入。

su - root

# /sbin/load_ocfs

注意:所有以上步驟,需要在所有節點上進行,如果是單節點,就在一個節點上執行即可。以下的操作,在一個節點上進行即可。

為了利用ocfs檔案系統,我們先劃分兩個分割槽來,一個用於CM的檢查檔案(quorum file),一個用於存放共享的資料庫包括控制檔案,資料檔案,日誌檔案,歸檔檔案,伺服器配置檔案(srvm configuration file)等。

# fdisk /dev/sdb

劃分一個/dev/sdb1與/dev/sdb5

然後建立一個掛裝點

mkdir /shared;chmod 777 /shared

mkdir /ocfs01;chmod 777 /ocfs01

現在,我們格式化該分割槽。

# mkfs.ocfs -b 128 -C -g 500 -u 500 -L ocfs01 -m /ocfs01 -p 0775 /dev/sdb5

其中的-g -u分別是組與使用者編號

各個引數意義如下

-F強制格式化現有的ocfs分割槽

-b 塊的大小(KB),必須是多個ORACLE塊大小,Oracle建議128K

-L 卷的標籤

-m 掛裝點 (本文 "/ocfs01")

-u根路徑的所有者的UID (本文是"oracle")

-g 根路徑所有者組的GID (本文是 "dba")

-p 根路徑的許可權許可

現在,我們可以掛裝該分割槽

#services ocfs start #如果已經啟動,就不必了

#mount -t ocfs /dev/sdb1 /shared

#mount -t ocfs /dev/sdb5 /ocfs01

也可以在/etc/fstab中增加如下條目,在系統啟動的時候,會自動載入

/dev/sda1 /shared ocfs _netdev 0 0

/dev/sda5 /cfs01 ocfs _netdev 0 0

我們用df就可以看到類似如下的資訊

/dev/sdb1 1026144 24288 1001856 3% /shared

/dev/sdb5 34529760 1153120 33376640 4% /ocfs01

以上所有步驟做完,建議重新啟動一次,讓多個節點確認到共享裝置。

4.3 Raw裸裝置
首先需要劃分一系列的分割槽,需要注意的是,每個裝置不能多於15個分割槽,Linux總共不能超過255個裸裝置。

裸裝置一般用於共享磁碟系統。可以用如下的方法掛裝

#su - root

raw /dev/raw/raw1 /dev/sda2 # Used for the Cluster Manager Quorum File

raw /dev/raw/raw2 /dev/sda3 # Used for the Shared Configuration file for srvctl

# /dev/sda4: Used for creating the Extended Partition which starts as /dev/sda5.

raw /dev/raw/raw3 /dev/sda5 # spfileorcl.ora

raw /dev/raw/raw4 /dev/sda6 # control01.ctl

raw /dev/raw/raw5 /dev/sda7 # control02.ctl

raw /dev/raw/raw6 /dev/sda8 # indx01.dbf

raw /dev/raw/raw7 /dev/sda9 # system01.dbf

raw /dev/raw/raw8 /dev/sda10 # temp01.dbf

raw /dev/raw/raw9 /dev/sda11 # tools01.dbf

raw /dev/raw/raw10 /dev/sda12 # undotbs01.dbf

raw /dev/raw/raw11 /dev/sda13 # undotbs02.dbf

raw /dev/raw/raw12 /dev/sda14 # undotbs03.dbf

raw /dev/raw/raw13 /dev/sda15 # users01.dbf

raw /dev/raw/raw14 /dev/sdb5 # redo01.log (Group# 1 Thread# 1)

raw /dev/raw/raw15 /dev/sdb6 # redo02.log (Group# 2 Thread# 1)

raw /dev/raw/raw16 /dev/sdb7 # redo03.log (Group# 3 Thread# 2)

raw /dev/raw/raw17 /dev/sdb8 # orcl_redo2_2.log (Group# 4 Thread# 2)

raw /dev/raw/raw18 /dev/sdb9 # orcl_redo3_1.log (Group# 5 Thread# 3)

raw /dev/raw/raw19 /dev/sdb10 # orcl_redo3_2.log (Group# 6 Thread# 3)

如果檢查連線,用如下命令

su - root

raw -qa

或者

more /dev/raw/raw1類似的方法檢查。

如果想在啟動的時候,自動掛載,請把以上的命令寫到/etc/rc.local中,或者編寫/etc/sysconfig下的rawdevices檔案,如

# more rawdevices

/dev/raw/raw1 /dev/sda2

/dev/raw/raw2 /dev/sda3

……

如果需要對裸裝置授權,可以執行如下指令碼,其中n表示裸裝置分割槽數目

su - root

for i in `seq 1 n`

do

chmod 660 /dev/raw/raw$i

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

done

再用如下的方法建立軟聯結,那麼就可以和檔案系統一樣使用裸裝置了。

su - oracle

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

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

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

……

注意:以上操作除了分割槽外,需要在每個節點完成

4.4 其它,如nfs檔案系統
注意啟動nfs,nfslock服務

Mount該檔案系統的方法如下

mount 10.0.29.152:/vol/vol1/fas250 /netapp nfs

rw,hard,nointr,tcp,noac,vers=3,timeo=600,rsize=32768,wsize=32768

也可以放到fstab中,與以上類似

其它的地方與ocfs類似,不再額外描述

第五章. 安裝OCM(Oracle Cluster Manager)
5.1生成一個CM管理檔案
如果是單節點檔案系統,可以用如下命令模擬

su - oracle

$dd if=/dev/zero of=/u01/oracle/oradata/rac/RacQuorumDisk bs=1024 count=1024

如果是多節點ocfs或raw裝置,可以同樣用dd生成相應的檔案,放到準備好的共享磁碟裝置上,大小1M即可。

5.2 安裝OCM管理軟體
1、如果是9201 for linux,先安裝9201 OCM,安裝選項的最後一項,然後升級到9204

2、如果是9204 for linux,直接選中9204 OCM安裝即可

3、如果在AS 3.0上安裝,請在安裝前進行如下操作



先連結gcc

su - root

mv /usr/bin/gcc /usr/bin/gcc323

ln -s /usr/bin/gcc296 /usr/bin/gcc

mv /usr/bin/g++ /usr/bin/g++323 # if g++ doesn't exist, then gcc-c++ was not installed

ln -s /usr/bin/g++296 /usr/bin/g++



然後打補丁3006854,可以去
下載補丁並參考補丁更多的資訊

su - root

# unzip p3006854_9204_LINUX.zip

Archive: p3006854_9204_LINUX.zip

creating: 3006854/

inflating: 3006854/rhel3_pre_install.sh

inflating: 3006854/README.txt

# cd 3006854

# sh rhel3_pre_install.sh

Applying patch...

Patch successfully applied



如果在本地X Win拒絕圖形介面,注意設定

$xhost +本機名或IP



在公共節點與私有節點輸入機器名稱,與/etc/hosts的內容一致,如果不添寫也可以,這個可以再配置

在需要我們輸入這個磁碟分割槽的時候, 我們輸入我們生成的檔名稱,如果不輸入也可以再配置

/u01/oracle/oradata/rac/RacQuorumDisk

5.3配置OCM檔案
1、cmcfg.ora配置檔案
[oracle@appc2 admin]$ cp cmcfg.ora.tmp cmcfg.ora

檢視配置檔案的內容,可以發現有如下內容

[oracle@appc2 admin]$ more cmcfg.ora

HeartBeat=15000

ClusterName=Oracle Cluster Manager, version 9i

PollInterval=1000

MissCount=210

PrivateNodeNames=dbrac

PublicNodeNames=dbrac

ServicePort=9998

#WatchdogSafetyMargin=5000

#WatchdogTimerMargin=60000

HostName=dbrac

CmDiskFile=/home/oracle/oradata/rac/RacQuorumDisk

因為我們不再用watchdog去檢測系統,而是用hangcheck-timer,所以,我們需要註釋Watchdog的兩行,增加如下一行

KernelModuleName=hangcheck-timer

以上的單節點RAC的一個例子,可以看到,在安裝介面要求輸入的節點名稱,檔名稱,都有對應的專案,這個因為是單節點,所有公用節點與私有節點都只有一個。

如果是多節點的RAC,公用節點與私有節點應當類似如下

PrivateNodeNames=dbrac1-eth1 dbrac2-eth1

PublicNodeNames=dbrac1 dbrac2

其中,私有節點是網路卡2配置的地址,用於兩臺節點直接的通訊

公用節點是網路卡1配置的地址,用於外部訪問資料庫。

2、ocmargs.ora配置檔案
註釋$ORACLE_HOME/oracm/admin/ocmargs.ora中包含watchdogd的行

more $ORACLE_HOME/oracm/admin/ocmargs.ora

# Sample configuration file $ORACLE_HOME/oracm/admin/ocmargs.ora

#watchdogd

oracm

norestart 1800

3、ocmstart.sh啟動檔案
註釋$ORACLE_HOME/oracm/bin/ocmstart.sh中的以下行

# watchdogd's default log file

# WATCHDOGD_LOG_FILE=$ORACLE_HOME/oracm/log/wdd.log

# watchdogd's default backup file

# WATCHDOGD_BAK_FILE=$ORACLE_HOME/oracm/log/wdd.log.bak

# Get arguments

# watchdogd_args=`grep '^watchdogd' $OCMARGS_FILE |

# sed -e 's+^watchdogd *++'`

# Check watchdogd's existance

# if watchdogd status | grep 'Watchdog daemon active' >/dev/null

# then

# echo 'ocmstart.sh: Error: watchdogd is already running'

# exit 1

# fi

# Backup the old watchdogd log

# if test -r $WATCHDOGD_LOG_FILE

# then

# mv $WATCHDOGD_LOG_FILE $WATCHDOGD_BAK_FILE

# fi

# Startup watchdogd

# echo watchdogd $watchdogd_args

# watchdogd $watchdogd_args

5.4啟動ocm
$ cd $ORACLE_HOME/oracm/bin

$ su

# ./ocmstart.sh

啟動完用ps -ef|grep oracm看一下有沒程式,如果沒有到$ORACLE_HOME/oracm/log目錄下查出錯資訊



第六章. 安裝Oracle軟體
6.1開啟RSH
在多節點上需要,如果在單節點就無所謂了,用於節點之間的通訊,只需要在一個節點上安裝Oracle軟體即可,開啟RSH之後還要注意iptables防火牆是否開啟,最好關閉該防火牆。

su - root

chkconfig rsh on

chkconfig rlogin on

service xinetd reload



配置遠端許可權

$ more /etc/hosts.equiv

+dbrac1 oracle

+dbrac2 oracle

+dbrac1-eth1 oracle

+dbrac2-eth2 oracle



測試RSH是否能正常工作,在節點1上檢視遠端節點的檔案內容

[oracle@dbrac1 admin]$ rsh dbrac2 cat /etc/hosts.equiv

dbrac1 oracle

dbrac2 oracle

dbrac1-eth1 oracle

dbrac2-eth1 oracle



如果有結果,證明正常,同樣,在節點2上檢視節點1的檔案內容,可以檢測節點2

6.2安裝軟體
如果rsh設定的沒有問題,只安裝一個節點即可,或者也可以安裝後複製的第二個節點。

軟體安裝過程不再多敘,有幾點需要注意



1、在安裝開始,注意選擇節點,並注意cluster元件是否被安裝,可以去掉多餘的元件,如OEM與HTTP SERVER



2、在AS2.1上的安裝應當沒有任何問題,在AS 3.0上安裝9201,如果在編譯階段有ins_oemagent.mk(補丁3119415固定),ins_ctx.mk(在9204的補丁中固定),都忽略,將在補丁中固定。



3、如果是先安裝9201並升級到9204,注意在升級的時候,先升級OUI,並再執行$ORACLE_HOME/bin下的runInstaller,如果是直接安裝9204的安裝程式,只要安裝即可。

執行9204升級程式之前,注意進行如下操作(這個是RAC升級特有的)。

su - oracle

cd $ORACLE_BASE/oui/bin/linux

ln -s libclntsh.so.9.0 libclntsh.so



4、在AS3.0上從9201升級到9204,如果遇到ins_oemagent.mk,也忽略,將在以下的補丁中固定。

補丁3119415與2617419補丁,固定以上的ins_oemagent.mk錯誤

su - oracle

$ cp p2617419_220_GENERIC.zip /tmp

$ cd /tmp

$ unzip p2617419_220_GENERIC.zip

在打3119415之前,需要確保fuser是可以用的,現在開始打該補丁

su - oracle

$ unzip p3119415_9204_LINUX.zip

$ cd 3119415

$ export PATH=$PATH:/tmp/OPatch

$ export PATH=$PATH:/sbin # 因為fuser在/sbin下

$ which opatch

/tmp/OPatch/opatch

$ opatch apply



5、最後注意只安裝,不建立資料庫

6.3初試化共享檔案
安裝完畢後建立配置檔案

su - root

# mkdir -p /var/opt/oracle

# touch /var/opt/oracle/srvConfig.loc

# chown oracle:dba /var/opt/oracle/srvConfig.loc

# chmod 755 /var/opt/oracle/srvConfig.loc



在srvConfig.loc中間新增srvconfig_loc引數如下:

srvconfig_loc=/u01/oracle/oradata/rac/srvConfig.dbf



建立srvConfig.dbf檔案。如果是共享裝置,需要建立到共享裝置上,如ocfs檔案系統或者是raw分割槽上,那麼上面的檔名將有一些差異。

su - oracle

$ touch srvConfig.dbf



初始化配置檔案

$ srvconfig -init

第七章. 建立資料庫
7.1準備引數如下
*.log_buffer=626688

*.compatible='9.2.0.0.0'

*.control_files='/u01/oracle/oradata/rac/control01.ctl','/u01/oracle/oradata/rac/control02.ctl','/u01/oracle/oradata/rac/control03.ctl'

*.core_dump_dest='/u01/oracle/admin/rac/cdump'

*.user_dump_dest='/u01/oracle/admin/rac/udump'

*.background_dump_dest='/u01/oracle/admin/rac/bdump'

*.db_block_size=8192

*.db_cache_size=250549376

*.db_file_multiblock_read_count=16

*.db_name='rac'

*.fast_start_mttr_target=300

*.hash_join_enabled=TRUE

*.job_queue_processes=2

*.large_pool_size=3145728

*.pga_aggregate_target=51200000

*.processes=100

*.remote_login_passwordfile='exclusive'

*.sga_max_size=600000000

*.shared_pool_size=31457280

*.timed_statistics=TRUE

*.undo_management='AUTO'

*.undo_retention=10800

*.session_cached_cursors=200

#注意以下的引數,是Cluster需要的引數

*.cluster_database = TRUE

*.cluster_database_instances = 2

raca.instance_name='raca'

racb.instance_name='racb'

raca.instance_number=1

racb.instance_number=2

*.service_names='rac'

raca.thread=1

racb.thread=2

raca.local_listener='(address=(protocol=tcp)(host=dbrac)(port=1521)) '

raca.remote_listener='(address=(protocol=tcp)(host=dbrac)(port=1522)) '

racb.local_listener='(address=(protocol=tcp)(host=dbrac)(port=1522)) '

racb.remote_listener='(address=(protocol=tcp)(host=dbrac)(port=1521)) '

raca.undo_tablespace=UNDOTBS1

racb.undo_tablespace=UNDOTBS2



注意這裡的local_listener與remote_listener,因為這裡是單節點模擬RAC的引數,如果是多節點,將配置遠端的名稱與埠,主要用於load_balance與failover。如果是多節點,可能的形式如下。

raca.local_listener='(address=(protocol=tcp)(host=dbrac1)(port=1521)) '

raca.remote_listener='(address=(protocol=tcp)(host=dbrac2)(port=1521)) '

racb.local_listener='(address=(protocol=tcp)(host=dbrac2)(port=1521)) '

racb.remote_listener='(address=(protocol=tcp)(host=dbrac1)(port=1521)) '



以上引數檔案可以放在共享裝置上讓多個節點例項共享,也可以在自己的節點的預設引數檔案中加入指向該共巷引數檔案的指標,如

ifile=/u01/oracle/ora920/dbs/init.ora

7.2 建立密碼檔案
如果不是單節點,每個節點都完成

$export ORACLE_SID=rac1

$ orapwd file=orapwrac1 password=piner entries=5

7.3建立資料庫
在一個節點上完成即可

執行root.sh。

啟動資料庫到nomount下

Sqlplus /nolog

SQL>connect / as sysdba

SQL>startup nomount pfile=file name

SQL>CREATE DATABASE rac

MAXINSTANCES 3

MAXLOGHISTORY 1

MAXLOGFILES 10

MAXLOGMEMBERS 3

MAXDATAFILES 100

DATAFILE '/u01/oracle/oradata/rac/system01.dbf' SIZE 250M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL

DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/oracle/oradata/rac/temp01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED

UNDO TABLESPACE "UNDOTBS1" DATAFILE '/u01/oracle/oradata/rac/undotbs1_01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED

CHARACTER SET ZHS16GBK

NATIONAL CHARACTER SET AL16UTF16

LOGFILE GROUP 1 ('/u01/oracle/oradata/rac/redo01.log') SIZE 102400K,

GROUP 2 ('/u01/oracle/oradata/rac/redo02.log') SIZE 102400K,

GROUP 3 ('/u01/oracle/oradata/rac/redo03.log') SIZE 102400K;

注意以上的檔案路徑,可能因為不同的共享裝置將有不同的路徑。如果是Raw裝置,請指定好檔案大小,不要設定AUTOEXTEND。

7.4 建立相應的資料字典
SQL>@?/rdbms/admin/catalog

SQL>@?/rdbms/admin/catproc

建立Cluster特有的檢視

SQL> @?/rdbms/admin/catclust.sql

以上操作,都在一個節點上完成。

可選如下元件

@?/rdbms/admin/catexp7.sql;

@?/rdbms/admin/catblock.sql;

@?/rdbms/admin/catoctk.sql;

@?/rdbms/admin/owminst.plb;





第八章. 啟動第二個節點例項
8.1 準備第二個節點的日誌與重做
在第一個節點上

SQL>shutdown immediate

SQL>startup mount pfile=file name

SQL> alter database add logfile thread 2

2 group 4 ('/u01/oracle/oradata/rac/redo04.log') size 10240K,

3 group 5 ('/u01/oracle/oradata/rac/redo05.log') size 10240K,

4 group 6 ('/u01/oracle/oradata/rac/redo06.log') size 10240k;

SQL>alter database open;

SQL> alter database enable public thread 2;

SQL> create undo tablespace undotbs2 datafile

2 '/u01/oracle/oradata/rac/undotbs2_01.dbf' size 200m;

Tablespace created.

8.2 啟動第二個例項
如果是單節點,再開啟一個連線終端

su - oracle

$export ORACLE_SID=rac2

$ sqlplus "/ as sysdba"

SQL>startup pfile=file name

這裡的pfile就是共享的那個pfile

如果是多節點,到另外一個節點,執行以上同樣的操作

8.3 驗證RAC
SQL> select THREAD#,STATUS,ENABLED from gv$thread;

THREAD# STATUS ENABLED

---------- ------ --------

1 OPEN PUBLIC

2 OPEN PUBLIC

1 OPEN PUBLIC

2 OPEN PUBLIC

SQL> select INSTANCE_NUMBER,INSTANCE_NUMBER,STATUS,HOST_NAME from gv$instance;

INSTANCE_NUMBER INSTANCE_NUMBER STATUS HOST_NAME

--------------- --------------- ------------ ------------------

1 1 OPEN dbrac1

2 2 OPEN dbrac2

第九章. 測試、使用RAC
9.1監聽的配置
LISTENER1 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

)

)

LISTENER2 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = dbrac)(PORT = 1522))

)

)

)

以上是單節點模擬RAC的配置,兩個例項採用不同的埠來模擬,如果是多節點的RAC,每個節點只要配置自己相應的監聽即可。

啟動監聽,當看到狀態類似如下時,表示正確,否則,需要檢查每個例項的local_listener與remote_listener引數。

$ lsnrctl status

LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 29-MAY-2004 10:38:08

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.168.205)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias LISTENER

Version TNSLSNR for Linux: Version 9.2.0.4.0 - Production

Start Date 25-MAY-2004 01:27:14

Uptime 4 days 9 hr. 10 min. 54 sec

Trace Level off

Security OFF

SNMP OFF

Listener Parameter File /u01/oracle//ora920/network/admin/listener.ora

Listener Log File /u01/oracle//ora920/network/log/listener.log

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.168.205)(PORT=1521)))

Services Summary...

Service "rac" has 2 instance(s).

Instance "rac1", status READY, has 1 handler(s) for this service...

Instance "rac2", status READY, has 1 handler(s) for this service...

The command completed successfully

9.2本地名稱的配置
rac=

(description=

(load_balance=on)

(failover=on)

(address_list=

(address=(protocol=tcp)(host=dbrac)(port=1521))

(address=(protocol=tcp)(host=dbrac)(port=1522)))

(connect_data=

(service_name=rac)))

rac1=

(description=

(address=(protocol=tcp)(host=dbrac)(port=1521))

(connect_data=

(service_name=rac)

(instance_name=rac1)))

rac2=

(description=

(address=(protocol=tcp)(host=dbrac)(port=1522))

(connect_data=

(service_name=rac)

(instance_name=rac2)))

以上是對一個節點的RAC的配置,如果是多個節點,只需要修改主機名與埠即可

9.3 負載均衡測試
[oracle@dbtest admin]$ more test.sh

#!/bin/sh

sqlplus "test/test@rac" <
select instance_name from v$instance;

exit

EOF

[oracle@dbtest admin]$ ./test.sh

SQL*Plus: Release 9.2.0.4.0 - Production on Sat May 29 10:50:08 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

SQL>

INSTANCE_NAME

----------------

rac2

[oracle@dbtest admin]$ ./test.sh

SQL*Plus: Release 9.2.0.4.0 - Production on Sat May 29 10:50:08 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

SQL>

INSTANCE_NAME

----------------

rac1

9.4失敗切換(failover)測試
需要修改tnsnames.ora為如下形式

rac=

(description=

# (enable=broken)

(load_balance=on)

(failover=on)

(address_list=

(address=(protocol=tcp)(host=dbtest)(port=1521))

(address=(protocol=tcp)(host=dbtest)(port=1522)))

(connect_data=

(service_name=rac)

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

)

)

)

注意其中的failover_mode

SQL> connect test/test@rac

SQL> select INSTANCE_NUMBER,INSTANCE_NAME from v$instance;

INSTANCE_NUMBER INSTANCE_NAME

--------------- ----------------

2 rac2

如果現在關閉例項rac2,再執行如上語句,可以發現

SQL> select INSTANCE_NUMBER,INSTANCE_NAME from v$instance;

INSTANCE_NUMBER INSTANCE_NAME

--------------- ----------------

1 rac1

已經變為rac1

9.5 rac環境下修改為歸檔模式
1.停止所有node

2.修改init檔案*.cluster_database=false

3.在一個node做修改

startup mount;

alter database archivelog ;

SQL> archive log list;

SQL>alter database open;

4.還原 *.cluster_database=true

5.啟動所有node





第十章.從單節點資料庫變為RAC
首先假定資料庫軟體的Cluster已經安裝,OCM已經安裝配置。

10.1修改引數檔案
增加如類似如下的內容

*.cluster_database = TRUE

*.cluster_database_instances = 2

*.undo_management=AUTO

.undo_tablespace=undotbs

.instance_name=RAC1

.instance_number=1

.thread=1

.local_listener=LISTENER_RAC1

.remote_listener=LISTENER_RAC2

10.2建立cluster檢視
利用$ORACLE_HOME/rdbms/admin/catclust.sql

10.3重新建立控制檔案
把maxinstances 從1變為定義的節點數目

$ sqlplus /nolog

SQL> connect / as sysdba

SQL> startup mount

SQL> alter database backup controlfile to trace;

10.4建立第二個例項的redo與undo
啟動第一個例項

SQL>alter database

add logfile thread 2

group 3 ('/dev/RAC/redo2_01_100.dbf') size 100M,

group 4 ('/dev/RAC/redo2_02_100.dbf') size 100M;

alter database enable public thread 2;

SQL>CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE

'/dev/RAC/undotbs_02_210.dbf' SIZE 200M ;

最後,在第二個節點上安裝軟體、設定環境變數、啟動例項

小結
1、 描述了RAC的執行原理與執行機制

2、 描述了RAC for Linux的必要條件,如核心要求如軟體要求

3、 描述各種儲存裝置的與多種檔案系統,如Raw,ocfs等

4、 描述了Cluster管理軟體在不同平臺上的安裝方法

5、 描述了資料庫軟體在不同平臺上的安裝方法

6、 描述了手工建立RAC資料庫並啟動多個資料庫的方法

7、 介紹了RAC的一些特徵與管理方法

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84824/,如需轉載,請註明出處,否則將追究法律責任。

相關文章