1. 程式人生 > 實用技巧 >解決Oracle客戶端無法連線RAC(ORA-12545)

解決Oracle客戶端無法連線RAC(ORA-12545)

RAC建好後,以為能像單機版的oracle例項一樣,伺服器端建立服務監聽,客戶端用netca建立個本地監聽就能連線了實際則不是,客戶端連線rac著實費了一番功夫;

195449478.jpg

根據http://www.oracleonlinux.cn/2012/03/resolve-11gr2-rac-client-ora-12545/

這篇文章解決了問題,原來雖然客戶端能解析全域名稱scan和vip(虛擬ip)但是端主機名卻是在不同的區域中,即使在安裝grid infrastructure 過程中使用了fqdn形式就是主機名+域名的方式,由於錯誤9150053的規定導致了DBCA在建立資料庫時是用主機的段號虛擬IP來設定資料庫引數local_listener的,因此只要把資料庫例項引數local_listener內的host改為vip的IP地址即可;


bug-9150053這是11.2.0.1的小bug:“ORA-12545 or ORA-12537 while connecting to RAC through SCAN name[ID 970619.1]”,
Client is able to resolve all Fully Qualified Domain Name (FQDN) SCAN and VIP name but not short ones(without domain name) as its in different domain; even though FQDN names were specified during Grid Infrastructure setup, due to bug 9150053 by default DBCA set database parameter local_listener to short node VIP name while database is created.


11.2.0.2及之後的版本就修復好了 ;


[[email protected] ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 13-MAY-2013 19:49:27

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias LISTENER

Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 13-MAY-2013 16:38:45
Uptime 0 days 3 hr. 10 min. 42 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/grid/diag/tnslsnr/node1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.10)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.75.11)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "racdb" has 1 instance(s).
Instance "racdb1", status READY, has 1 handler(s) for this service...
Service "racdbXDB" has 1 instance(s).
Instance "racdb1", status READY, has 1 handler(s) for this service...
The command completed successfully



SQL> show parameter spfile

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/racdb/spfileracdb.ora
SQL> show parameter listener

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=node
1-vip)(PORT=1521))))
remote_listener string scan-cluster.wenxi.com:1521
SQL>


SQL>
SQL> show parameter listener;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=node
1-vip)(PORT=1521))))
remote_listener string scan-cluster.wenxi.com:1521
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.75.11)(PORT=1521))))' sid='racdb1';

System altered.

SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.75.21)(PORT=1521))))' sid='racdb2';

System altered.

SQL> commit;

Commit complete.

SQL> show parameter listener;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=192.
168.75.11)(PORT=1521))))
remote_listener string scan-cluster.wenxi.com:1521
SQL> show user;
USER is "SYS"



[[email protected] ~]$ sqlplus / as sysdba;

SQL*Plus: Release 11.2.0.1.0 Production on Mon May 13 18:22:59 2013

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> show parameter listener;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=192.
168.75.21)(PORT=1521))))
remote_listener string scan-cluster.wenxi.com:1521
SQL>


這時用普通的oracle建立客戶端的建立本地監聽就可以了


C:\>sqlplus system/[email protected]

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 13 18:32:20 2013

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


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management,
OLAP,
Data Mining and Real Application Testing options

SQL> select * from dual;

DU
--
X


轉載於:https://blog.51cto.com/summervast/1199466