存储故障导致手动重建创建数据库后,出现通过tns不能连接的问题;检查发现tnsnames.ora中配置的host为scan_ip;但是,如果通过vip则可以访问数据库;那么可以确定是scan ip或scan listener问题;
检查所有listener后,发现LISTENER、LISTENER_SCAN1状态都正常,只是LISTENER_SCAN1没有注册服务;对比重建前后的相关listener参数后,发现新创建的数据库remote_listener参数没有设置,设置后正常,问题解决;下面是测试环境的配置表;
grid用户下$GRID_HOME/network/admin/listener.ora
[grid@db1 admin]$ cat listener.ora
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
grid用户下$GRID_HOME/network/admin/sqlnet.ora
[grid@db1 admin]$ cat sqlnet.ora
# sqlnet.ora.db1 Network Configuration File: /u01/app/11.2.0/grid/network/admin/sqlnet.ora.db1
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /u01/app/grid
oracle用户下$ORACLE_HOME/network/admin/tnsnames.ora
[oracle@db1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
RACDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
此时,如果没有设置remote_listener参数,则不能通过scan ip登录,如:
$sqlplus system/oracle@racdb
报错,不能连接;
设置remote_listener后正常;
SQL>alter system set remote_listener =' rac-scan:1521' scope=both sid='*';
SQL>show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=192
.168.1.120)(PORT=1521))))
remote_listener string rac-scan:1521
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16976507/viewspace-1250912/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16976507/viewspace-1250912/