RE: Hunting down (possible) memory leak in DBD::Oracle ** EXTERNAL **
[email protected] ("Fennell, Brian") Mon, 18 Dec 2017 18:29:03 +0000
| Newsgroups | perl.dbi.users |
|---|---|
| Message-ID | <CY4PR14MB17194DD42136D1EB1963BD99A20E0@CY4PR14MB1719.namprd14.prod.outlook.com> |
Ok . . . I am already benefiting from the support from this list : - )
I noticed that I was actually ordering my query BY rownum (which doesn't make much sense . . . and perhaps oracle's optimizer recognized this and ignored the pseudo column.)
Just to be sure, I change the query and then reran my tests - the results, however, did not change
New SQL
SELECT
d.ROW_NUMBER,
d.f1,
d.f2,
d.f3,
d.f4,
d.f5
FROM
(
SELECT /*+ FULL(A) PARALLEL(A 6) */
rownum ROW_NUMBER,
A.field1 f1 ,
A.field2 f2,
A.field3 f3,
A.field4 f4,
B.field5 f5
FROM
tableA A,
tableB B
WHERE
B.field6 IN ( 'TOK3', 'TOK4', 'TOK5' )
AND B.field7 LIKE 'A%'
AND B.field8 IN ('TOK1', 'TOK2')
AND B.fkfield1 = A.field1
ORDER BY
2, 3, 4, 5, 6
) d
WHERE
d.row_number < 2020000
AND d.row_number >= 1000000
Here is a summary of the test results (I have a test harness which uses ssh to run the exact same tests on more than one host).
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2000000 0 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 2 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2000000 0 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 1000000 0 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 1000000 0 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2000000 1000000 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2000000 1000000 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2020000 1000000 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2020000 1000000 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2030000 1000000 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 2 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2030000 1000000 ) ) OUTPUT: ( ORACLE_ERROR_COUNT = 0 )