Hi,
I came across an "No more data to read from socket" error while trying out a codesample from here:
https://asktom.oracle.com/pls/apex/f?p=100:11:::NO:RP:P11_QUESTION_ID:9533477800346658909 This is our non-working environment:
SQLDeveloper 4.2.0.17.089 (Build 17.089.1709) on Windows 7 Enterprise
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
"CORE 12.1.0.2.0 Production"
TNS for Linux: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production
I created the table as follows:
CREATE TABLE sel_tmp_clickdata (tstamp integer, userid varchar2(15));
Then I added testdata:
INSERT INTO sel_tmp_clickdata VALUES(1, 'Mary');
INSERT INTO sel_tmp_clickdata VALUES(2, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(11, 'Mary');
INSERT INTO sel_tmp_clickdata VALUES(12, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(22, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(23, 'Mary');
INSERT INTO sel_tmp_clickdata VALUES(32, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(34, 'Mary');
INSERT INTO sel_tmp_clickdata VALUES(43, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(44, 'Mary');
INSERT INTO sel_tmp_clickdata VALUES(47, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(48, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(53, 'Mary');
INSERT INTO sel_tmp_clickdata VALUES(59, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(60, 'Sam');
INSERT INTO sel_tmp_clickdata VALUES(63, 'Mary');
INSERT INTO sel_tmp_clickdata VALUES(68, 'Sam');
commit;
There are two Query-Samples - the first one works without any hassle:
SELECT
tstamp,
userid
FROM sel_tmp_clickdata MATCH_RECOGNIZE(
ALL ROWS PER MATCH
PATTERN (b s+)
DEFINE
s as (tstamp - prev(tstamp) <= 10)
);
The second query however fails:
SELECT
tstamp,
userid,
session_id
FROM sel_tmp_clickdata MATCH_RECOGNIZE(
PARTITION BY userid ORDER BY tstamp
MEASURES match_number() as session_id
ALL ROWS PER MATCH
PATTERN (b s+)
DEFINE
S AS (tstamp - prev(tstamp) <=10)
);
Either this query is running way too long for its content (I usually kill it after a few minutes) or it returns "No more data to read from socket" almost instantaneously.
Searching through the web lead me to trying all of the following things:
- altering the tnsnames.ora file (changing (SERVER=DEDICATED) to (SERVER=SHARED)
- using sqlplus-console instead of SQLDeveloper
- trying the statement on my local dev-db (suprisingly it worked there!)
My working environment:
same client-PC (SQLDeveloper-Version and Windows 7 Enterprise)
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
"CORE 12.2.0.1.0 Production"
TNS for Linux: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production
As both DBs differ in their version, this lead me to the following question(s): Is this a known bug in 12.2.0.2.0 (contrary to 12.2.0.1.0) or is there any advice you can give me on tracking down the problem?
Best regards,
david
Sorry - I can't get it to fail
12.1.0.2
========
SQL> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE 12.1.0.2.0 Production
TNS for 64-bit Windows: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production
SQL> CREATE TABLE sel_tmp_clickdata (tstamp integer, userid varchar2(15));
Table created.
SQL>
SQL> INSERT INTO sel_tmp_clickdata VALUES(1, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(2, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(11, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(12, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(22, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(23, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(32, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(34, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(43, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(44, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(47, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(48, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(53, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(59, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(60, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(63, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(68, 'Sam');
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL>
SQL> SELECT
2 tstamp,
3 userid
4 FROM sel_tmp_clickdata MATCH_RECOGNIZE(
5 ALL ROWS PER MATCH
6 PATTERN (b s+)
7 DEFINE
8 s as (tstamp - prev(tstamp) <= 10)
9 );
TSTAMP USERID
---------- ---------------
1 Mary
2 Sam
11 Mary
12 Sam
22 Sam
23 Mary
32 Sam
34 Mary
43 Sam
44 Mary
47 Sam
48 Sam
53 Mary
59 Sam
60 Sam
63 Mary
68 Sam
17 rows selected.
SQL>
SQL>
SQL> SELECT
2 tstamp,
3 userid,
4 session_id
5 FROM sel_tmp_clickdata MATCH_RECOGNIZE(
6 PARTITION BY userid ORDER BY tstamp
7 MEASURES match_number() as session_id
8 ALL ROWS PER MATCH
9 PATTERN (b s+)
10 DEFINE
11 S AS (tstamp - prev(tstamp) <=10)
12 );
TSTAMP USERID SESSION_ID
---------- --------------- ----------
1 Mary 1
11 Mary 1
34 Mary 2
44 Mary 2
53 Mary 2
63 Mary 2
2 Sam 1
12 Sam 1
22 Sam 1
32 Sam 1
43 Sam 2
47 Sam 2
48 Sam 2
59 Sam 3
60 Sam 3
68 Sam 3
16 rows selected.
SQL>
12.2.0.1
========
SQL> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
CORE 12.2.0.1.0 Production
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production
5 rows selected.
SQL>
SQL> CREATE TABLE sel_tmp_clickdata (tstamp integer, userid varchar2(15));
Table created.
SQL>
SQL> INSERT INTO sel_tmp_clickdata VALUES(1, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(2, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(11, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(12, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(22, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(23, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(32, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(34, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(43, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(44, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(47, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(48, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(53, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(59, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(60, 'Sam');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(63, 'Mary');
1 row created.
SQL> INSERT INTO sel_tmp_clickdata VALUES(68, 'Sam');
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL>
SQL> SELECT
2 tstamp,
3 userid
4 FROM sel_tmp_clickdata MATCH_RECOGNIZE(
5 ALL ROWS PER MATCH
6 PATTERN (b s+)
7 DEFINE
8 s as (tstamp - prev(tstamp) <= 10)
9 );
TSTAMP USERID
---------- ---------------
1 Mary
2 Sam
11 Mary
12 Sam
22 Sam
23 Mary
32 Sam
34 Mary
43 Sam
44 Mary
47 Sam
48 Sam
53 Mary
59 Sam
60 Sam
63 Mary
68 Sam
17 rows selected.
SQL>
SQL>
SQL> SELECT
2 tstamp,
3 userid,
4 session_id
5 FROM sel_tmp_clickdata MATCH_RECOGNIZE(
6 PARTITION BY userid ORDER BY tstamp
7 MEASURES match_number() as session_id
8 ALL ROWS PER MATCH
9 PATTERN (b s+)
10 DEFINE
11 S AS (tstamp - prev(tstamp) <=10)
12 );
TSTAMP USERID SESSION_ID
---------- --------------- ----------
1 Mary 1
11 Mary 1
34 Mary 2
44 Mary 2
53 Mary 2
63 Mary 2
2 Sam 1
12 Sam 1
22 Sam 1
32 Sam 1
43 Sam 2
47 Sam 2
48 Sam 2
59 Sam 3
60 Sam 3
68 Sam 3
16 rows selected.
SQL>
I also tried with SQL Developer 17.2.0.188 and it worked fine there too.
So I'd suggest
1) see if it works in plain SQL Plus
2) try the more recent SQL Developer version
It all else fails, perhaps try take it up with Support.