Redhat Linux AS3 上安装Oracle10g RAC 配置全过程

本文是一篇在Redhat Advance Server 3.0上安装和配置Oracle10g RAC的文档,不仅仅是个安装试验,而是一个生产系统的实际布置过程,所以包括RAC安装,本地监听配置,JDBC连接串书写,CRS服务重新安装,VIP地址修改等等,相信比一般的安装教程更有应用上的意思。

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 �Cqa 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 http://www.tux.org/lkml/#export-tainted 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 �CF

在系统启动时自动挂载 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地址。

你可能感兴趣的:(oracle,linux,职场,休闲)