Oracle 10g RAC
Linux AS 5.3
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LOCAL_MXDELL
remote_listener string LISTENERS_MXDELL
3 个 Server中的tnsnames.ora文件:
LISTENERS_MXDELL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip02)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip03)(PORT = 1521))
)
------------------------------------
Ap程序 客户端连接 (181,182对应1,2节点)
MXRAC =
(DESCRIPTION =
(FAILOVER=ON)
(LOAD_BALANCE = OFF)
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.13.67.181)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.13.67.182)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = mxdell)
(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))
)
)
Web Report客户端连接(只是连接节点3, 173是对应节点3的实体IP) :
MX_RAC3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.13.67.173)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mxdell)
(INSTANCE_NAME = mxdell3)
)
)
这种情况下AP程序客户端也会连接到节点3 上, Web访问导致负荷很高,影响到ap的运行, 虽然AP客户端只是设置了1,2 节点的vip , 可能由于
Server端的 remote_listener = LISTENERS_MXDELL 中包含了节点3的vip, 所以ap 还是会连接到第 3 个节点 。
问题 :
想彻底分开AP程序及WEB程序, 让AP 访问前两个节点,还能负载均衡,并不能连接到节点3 , 让Web单独访问节点3 ,不影响AP的运行。
我的做法是 :
将 3 个DB Server中的tnsnames.ora文件修改为 (注释掉节点3):
LISTENERS_MXDELL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip03)(PORT = 1521))
# (ADDRESS = (PROTOCOL = TCP)(HOST = mxvip03)(PORT = 1521))
)
由于不能关闭数据库, 而remote_listener 又是spfile中的参数, 所以想知道这样修改后是否马上生效了,是否Ap界面程序就连接不到节点3了 ?
还是说需要 alter system set remote_listener = LISTENERS_MXDELL ; 让参数refresh一下 ?
衍生一个问题 : remote_listener = LISTENERS_MXDELL , 而 LISTENERS_MXDELL 是在tnsnames.ora 中设置的, 那么开启数据库的
时候, 读入内存的应该是 LISTENERS_MXDELL 这个字符, 而不会是 LISTENERS_MXDELL 在tnsnames.ora 中对应的ip,port等实质的内容 ?
[ 本帖最后由 tolywang 于 2009-12-16 12:01 编辑 ]
Linux AS 5.3
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LOCAL_MXDELL
remote_listener string LISTENERS_MXDELL
3 个 Server中的tnsnames.ora文件:
LISTENERS_MXDELL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip02)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip03)(PORT = 1521))
)
------------------------------------
Ap程序 客户端连接 (181,182对应1,2节点)
MXRAC =
(DESCRIPTION =
(FAILOVER=ON)
(LOAD_BALANCE = OFF)
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.13.67.181)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.13.67.182)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = mxdell)
(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))
)
)
Web Report客户端连接(只是连接节点3, 173是对应节点3的实体IP) :
MX_RAC3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.13.67.173)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mxdell)
(INSTANCE_NAME = mxdell3)
)
)
这种情况下AP程序客户端也会连接到节点3 上, Web访问导致负荷很高,影响到ap的运行, 虽然AP客户端只是设置了1,2 节点的vip , 可能由于
Server端的 remote_listener = LISTENERS_MXDELL 中包含了节点3的vip, 所以ap 还是会连接到第 3 个节点 。
问题 :
想彻底分开AP程序及WEB程序, 让AP 访问前两个节点,还能负载均衡,并不能连接到节点3 , 让Web单独访问节点3 ,不影响AP的运行。
我的做法是 :
将 3 个DB Server中的tnsnames.ora文件修改为 (注释掉节点3):
LISTENERS_MXDELL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = mxvip03)(PORT = 1521))
# (ADDRESS = (PROTOCOL = TCP)(HOST = mxvip03)(PORT = 1521))
)
由于不能关闭数据库, 而remote_listener 又是spfile中的参数, 所以想知道这样修改后是否马上生效了,是否Ap界面程序就连接不到节点3了 ?
还是说需要 alter system set remote_listener = LISTENERS_MXDELL ; 让参数refresh一下 ?
衍生一个问题 : remote_listener = LISTENERS_MXDELL , 而 LISTENERS_MXDELL 是在tnsnames.ora 中设置的, 那么开启数据库的
时候, 读入内存的应该是 LISTENERS_MXDELL 这个字符, 而不会是 LISTENERS_MXDELL 在tnsnames.ora 中对应的ip,port等实质的内容 ?
[ 本帖最后由 tolywang 于 2009-12-16 12:01 编辑 ]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-622662/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-622662/