Oracle10g RAC for Linux配置全過程(zt)

tolywang發表於2008-01-08
本文是一篇在Redhat Advance Server 3.0上安裝和配置Oracle10g RAC的文件,不僅僅是個安裝試驗,而是一個生產系統的實際佈置過程,所以包括RAC安裝,本地監聽配置,JDBC連線串書寫,CRS服務重新安裝, VIP地址修改等等,相信比一般的安裝教程更有應用上的意思。[@more@]


1、安裝環境
硬體平臺:HP 380 PC伺服器2臺。
主機 Hostname IP VIP VIP名稱
Node1 dbtest1 192.168.100.201 10.96.100.103 db-vip01
Node2 dbtest2 192.168.100.203 10.96.100.104 db-vip02

作業系統:RedHat Enterprise Linux 3.0 Update 5。
磁碟陣列:HP ms1000。
資料庫:Oracle10g 10.1.0.3。
2、安裝 Linux
所需核心:
2.4.21-4.EL 或更高版本
驗證核心版本:
# uname -r
2.4.21-32.ELsmp
其他所需程式包的版本(或更高版本):
make-3.79
binutils-2.11.90.0.8-12
gcc-3.2.3-2
compat-db-4.0.14.5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
openmotif21-2.1.30-8
setarch-1.3-1
驗證已安裝的程式包:
# rpm –qa make binutils gcc compat-db compat-gcc compat-gcc-c++ compat-libstdc++
compat-libstdc++-devel openmotif setarch
make-3.79.1-17
binutils-2.14.90.0.4-26
gcc-3.2.3-20
compat-db-4.0.14-5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
openmotif-2.2.2-16
setarch-1.3-1
3、為 Oracle 配置 Linux
建立 Oracle 組和使用者帳戶
接下來我們將建立用於安裝和維護 Oracle 10g 軟體的 Linux 組和使用者帳戶。 使用者帳戶名是‘oracle’,組是‘oinstall’和‘dba’。 在drpdb01上以 root 使用者身份執行以下命令:
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
使用者 ID 和組 ID 在所有叢集主機上必須相同。 使用從 id oracle 命令得到的資訊,在drpdb02上建立 Oracle 組和使用者帳戶:
# /usr/sbin/groupadd -g 500 oinstall
# /usr/sbin/groupadd -g 501 dba
# /usr/sbin/useradd -m -u 500 -g oinstall -G dba oracle
# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
設定 oracle 帳戶的口令:
# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd:all authentication tokens updated successfully.
建立掛載點

現在建立儲存 Oracle 10g 軟體的掛載點。
以 root 使用者身份執行以下命令:
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
配置核心引數

以 root 使用者身份登入並在每個主機上配置 Linux 核心引數。
cat >> /etc/sysctl.conf >>EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.threads-max = 131072
fs.file-max = 131072
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
EOF
/sbin/sysctl -p
為 oracle 使用者設定 Shell 限制

Oracle 建議對每個 Linux 帳戶可以使用的程式數量和開啟檔案的數量設定限制。

cat >> /etc/security/limits.conf >>EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF

cat >> /etc/pam.d/login >>EOF
session required /lib/security/pam_limits.so
EOF

cat >> /etc/profile >>EOF
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF

cat >> /etc/csh.login >>EOF
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF
配置 Hangcheck 計時器
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
cat >> /etc/rc.d/rc.local >>EOF
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
EOF
配置 /etc/hosts
有些 Linux 發行版本將主機名與回送地址 (127.0.0.1) 相關聯。 如果出現這種情況,則從回送地址中刪除主機名,本次安裝已經修改。
用於此指南的 /etc/hosts 檔案:
127.0.0.1 localhost.localdomain localhost
192.168.100.201 dbtest1 dbtest1
192.168.100.203 dbtest2 dbtest2
192.168.200.1 dbtest1-priv dbtest1-priv
192.168.200.2 dbtest2-priv dbtest2-priv
192.168.100.202 dbtest1-vip dbtest1-vip
192.168.100.204 dbtest2-vip dbtest2-vip
~為使用者等效性配置SSH
在 安裝 Oracle RAC 10g 期間,OUI 需要把檔案複製到叢集中的其他主機上並在其上執行程式。 為了允許 OUI 完成此任務,必須配置 SSH 以啟用使用者等效性。 用 SSH 建立使用者等效性就提供了一種在叢集中其他主機上覆制檔案和執行程式時不需要口令提示的安全方式。
第 一步是生成 SSH 的公共金鑰和專用金鑰。 SSH 協議有兩個版本;版本 1 使用 RSA,版本 2 使用 DSA,因此我們將建立這兩種型別的金鑰,以確保 SSH 能夠使用任一版本。 ssh-keygen 程式將根據傳遞給它的引數生成任一型別的公共金鑰和專用金鑰。
當您執行 ssh-keygen 時,將提示您輸入一個用於儲存金鑰的位置。 當提示時只需按 Enter 接受預設值。隨後將提示您輸入一個口令短語。 輸入您能記住的口令,然後再次輸入該口令進行確認。 當您完成以下步驟後,在 ~/.ssh 目錄中將會有四個檔案: id_rsa、id_rsa.pub、id_dsa 和 id_dsa.pub。 id_rsa 和 id_dsa 檔案是您的專用金鑰,千萬不要告訴任何人。 id_rsa.pub 和 id_dsa.pub 檔案是您的公共金鑰,必須將其複製到叢集中其他每個主機上。
在每個主機上,以 oracle 使用者身份登入:
mkdir ~/.ssh
chmod 755 ~/.ssh
/usr/bin/ssh-keygen -t rsa
分別剪下和貼上以下各行:
/usr/bin/ssh-keygen -t dsa
注意:上面步驟要兩臺主機都完成才可以執行下面步驟。
現 在,必須將每個主機上的公共金鑰檔案 id_rsa.pub 和 id_dsa.pub 的內容複製到其他每個主機的 ~/.ssh/authorized_keys 檔案中。 使用 ssh 將每個檔案的內容複製到 ~/.ssh/authorized_keys 檔案。 請注意,當您使用 ssh 第一次訪問遠端主機時,其 RSA 金鑰將是未知的,從而將提示您確認是否希望連線該主機。 SSH 將記錄該遠端主機的 RSA 金鑰,並在以後連線該主機時不再做出相關提示。
在dbtest1上,以 oracle 使用者身份登入(複製本地帳戶的金鑰,以便連線本地主機的 ssh 能夠起作用):
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle@dbtest2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(如果您要剪下和貼上這些命令,則分別執行它們。 SSH 每次會提示輸入 oracle 的口令,如果同時貼上這些命令,則第一個命令在提示輸入口令之前重新整理輸入緩衝區,從而導致其他命令將會丟失。)
ssh oracle@dbtest2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 644 ~/.ssh/authorized_keys

現在對第二個主機做同樣的處理。 請注意,這次 SSH 會提示您輸入在建立金鑰時所使用的口令短語而非 oracle 的口令。 這是因為第一個主機 (ds1) 現在知道了第二個主機的公共金鑰,而 SSH 現在使用的是一種不同的認證協議。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle@dbtest1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh oracle@dbtest1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 644 ~/.ssh/authorized_keys

建立使用者等效性
以 oracle 使用者身份在將要安裝 Oracle 10g 軟體的節點 (dbtest1) 上:
exec /usr/bin/ssh-agent $SHELL
/usr/bin/ssh-add
(請注意,使用者等效性僅為當前會話建立。 如果您切換到其他會話或登出並重新登入,則必須再次執行 ssh-agent 和 ssh-add 才能重新建立使用者等效性。)
測試連通性
透過在遠端叢集主機上執行諸如 date 等簡單命令來驗證使用者等效性:
在每臺主機(dbtest1,dbtest2)執行下面命令
$ ssh dbtest1 date
$ ssh dbtest1-priv date
$ ssh dbtest2 date
$ ssh dbtest2-priv date
測試每個方向上所有伺服器的連通性是非常重要的。
4 、準備共享磁碟
Oracle 叢集檔案系統 (OCFS) 第 1 版
OCFS 第 1 版是原始裝置的一個優秀替代品。 它不僅更易於管理和維護,而且克服了 255 個原始裝置的限制。 但是,它並不是一個通用叢集檔案系統。 它只能用於儲存以下型別的檔案:
· Oracle 資料檔案
· 聯機重做日誌
· 歸檔重做日誌
· 控制檔案
· Spfile

需要安裝的軟體如下:
ocfs-support-1.1.2-1.i386.rpm
ocfs-tools-1.1.2-1.i386.rpm
ocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm
安裝 OCFS
# rpm -Uvh ocfs-support-1.1.2-1.i386.rpm
ocfs-tools-1.1.2-1.i386.rpm
ocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm
Preparing... ########################################### [100%]
1:ocfs-support ########################################### [ 33%]
2:ocfs-tools ########################################### [67%]
3:ocfs-2.4.21-EL-smp ########################################### [100%]
Linking OCFS module into the module path [ OK ]
配置 OCFS
以 root 使用者身份執行 ocfstool:
# ocfstool
選擇 Tasks → Generate Config
選擇與 RAC 專用網路相對應的介面
單擊 OK 生成 /etc/ocfs.conf 檔案,然後退出 ocfstool
對叢集中的每個節點重複這些操作。


在每個節點上裝載 OCFS:
# depmod -a
# /sbin/load_ocfs
/sbin/insmod ocfs node_name=ds1.orademo.org ip_address=192.168.100.51
cs=1795 guid=2FB60EDD8B872FC4216C00010324C023 comm_voting=1 ip_port=7000
Using /lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o
Warning:kernel-module version mismatch
/lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o was compiled for kernel version 2.4.21-4.ELsmp
while this kernel is version 2.4.21-15.0.2.ELsmp
Warning:loading /lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o will taint the kernel:forced load
See for information about tainted modules
Module ocfs loaded, with warnings
不必擔心關於不同核心版本和損壞模組的警告。 這僅僅是模組實用工具讓我們瞭解該 ocfs 模組是為 Linux 核心較早版本編譯的。 只要我們的核心版本與該 ocfs 模組相同或者比它更新,ocfs 就會正常工作。
為 OCFS 檔案系統建立一個掛載點:
mkdir /u02/oradata
建立 OCFS 檔案系統:
mkfs.ocfs -b 128 -L /u02/oradata -m /u02/oradata -p 0775 -u oracle -g oinstall /dev/sda7 –F

在系統啟動時自動掛載 OCFS 檔案系統,可以在 /etc/fstab 中新增以下各行:
/u02/oradata /u02/oradata ocfs _netdev 0 0

為資料庫檔案建立目錄:
chown oracle:oinstall /u02/oradata
chmod 775 /u02/oradata
為CRS 共享檔案(Oracle Cluster Registry 和 CRS voting disk)建立裸裝置
1.盤陣分割槽
fdisk /dev/sda
建立下列分割槽:
/dev/sda1 200M
/dev/sda2 200M
/dev/sda3 200M
/dev/sda5 200M
/dev/sda6 200M
/dev/sda7 剩餘全部空間
2.在其他主機上執行 partprobe 使核心與所做的更改同步:
# partprobe
3.將以下各行新增到每個叢集節點上的 /etc/sysconfig/rawdevices:
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2
/dev/raw/raw3 /dev/sdb3
/dev/raw/raw4 /dev/sdc5
/dev/raw/raw5 /dev/sdb6
4.為每個節點上的 CRS 原始裝置設定所有權和許可權。 這些檔案的所有權和許可權必須按照所示內容進行準確地設定(安裝指南和版本說明都是不正確的)。如果不這樣做,則導致 CRS 安裝失敗。 如果需要在 CRS 安裝失敗後進行清理,請參見 MetaLink 說明:239998.1。
chown root:oinstall /dev/raw/raw[12]
chmod 660 /dev/raw/raw[12]
chown oracle:oinstall /dev/raw/raw3
chmod 660 /dev/raw/raw3
chown oracle:oinstall /dev/raw/raw[56]
chmod 660 /dev/raw/raw[56]
5. 重新啟動原始裝置服務。
/sbin/service rawdevices restart
6. 以 root 使用者身份建立用於符號連結的目錄。
mkdir -p /u02/oracrs
chown -R oracle:oinstall /u02/oracrs
chmod -R 775 /u02/oracrs
7. 以 oracle 使用者身份建立符號連結。
ln -s /dev/raw/raw1 /u02/oracrs/ocr.crs
ln -s /dev/raw/raw2 /u02/oracrs/ocr1.crs
ln -s /dev/raw/raw3 /u02/oracrs/vote.crs
ln -s /dev/raw/raw4 /u02/oracrs/vote1.crs
ln -s /dev/raw/raw5 /u02/oracrs/vote2.crs
現在已經準備就緒,可以安裝 Oracle CRS、安裝 Oracle 資料庫軟體並建立 Oracle RAC 資料庫了。
5 、安裝 Oracle 軟體
建立使用者等效性
exec /usr/bin/ssh-agent $SHELL
/usr/bin/ssh-add

設定 ORACLE_BASE 和 ORACLE_HOME 環境變數:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/crs_1
安裝 Oracle CRS
在 安裝 Oracle RAC 10g 資料庫軟體之前,必須先安裝 CRS。 CRS 需要在叢集的所有主機中共享兩個檔案: Oracle Cluster Registry (100MB) 和 CRS Voting Disk (20MB)。 這些檔案可能儲存在原始裝置或叢集檔案系統上。Oracle ASM 不能用於這些檔案,這是因為 ASM 依賴於 CRS 所提供的服務。
掛載包含 CRS 介質的 CD 或檔案系統,並執行 runInstaller。 雖然在安裝 Oracle 10g 期間不再需要更換 CD,但是建議您在使用 CD 時從Oracle目錄中而不是從 CD 掛載點來完成這些工作。
1. Welcome;單擊 Next
2. Specify Inventory Directory and Credentials — 預設值應該就是正確的;確保 inventory 目錄位於 ORACLE_BASE 目錄中(例如: /u01/app/oracle/oraInventory)並且作業系統組是“oinstall”,在安裝節點 (dbtest1) 上執行 orainstRoot.sh(確保在 /etc/hosts 中而不僅僅是在 DNS 中配置了您的主機)
3. Specify File Locations — 確認預設值後繼續
4. Language Selection — 確認預設值後繼續
5. Cluster Configuration — 輸入叢集名(或接受預設的“crs”);

6.Private Interconnect Enforcement — 為每個介面指定介面型別(公共、專用或“不使用”)

7. Oracle Cluster Registry — 在 clusterSpecify OCR Location 中(/u02/oracrs/ocr.crs)為每個節點輸入公共節點名和專用節點名
8. Voting Disk — 輸入 voting disk 名(例如: /u02/oracrs/vote.crs)
9. Summary — 在出現提示時單擊 Install,從安裝節點開始,每次在一個節點上執行orainstRoot.sh和Oracle CRS 主目錄的
/u01/app/oracle/product/10.2.0/crs_1/root.sh。 不要同時執行這些指令碼。 等一個指令碼結束後再啟動另一個。
CRS 安裝結束
從 $ORACLE_BASE/product/10.2.0/crs_1/bin 目錄中執行 olsnodes 驗證安裝已成功;例如:
$ cd $ORACLE_BASE/product/10.2.0/crs_1/bin
$ olsnodes
dbtest01
dbtest02
表明 CRS 已安裝並執行;現在可以安裝 Oracle RAC 軟體的其餘部分了。
安裝 Oracle 資料庫軟體
設定 ORACLE_BASE 和 ORACLE_HOME 環境變數:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
在 以 root 使用者身份登入時,從安裝節點開始,每次在一個主機上執行 Oracle 資料庫主目錄/u01/app/oracle/product/10.2.0/db_1/root.sh中的 root.sh。 不要同時執行這些指令碼。 等一個指令碼結束後再啟動另一個。
在安裝節點上執行 root.sh 指令碼後,因為eth0被設為public,而該網路卡的地址為私有地址,所以不會出現虛擬 IP 配置助手介面,需要手工啟動VIPCA。
$./u01/app/oracle/product/10.2.0/crs_1/bin/vipca
· Welcome — 單擊 Next
· Network Interfaces — 只選擇用於公共網路的介面(在本示例中為 eth0)。 叢集中所有主機上的這個介面必須相同。 (如果在安裝主機上該介面是 eth0,則在叢集中所有其他主機上都必須是 eth0。)
· Virtual IPs for cluster nodes — 輸入在 DNS 中所配置的每個主機的虛擬 IP 別名(主機名)和虛擬 IP 地址。

Summary — 單擊 Finish。 VIP 配置助手建立並啟動 VIP、GSD 和 ONS 應用程式資源

· Configuration Results — 檢查結果並單擊 Exit。 在其他節點上依次執行 root.sh。
· 安裝結束
建立 Oracle RAC 資料庫
DBCA — 叢集檔案系統
在以 oracle 使用者身份登入時,設定環境並執行 dbca。
在兩臺主機分別修改下列環境變數:
$ export ORACLE_SID = dbdem1
$ export ORACLE_SID = dbdem2
在dbtest1上執行:
$ dbca
1. Welcome — 選擇“Oracle Real Application Clusters database”
2. Operations — 建立資料庫
3. Node Selection — 單擊 Select All(drpdb01 和 drpdb02)
4. Database Templates — 通用
5. Database Identification — 全域性資料庫名: dbtest
6. SID prefix-SID字首:dbtest
7. Management Options — 利用 Enterprise Manager 配置資料庫;使用資料庫控制進行資料庫管理
8. Database Credentials — 為所有帳戶使用相同的口令;輸入口令並再次確認
9. Storage Options — 叢集檔案系統
10. Database File Locations — 為所有資料庫檔案使用相同的位置 (/u02/oradata)
11. Recovery Configuration — 單擊 Next
12. Database Content — 示例模式
13. Initialization Parameters — 記憶體、典型
14. Database Storage — 單擊 Next
15. Create Options — 選擇“Create Database”
16. Summary — 檢查總結資訊並單擊 OK
安裝完成。
安裝完成後配置Oracle使用者的環境變數如下:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_CRS_HOME=$ORACLE_BASE/product/10.2.0/CRS_1
export ORACLE_SID=drpzbdb
分別在dbtest1,dbtest2的.bash_profile增加如下語句:
export ORACLE_SID=dbtest1
export ORACLE_SID=dbtest2
設定自動啟動:

編輯 /etc/oratab 將例項對應的 N 改為 Y
編輯 $oracle_home/bin 的dbshut dbhome dbstart 指令碼 設定
將 ORATAB設定為/etc/oratab

驗證RAC
SQL>SELECT * FROM V$ACTIVE_INSTANCES;
INST_NUMBER INST_NAME
----------- -----------------
1 dbtest1:dbtest1
2 dbtest2:dbtest2

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 dbtest1
2 2 OPEN dbtest2
失敗切換(failover)測試
修改tnsnames.ora檔案如下:
dbtest =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(failover=on)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbtest)
)
)

SQL> connect test/test@dbtest
SQL> select INSTANCE_NUMBER,INSTANCE_NAME from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
2 dbtest2
如果現在關閉例項dbtest2,再執行如上語句,可以發現
SQL> select INSTANCE_NUMBER,INSTANCE_NAME from v$instance;
Warning: connection was lost and re-established
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
1 dbtest1
已經變為dbtest1

dbtest1的listener.ora檔案內容如下:
LISTENER_dbtest1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.202)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.201)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
dbtest2的listener.ora檔案內容如下:
LISTENER_dbtest2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.204)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.203)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
tnsnames.ora檔案內容如下:
dbtest =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbtest)
)
)

LISTENERS_dbtest =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest2-vip)(PORT = 1521))
)

dbtest2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbtest)
(INSTANCE_NAME = dbtest2)
)
)

dbtest1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbtest1-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbtest)
(INSTANCE_NAME = dbtest1)
)
)
#dbtest1的local監聽配置如下:
LOCAL_dbtest =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.201)(PORT = 1521))
)
#dbtest2的local監聽配置如下:
LOCAL_dbtest =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.203)(PORT = 1521))
)
修改完本地監聽,執行:
alter system set local_listener='LOCAL_dbtest' scope=both;
重啟監聽。
客戶端tnsnames.ora檔案需要如下配置:
dbtest =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.202)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.204)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbtest)
)
)
注意:HOST=VIP地址。

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

相關文章