Felipe Carlo
Felipe Carlo

Reputation: 349

No more data to read from socket error using dblink - Oracle

I'm getting this error (No more data to read from socket) even when I try to do the simple query like:

SELECT 
T."ID" as user_id FROM "TEST"@DBLINK T where rownum<10

I already looked for more details in tracelog and got this:

Thu Jul 02 11:23:46 2015 Archived Log entry 431583 added for thread 1 sequence 451623 ID 0x8ae0db51 dest 1: Thu Jul 02 11:30:32 2015 HS: Lost RPC connection to remote Agent... HS: ... Agent SID = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.173)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=cf))), NCR status = -2147385341 Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x7FFF351D7F40] [PC:0x20E0101, kxsffir()+193] [flags: 0x0, count: 1] Errors in file /u01/app/oracle/diag/rdbms/bfdwbr/BFDWBR/trace/BFDWBR_ora_25533.trc (incident=1197429): ORA-07445: exception encountered: core dump [kxsffir()+193] [SIGSEGV] [ADDR:0x7FFF351D7F40] [PC:0x20E0101] [Address not mapped to object] [] ORA-28511: lost RPC connection to heterogeneous remote agent using SID=ORA-28511: lost RPC connection to heterogeneous remote agent using SID=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.173)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=cf))) ORA-02063: preceding line from CF Incident details in: /u01/app/oracle/diag/rdbms/bfdwbr/BFDWBR/incident/incdir_1197429/BFDWBR_ora_25533_i1197429.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details.

Anyone there is any idea how to solve this?

Thanks!

Upvotes: 0

Views: 1261

Answers (1)

kevinskio
kevinskio

Reputation: 4551

Looks to me like an intermittent network connectivity issue. The phrase "lost RPC connection" is a good indication. You should also look in the trace file mentioned.

As a test you can make a script, something like

DECLARE
  V_NUMBER NUMBER(9);
BEGIN
  FOR I IN 1 .. .500 LOOP
    BEGIN
      SELECT T."ID" AS USER_ID
        INTO V_NUMBER
        FROM "TEST"@DBLINK T
       WHERE ROWNUM = 1;
      DBMS_OUTPUT.PUT_LINE('time is ' || SYSDATE || 'User id is ' ||
                           V_NUMBER);
    END LOOP;

  END;

This should give you an idea of when the interruption happens or if it is consistent.

Upvotes: 0

Related Questions