oracle在线修改监听端口过程
1、修改listener.ora文件
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = blue1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = blue)
(ORACLE_HOME = /oracle/product/10.2.0/db)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db)
(PROGRAM = extproc)
)
)
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(SID_NAME = blue)
(ORACLE_HOME = /oracle/product/10.2.0/db)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db)
(PROGRAM = extproc)
)
)
LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = blue1)(PORT = 1621))
)
)
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = blue)
(ORACLE_HOME = /oracle/product/10.2.0/db)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db)
(PROGRAM = extproc)
)
)
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = blue1)(PORT = 1821))
)
)
注意端口地址和KEY必须不同,否则监听会无法启动
2、如上配置后oracle已经可以静态监听SID_NAME所列出的服务名,但是客户端的tnsnames.ora文件必须配置为service_name,而不能配置为sid_name,否则连接会报错。
如:
crm22_1821 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 135.129.9.163)(PORT = 1821))
(CONNECT_DATA =
(SERVICE_NAME = crm22)
)
)
3、如需配置新配置监听的动态注册,需修改local_listener参数,此参数可以设置为地址的形式,也可以配置成tns连接串,如配置成tns连接串需要在本地的tnsnames.ora里配置如下文件:
LISTENER_PRIMARY =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.101)(PORT = 1821))
然后修改local_listener参数:alter system set local_listener='LISTENER_PRIMARY';
另一种方法是直接把连接串配置到参数里面,修改local_listener:
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.101)(PORT = 1821))';
如果端口是默认的1521端口则不需要设置local_listener参数
如果用tns连接串的方式,修改完连接串里的端口地址后,如果监听仍未动态注册,可以使用如下命令手工重新注册:
alter system set local_listener='LISTENER_PRIMARY';
此时由于数据库动态注册时已经读取了local_listener参数,因此使用命令alter system register;命令是无法动态注册的,需要用上面的命令手工刷新local_listener参数。
1、修改listener.ora文件
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = blue1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = blue)
(ORACLE_HOME = /oracle/product/10.2.0/db)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db)
(PROGRAM = extproc)
)
)
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(SID_NAME = blue)
(ORACLE_HOME = /oracle/product/10.2.0/db)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db)
(PROGRAM = extproc)
)
)
LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = blue1)(PORT = 1621))
)
)
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = blue)
(ORACLE_HOME = /oracle/product/10.2.0/db)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db)
(PROGRAM = extproc)
)
)
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = blue1)(PORT = 1821))
)
)
注意端口地址和KEY必须不同,否则监听会无法启动
2、如上配置后oracle已经可以静态监听SID_NAME所列出的服务名,但是客户端的tnsnames.ora文件必须配置为service_name,而不能配置为sid_name,否则连接会报错。
如:
crm22_1821 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 135.129.9.163)(PORT = 1821))
(CONNECT_DATA =
(SERVICE_NAME = crm22)
)
)
3、如需配置新配置监听的动态注册,需修改local_listener参数,此参数可以设置为地址的形式,也可以配置成tns连接串,如配置成tns连接串需要在本地的tnsnames.ora里配置如下文件:
LISTENER_PRIMARY =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.101)(PORT = 1821))
然后修改local_listener参数:alter system set local_listener='LISTENER_PRIMARY';
另一种方法是直接把连接串配置到参数里面,修改local_listener:
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.101)(PORT = 1821))';
如果端口是默认的1521端口则不需要设置local_listener参数
如果用tns连接串的方式,修改完连接串里的端口地址后,如果监听仍未动态注册,可以使用如下命令手工重新注册:
alter system set local_listener='LISTENER_PRIMARY';
此时由于数据库动态注册时已经读取了local_listener参数,因此使用命令alter system register;命令是无法动态注册的,需要用上面的命令手工刷新local_listener参数。