1、用grid用户netca图形化界面休改监听端口(注直接修改监听文件listener.ora不起作用)
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.62)(PORT=1821))))' scope=both sid='+ASM1';
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.62)(PORT=1821))))' scope=both sid='dtdb1';
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.63)(PORT=1821))))' scope=both sid='+ASM2';
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.63)(PORT=1821))))' scope=both sid='dtdb2';
3、修改scan-listener监听端口
1)、停止scan监听
2)、srvctl modify scan_listener -p 1821
3)、修改实例的remote_listener
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
192.168.32.63)(PORT=1521))
remote_listener string rac-scan:1521
SQL>
SQL>
SQL>
SQL> alter system set remote_listener='rac-scan:1821' scope=both;
System altered.
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
192.168.32.63)(PORT=1821))
remote_listener string rac-scan:1821
有时候修改会遇到报错,提示端口被占用,任何端口都提示端口被占用,其实此问题跟端口无关
[AWT-EventQueue-0] [ 2014-08-28 11:51:00.928 CST ] [ConfigureListener.validateEndPoint:1008] Validating end-point: TCP:1821
[AWT-EventQueue-0] [ 2014-08-28 11:51:00.929 CST ] [ConfigureListenerOPS.buildTCPAddress:801] Building TCP Address with HOST dtdb1
[AWT-EventQueue-0] [ 2014-08-28 11:51:00.929 CST ] [ConfigureListenerOPS.buildAddressString:781] Building Address for TCP:
(ADDRESS=(PROTOCOL=TCP)(HOST=dtdb1)(PORT=1821)(IP=FIRST))
oracle.ops.mgmt.cluster.ClusterException: PRKC-1099 : The host names or IP addresses passed as an argument are null.
at oracle.ops.mgmt.cluster.Cluster.isPortAvailable(Cluster.java:1572)
at oracle.net.ca.ConfigureListenerOPS.isPortFree(ConfigureListenerOPS.java:1106)
at oracle.net.ca.ConfigureListenerOPS.validatePort(ConfigureListenerOPS.java:1072)
at oracle.net.ca.ConfigureListener.validateEndPoint(ConfigureListener.java:1056)
at oracle.net.ca.NetCA.prepareNextPage(NetCA.java:1747)
at oracle.net.ca.NetCA.wizardValidatePage(NetCA.java:1055)
at oracle.ewt.wizard.WizardPage.processWizardValidateEvent(Unknown Source)
at oracle.ewt.wizard.WizardPage.validatePage(Unknown Source)
at oracle.ewt.wizard.BaseWizard.validateSelectedPage(Unknown Source)
at oracle.ewt.wizard.BaseWizard.doNext(Unknown Source)
at oracle.ewt.wizard.BaseWizard$Action.actionPerformed(Unknown Source)
at oracle.ewt.button.PushButton.processActionEvent(Unknown Source)
at oracle.ewt.button.PushButton.processEventImpl(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
at oracle.ewt.button.PushButton.activate(Unknown Source)
at oracle.ewt.lwAWT.AbstractButton.processMouseReleased(Unknown Source)
at oracle.ewt.lwAWT.AbstractButton.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Component.java:5297)
at java.awt.Container.processEvent(Container.java:1966)
at oracle.ewt.lwAWT.LWComponent.processEventImpl(Unknown Source)
at oracle.ewt.button.PushButton.processEventImpl(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Component.java:3999)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3834)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1791)
at java.awt.Component.dispatchEvent(Component.java:3834)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:501)
at java.awt.EventQueue.access$000(EventQueue.java:80)
at java.awt.EventQueue$1.run(EventQueue.java:462)
at java.awt.EventQueue$1.run(EventQueue.java:461)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:84)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:95)
at java.awt.EventQueue$2.run(EventQueue.java:476)
at java.awt.EventQueue$2.run(EventQueue.java:475)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:84)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:473)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153)
at java.awt.Dialog$1.run(Dialog.java:535)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:499)
at java.awt.EventQueue.access$000(EventQueue.java:80)
at java.awt.EventQueue$1.run(EventQueue.java:462)
at java.awt.EventQueue$1.run(EventQueue.java:461)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:84)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:95)
at java.awt.EventQueue$2.run(EventQueue.java:476)
at java.awt.EventQueue$2.run(EventQueue.java:475)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:84)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:473)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
[AWT-EventQueue-0] [ 2014-08-28 11:51:00.936 CST ] [ConfigureListenerOPS.isPortFree:1109] Failed to check if port 1821 is available
on cluster nodes. !
[AWT-EventQueue-0] [ 2014-08-28 11:51:00.936 CST ] [ConfigureListenerOPS.isPortFree:1114] Is Port 1821 free on cluster nodes: false
oracle.net.ca.IllegalEndpointException: Port 1821 provided for this listener is already in use on node(s) of Oracle Clusterware.
at oracle.net.ca.ConfigureListenerOPS.validatePort(ConfigureListenerOPS.java:1073)
at oracle.net.ca.ConfigureListener.validateEndPoint(ConfigureListener.java:1056)
at oracle.net.ca.NetCA.prepareNextPage(NetCA.java:1747)
at oracle.net.ca.NetCA.wizardValidatePage(NetCA.java:1055)
at oracle.ewt.wizard.WizardPage.processWizardValidateEvent(Unknown Source)
at oracle.ewt.wizard.WizardPage.validatePage(Unknown Source)
at oracle.ewt.wizard.BaseWizard.validateSelectedPage(Unknown Source)
at oracle.ewt.wizard.BaseWizard.doNext(Unknown Source)
at oracle.ewt.wizard.BaseWizard$Action.actionPerformed(Unknown Source)
处理方法:
注意netca日志伴有如下错误
Thread-8] [ 2014-08-28 11:50:37.761 CST ] [StreamReader.run:65] ERROR>Host key verification failed.
[main] [ 2014-08-28 11:50:37.761 CST ] [RuntimeExec.runCommand:161] RunTimeExec: output>
[main] [ 2014-08-28 11:50:37.762 CST ] [RuntimeExec.runCommand:170] RunTimeExec: error>
[main] [ 2014-08-28 11:50:37.762 CST ] [RuntimeExec.runCommand:173] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[main] [ 2014-08-28 11:50:37.762 CST ] [RuntimeExec.runCommand:173] @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
[main] [ 2014-08-28 11:50:37.762 CST ] [RuntimeExec.runCommand:173] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[main] [ 2014-08-28 11:50:37.763 CST ] [RuntimeExec.runCommand:173] IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
[main] [ 2014-08-28 11:50:37.763 CST ] [RuntimeExec.runCommand:173] Someone could be eavesdropping on you right now (man-in-the-mid
dle attack)!
此错误是grid用户的信任有问题导致,需要清空know_hosts重新在生成记录一遍密码
分别在两个节点执行如下步骤即可重新netca配置监听地址,此问题跟端口没有任何关系
[grid@dtdb2 ~]$ cd .ssh
[grid@dtdb2 .ssh]$ ls
authorized_keys id_dsa id_dsa.pub known_hosts
[grid@dtdb2 .ssh]$ ls -lrt
total 16
-rw-r--r-- 1 grid oinstall 600 Aug 14 17:45 id_dsa.pub
-rw------- 1 grid oinstall 668 Aug 14 17:45 id_dsa
-rw-r--r-- 1 grid oinstall 1200 Aug 14 18:03 authorized_keys
-rw-r--r-- 1 grid oinstall 802 Aug 14 18:04 known_hosts
[grid@dtdb2 .ssh]$ >known_hosts
[grid@dtdb2 .ssh]$
[grid@dtdb2 .ssh]$ ssh dtdb1
[grid@dtdb1 ~]$ exit
logout
Connection to dtdb1 closed.
[grid@dtdb2 .ssh]$ ssh dtdb2
[grid@dtdb2 ~]$
[grid@dtdb2 ~]$
[grid@dtdb2 ~]$ exit
logout