guyeh 发表于 2013-08-27 17:30

oracle 11g rac 修改监听端口号

本帖最后由 guyeh 于 2013-08-27 17:33 编辑

求助:生产RAC环境上有三个实例,现要修改其中一个实例的监听端口号,同事不影响其他实例的业务。从网上找到的资料进行了如下操作未成功,请大侠们指点,生产环境不敢轻易处理。

SQL> show parameter local
NAME                                 TYPE      VALUE
------------------------------------ ----------- ------------------------------
local_listener                     string      (DESCRIPTION=(ADDRESS_LIST=(AD
                                                 DRESS=(PROTOCOL=TCP)(HOST=10.1
                                                 72.19.4)(PORT=1521))))
log_archive_local_first            boolean   TRUE
parallel_force_local               boolean   FALSE
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.172.19.4)(PORT=1522))))' scope =both sid='rac1';
System altered.
SQL>alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.172.19.2)(PORT=1522))))' scope =both sid='rac2';
System altered.
SQL> alter system register;
System altered.

$ ls srvctl
srvctl
$ pwd
/u01/app/oracle/product/11.2/bin
$ ./srvctl stop listener -n rac1
$ ./srvctl stop listener -n rac2
$ ./srvctl start listener -n rac1
$ ./srvctl start listener -n rac2

lsnrctl status检查没有失败的

监听文件的内容
$ cat listener.ora
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))            # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON            # line added by Agent

系统环境:redhat 6.2 64bit+oracle11g rac

www_xylove 发表于 2013-08-27 22:01

在listener.ora文件里配置新的监听端口,列如:1522,1523等,和原来的监听端口1521不冲突
举例:

1521端口:
在listener.ora文件里:
LISTENER =
(DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = user-PC)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
)


1522端口:
LISTENER1 =
(DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = user-PC)(PORT = 1522))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
)

1523端口:
LISTENER2 =
(DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = user-PC)(PORT = 1523))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
)

这样就实现了不同的监听端口给不同的应用连接使用。

guyeh 发表于 2013-08-28 10:47

回复 2# www_xylove


    listener.ora中不用指定端口对应的实例名吗?监听程序工作的时候怎么区分哪个实例是1522端口,而其他实例是1521端口呢

    我现在对这个文件中该怎么写有点迷糊。:mrgreen:

www_xylove 发表于 2013-08-28 13:04

你可以在listener.ora文件添加SID_LIST_LISTENER2区分实例名称

guyeh 发表于 2013-09-02 17:15

我新建了一个监听,
srvctl add listener -l NEW_XDRAC_LISTENER -o $ORACLE_HOME -p 1600 -k 1
srvctl start listener -l NEW_XDRAC_LISTENER
在listener.ora中添加了如下内容
SID_LIST_NEW_XDRAC_LISTENER =
(SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = URPJW)
      (ORACLE_HOME = /u01/app/11.2.0/grid)
      (SID_NAME = rac1)
    )
)


现在的情况是在rac某个节点上只要在tnsnames.ora文件中配置好 tnsping可以成功,但是sqlplus不能连接,jdbc都访问不到,防火墙都开放了的,这是为啥

$ lsnrctl start NEW_XDRAC_LISTENER

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-SEP-2013 11:45:51

Copyright (c) 1991, 2011, Oracle.All rights reserved.

TNS-01106: Listener using listener name NEW_XDRAC_LISTENER has already been started
$ lsnrctl statu NEW_XDRAC_LISTENER

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-SEP-2013 11:46:02

Copyright (c) 1991, 2011, Oracle.All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=NEW_XDRAC_LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     NEW_XDRAC_LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                30-AUG-2013 08:35:48
Uptime                  3 days 0 hr. 10 min. 14 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/11.2.0/grid/log/diag/tnslsnr/xdrac2/new_xdrac_listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=NEW_XDRAC_LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.172.19.3)(PORT=1600)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.172.19.4)(PORT=1600)))
Services Summary...
Service "RAC" has 1 instance(s).
Instance "racurpjw1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully



$ tnsping rac

TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 02-SEP-2013 11:49:22

Copyright (c) 1997, 2011, Oracle.All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xdrac2-vip)(PORT = 1600)) (ADDRESS = (PROTOCOL = TCP)(HOST = xdrac1-vip)(PORT = 1600)) (LOAD_BALANCE = yes)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac) (FAILOVER_MODE = (TYPE = select) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5))))
OK (0 msec)
$


$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Mon Sep 2 11:53:42 2013

Copyright (c) 1982, 2011, Oracle.All rights reserved.

Enter user-name: system/password@rac
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0

数据库肯定是起来了的

www_xylove 发表于 2013-09-09 21:31

oracle11g新建监听最好使用图形界面netca,在通过srvctl 加入资源。
页: [1]
查看完整版本: oracle 11g rac 修改监听端口号