Slow running spatial query

I am hoping someone can help. I am writing alot of spatial queries but I am having a hard time figuring out what is wrong with this one and maybe someone can give me some advise. Here is my query
select count(inc) from public_crimeshapes.aggassault2004 h, spatial.tracts2000 t
where mdsys.sdo_relate(h.geom, t.geom,'mask = anyinteract querytype=window') = 'TRUE'
and tract2000 = 012300 and
(to_char(to_date(h.fr_date,'yyyymmdd'), 'MM/DD/YYYY') >= '01/01/2004') and
(to_char(to_date(h.fr_date,'yyyymmdd'), 'MM/DD/YYYY') <= '12/31/2004')
This one runs fast in less than 3 secs but if I added multiple tract2000 numbers like this
select count(inc) from public_crimeshapes.aggassault2004 h, spatial.tracts2000 t
where mdsys.sdo_relate(h.geom, t.geom,'mask = anyinteract querytype=window') = 'TRUE'
and tract2000 in (012300,012400,012500,014300,014400,016600,016700,016800,016900,017000,017100,017200,017300,017400) and
(to_char(to_date(h.fr_date,'yyyymmdd'), 'MM/DD/YYYY') >= '01/01/2004') and
(to_char(to_date(h.fr_date,'yyyymmdd'), 'MM/DD/YYYY') <= '12/31/2004')
it will take like 5 mins to run. Is there another way to run a spaital query on multiplue polygons? Tracts2000 is a polygon and aggassault2004 is a point file. Thanks for the help I am running Oracle Spatial 9i.
Matt

Hi,
Can you try the following:
select /*+ ordered */ count(inc)
from spatial.tracts2000 t, public_crimeshapes.aggassault2004 h
where mdsys.sdo_relate(h.geom, t.geom,'mask = anyinteract querytype=window') = 'TRUE'
and tract2000 in (012300,012400,012500,014300,014400,016600,016700,016800,016900,017000,017100,017200,017300,017400) and
(to_char(to_date(h.fr_date,'yyyymmdd'), 'MM/DD/YYYY') >= '01/01/2004') and
(to_char(to_date(h.fr_date,'yyyymmdd'), 'MM/DD/YYYY') <= '12/31/2004');
Note I added the ordered hint, AND reversed the order of the tables in the from clause. What this will hopefully tell the optimizer is:
find the tract2000 from the tracts2000 table (hopefully you have a non-spatial index here) using the in clause. Do this first, then:
for each of those, use the spatial index to find the assault cases.
Hopefully this will be fast.
If the assault cases are stored as point data, when you create the spatial index use layer_gtype=point to ensure best performance.

Similar Messages

  • Running Spatial Query as different user

    Has anyone else run into a problem with running a spatial query that works fine in the scheme that created the tables but when I run it after giving permissions to another user it returns no rows. Here is my example and sorry it is little complicated. I am running 9.2.0.7 are there specfic object or system privlidges i need to give the user that doesn't own those tables to run spaital functions?
    SELECT /*+ ORDERED ALL_ROWS */ COUNT(incident_n)
    FROM mpd_data.incidentsshp i
    WHERE sdo_relate(i.geom,(SELECT /*+ ORDERED ALL_ROWS */ sdo_geom.sdo_buffer(geom, m.diminfo, 2)
    FROM (SELECT /*+ ORDERED ALL_ROWS */ mdsys.sdo_aggr_union(mdsys.sdoaggrtype(union_geom, 0.5)) geom FROM (select mdsys.sdo_aggr_union(mdsys.SDOAGGRTYPE(d.geom,0.5)) union_geom
    from spatial.dime d WHERE d.rcd_nbr IN (select rcd_nbr
    from dime
    where ((lo_add_r >= 1500 and hi_add_r <= 1600) or
    (lo_add_l >= 1500 and hi_add_l <= 1600) or
    (1500 between lo_add_r and hi_add_r and
    1600 between lo_add_l and hi_add_l))
    and street = 'WARREN' and dir = 'N' and sttype = 'AV')))
    ,mdsys.user_sdo_geom_metadata m
    WHERE m.TABLE_NAME = 'DIME'), 'MASK = ANYINTERACT' ) = 'TRUE'
    and cdate between 20060101 and 20061231

    I have a separate schema for querying with and it works fine. I granted select on the needed tables and created synonyms (for convenience). Didn't have to do anything special for spatial indexes at all.
    I believe there is an issue doing spatial queries across a DB Link, so that should be avoided.
    --Peter                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Very slow simple spatial query on 11g

    I've created two spatial tables as following:
    CREATE TABLE usregions
    region_code NUMBER(1,0) NOT NULL,
    shape ST_GEOMETRY,
    CONSTRAINT usregions_pk PRIMARY KEY usregions(region_code)
    INSERT INTO MDSYS.user_sdo_geom_metadata
    (table_name, column_name, diminfo, srid)
    VALUES ('USREGIONS', 'SHAPE',
    sdo_dim_array (sdo_dim_element ('X', -180, 180, 0.5),
    sdo_dim_element ('Y', -90, 90, 0.5)),
    4269);
    CREATE INDEX usregions_dx ON usregions (shape)
    INDEXTYPE IS MDSYS.spatial_index;
    CREATE TABLE usstates
    state_code NUMBER(1,0) NOT NULL,
    state_name VARCHAR2(30),
    shape ST_GEOMETRY,
    CONSTRAINT usstates_pk PRIMARY KEY usstates(state_code)
    INSERT INTO MDSYS.user_sdo_geom_metadata
    (table_name, column_name, diminfo, srid)
    VALUES ('USSTATES', 'SHAPE',
    sdo_dim_array (sdo_dim_element ('X', -180, 180, 0.5),
    sdo_dim_element ('Y', -90, 90, 0.5)),
    4269);
    CREATE INDEX usstates_dx ON usstates (shape)
    INDEXTYPE IS MDSYS.spatial_index;
    I then loaded both tables with data from a shapefile.
    The state shapefile is just the US map with all the states.
    The region shapefile is the same US map with only 5 regions (Northeast, mid atlantic, mid west, south, and west).
    I created the region shapefile from the state shapefile using ESRI ArcMap to dissolve the States border. So Pennsylvania, Virginia, Maryland, and DC is one polygon; New York and up is another polygon, etc.
    I also created the same two tables, with the same data in SQL Server 2008 (KatMai), as well as in PostGRE 8.3.
    Then I ran the following query:
    SELECT s.state_name
    FROM usstates s
    WHERE s.shape.ST_Within((SELECT shape
    FROM usregions
    WHERE region_code=2))=1;
    Region 2 is Mid Atlantic and I was expecting to see:
    STATE_NAME
    District of Columbia
    Maryland
    Pennsylvania
    Virgina
    Instead, Oracle 11g only returned "District of Columbia"
    The query took 6.4 seconds to run.
    On SQL Server 2008, I got the expected result and it took 0.4 seconds to execute.
    On PostGRE 8.3, I also got the expected result and it took 0.5 seconds to execute.
    Why is Oracle not returning all the States? Is this a bug?
    Am I doing something wrong???
    Thanks.

    save data into internal backup format ???backup format doesn't matter, program is just reading rows from backup file and inserting them into database - so is generating SQL insert commands
    >
    and then it will restore it back to database. It isdone by inserts, each 500 row commit
    I can't follow your post, but...yuck.program is just inserting records into T2 table, but on T2 table is trigger and inside trigger is SQL command "UPDATE TABLE T3 ..... where ......". In this time is T3 already filled with 60569 records.
    And inserting going slower and slower. Without trigger is speed ok. But on oracle 10g speed is ok with this trigger. So I am concern about what could changed in oracle 11g and cause such behavior.
    I will try produce some simple test example

  • Index problem in a spatial query

    I try to run following query in SQL Plus:
    SELECT A.objectid FROM TABBDG A, TABREG B
    WHERE A.objectid = 68 AND B.regionname = 'Hong2'
    AND SDO_RELATE(A.geoloc, B.geoloc, 'mask=INSIDE querytype = WINDOW') = 'TRUE';
    To find out weather or not objectid = 68 is inside of region (='Hong2"). I got following error messages:
    ERROR at line 1:
    ORA-13226: interface not supported without a spatial index
    ORA-06512: at "MDSYS.MD", line 1723
    ORA-06512: at "MDSYS.MDERR", line 8
    ORA-06512: at "MDSYS.SDO_3GL", line 57
    ORA-06512: at line 1
    But when I try to add an index to table TABREG, I got following error:
    ERROR at line 1:
    ORA-29879: cannot create multiple domain indexes on a column list using same indextype
    Seem to me that the index was already there. Can any one help me? Thanks.

    I found out the reason of problem. I used an old version of EasyLoader (4.5?). When I get the latest EasyLoader V6.5, there is no problem any more to run spatial query. You can get lates EasyLoader V6.5 from MapInfo or from me at: [email protected]
    Thanks for all help.

  • Spatial Query across schemas. one version enabled table another not -Hanged

    Hi,
    I am executing a PL/sql procedure where a Spatial query run across two schemas. One table(in x schema) is version enabled and second table(in y schema) is Unversioned. Add to that complexity I am running the procedure from third user logon. I think I have enough previleges, as I won't get any error message.
    But, Procedure worked fine when there is no table is version enabled. It started giving problem when one table got version enabled.
    I have tried by setting " DBMS_WM.Gotoworkspace('LIVE');" before running spatial query. But still no luck, process just hangs on the spatial query.
    I tried by using physical name of the Table (table1_LT) which is making it to work. But, as per Workspace manager guide, applications, programs should NOT use, this physical tables(because it is not the correct way on versioned table).
    1. How can I hint to my query, to use a table from only live version?
    2. Why Query is hanging forever (even tried by leaving it over night....)
    Normally it used to take one or two minutes(before versioning..)
    I have posted it Workspace manager forum, But No Luck (people seems to be shy away after seeing "Spatial query" )
    Any help is highly appriciated

    Hi,
    I will need to know more details about the specific query you are performing. So, please do the following:
    1. list the actual query that you are using
    2. generate an explain plan of the query both before and after the table was version enabled. use @?/rdbms/admin/utlxpls or anything that generates the predicate information.
    3. also, give any pertinent details about the table(size of the table, number of rows expected to be returned, column types in the table, etc).
    Based on that, I will see if I can suggest a possible hint that may be able to improve the performance of your query.
    Regards,
    Ben

  • Ora-13226 when performing spatial query on view

    Hi,
    in my database I have a view with spatial column. The view is based on UNION ALL select. When I try to run spatial query on the view, the database returns ora-13226 error. When I recreate the view to consist only one select (without UNION ALL) the spatial query return correct result. Could you pls help me how to do a spatial query on spatial view whose definition contains UNION ALL select?
    Thanks
    Andrew

    Hi,
    it's quite simple:
    create view test_view as
    select id, geometry from table_a
    union all
    select id, geometry from table_b;
    When I try for example:
    select *
    from test_view
    where sdo_relate(geometry, (select geometry from table_c where id=1316),'mask=anyinteract') = 'TRUE';
    it throws ora-13226 error.
    Interesting is that following query where the geometry is directly included runs well:
    select *
    from test_view
    where sdo_relate(geometry, MDSYS.SDO_GEOMETRY (....),'mask=anyinteract') = 'TRUE';
    also when I recreate the test_view as
    create view test_view as
    select id, geometry from table_a;
    then also the first query (with inner select) returns no error.
    It's a little bit strange isn't it?
    Andrew

  • SSRS 2008 R2 is extremely slow. The query runs in less than a second in the dataset designer but if you try to view the report it takes over 10 minutes. I have read this is a bug in SSRS 2008 R2. We installed the most recent patches and service packs.

    SSRS 2008 R2 is extremely slow.  The query runs in less than a second in the dataset designer but if you try to view the report it takes over 10 minutes.  I have read this is a bug in SSRS 2008 R2.  We installed the most recent patches and
    service packs.  Nothing we've done so far has fixed it and I see that I'm not the only person with this problem.  However I don't see any answers either.

    Hi Kim Sharp,
    According to your description that when you view the report it is extremely slow in SSRS 2008 R2 but it is very fast when execute the query in dataset designer, right?
    I have tested on my local environment and can‘t reproduce the issue. Obviously, it is the performance issue, rendering performance can be affected by a combination of factors that include hardware, number of concurrent users accessing reports, the amount
    of data in a report, design of the report, and output format. If you have parameters in your report which contains many values in the list, the bad performance as you mentioned is an known issue on 2008 R2 and already have the hotfix:
    http://support.microsoft.com/kb/2276203
    Any issue after applying the update, I recommend you that submit a feedback at https://connect.microsoft.com/SQLServer/ 
    If you don’t have, you can do some action to improve the performance when designing the report. Because how you create and update reports affects how fast the report renders.
    Actually, the Report Server ExecutionLog2  view contains reports performance data. You could make use of below query to see where the report processing time is being spent:
    After you determine whether the delay time is in data retrieval, report processing, or report rendering:
    use ReportServer
    SELECT TOP 10 ReportPath,parameters,
    TimeDataRetrieval + TimeProcessing + TimeRendering as [total time],
    TimeDataRetrieval, TimeProcessing, TimeRendering,
    ByteCount, [RowCount],Source, AdditionalInfo
    FROM ExecutionLog2
    ORDER BY Timestart DESC
    Use below methods to help troubleshoot issues according to the above query result :
    Troubleshooting Reports: Report Performance
    Besides this, you could also follow these articles for more information about this issue:
    Report Server Catalog Best Practices
    Performance, Snapshots, Caching (Reporting Services)
    Similar thread for your reference:
    SSRS slow
    Any problem, please feel free to ask
    Regards
    Vicky Liu

  • Oracle 9i 10g slow spatial query

    I have been using the following spatial query in oracle 9i to assign jurisdictions to spatial points.
    SELECT /*+ordered*/ L.TCH_X_COORD, L.TCH_Y_COORD, T.NAME
    FROM tis.tis_coordinates_hold_on L,
    geospatial.mdt_admin_districts T
    WHERE SDO_RELATE(T.GEOMETRY,
    MDSYS.SDO_GEOMETRY(2001,41079,MDSYS.SDO_POINT_TYPE(tch_x_coord,tch_y_coord,NULL),
    NULL,NULL),'mask=ANYINTERACT querytype=WINDOW') = 'TRUE'
    AND tch_assigned_base_rte='M00001N'
    By using the ordered hint I was able to double the retrieval rate.  My problem is this: We are now migrating to oracle 10g, and the use of the ordered returns no rows (different incorrect results). If I remove the + ordered the results are correct, but I no longer get the increased speed of retrieval. Has anyone run into this problem, and can you suggest a way that I could speed up this query. As it stands now it takes more than 1/2 sec for each record retrieved, and I have millions of records !! Thanks.

    We're using 10.2.4.0 I believe I have found the reason the queries were different. When I dropped the spatial index and re-created it, the query returned the same rows as 9i. However, I still have an issue with the speed. 10g appears to be about 1/3 as fast as 9i was. It doesn't seem to make any difference whether I put in the +ordered or not.  Our dba says just based on cpu and processing speed the server that has 10g should be significantly faster.  Any comments?  Thanks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • ORA-21700 Error when running C# stored procedure to do a spatial query

    Hi All
    I'm having trouble running a C# stored procedure that (via another object) that falls over running a spatial query with the following error.
    OAR-21700 object does not exist or is marked for delete
    If I take the sql of the spatial query out and run it separately in SqlPlus it runs as expected.
    If I use the object that executes the spatial query via NUnit (i.e. executed on the client, rather than the server) it also works as expected.
    Can anyone help? Is there some issue using Oracle Spatial queries with the Oracle Database Extensions for .NET?

    I can indeed. Here is a slightly simplified version:
    SELECT secondary_catch.mi_prinx AS primarykey
    FROM mapinfo_data.secondary_catch
    WHERE sdo_relate (secondary_catch.geoloc,
    (SELECT geoloc
    FROM training_6.building_polygons
    WHERE building_id = 10002507117),
    'mask=anyinteract querytype=WINDOW'
    ) = 'TRUE'
    Interestingly, if I attempt to run this query inside a C# stored procedure using the implicit context connection (i.e. OracleConnection.ConnectionString = "context connection=true") it fails with the error I described above.
    If however I create a new connection and connect as a regular user on my database, the query works correctly.
    So in that sense I have a workaround, but I'd like to avoid using it if I can as creating a new explicit connection is an overhead I can do without.

  • Spatial query on join view in another schema

    Background:
    I have a schema with tables containing four spatial columns per table. I have a second schema that contains join views of the tables in the first schema. The join view consists of the attributes and any other tabular data that is joined via foreign key to non-spatial tables and one of the four geometry columns. I have a third schema that owns no database objects of its own, but has select privilege to the second schema's view objects.
    We are using Oracle 10.2.0.2 on a windows platform.
    This worked in 9i, the problem only presented itself when we migrated to 10g.
    Problem:
    When I run a spatial query on a join view in the second schema(the schema that owns the object), it runs and returns results in about a second. When I run the exact same query in the third schema it routinely takes 20-30 seconds.
    Here is the query that I run in both schemas with varying query times:
    SELECT COUNT(*)
    FROM two.join_view_a A
    WHERE (MDSYS.SDO_FILTER(A.GEOM, SDO_GEOMETRY(2003,8307,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3),SDO_ORDINATE_ARRAY(26.6396,26.5708,43.346,34.4083)),'QUERYTYPE=WINDOW')='TRUE');
    Question:
    Why does this happen?
    What can I do to fix this problem?
    Thanks,
    John

    Have a read of this posting: Oracle spatial view runing slow as different user
    There are details there about the 'optimizer_secure_view_merging' parameter and the effect it can have on cross schema views in 10.2

  • Spatial query w/ logical operators in a subquery on Linux using Oracle 1

    Hello...
    I'm being given XML that I need to parse and create SQL from it. Below my signature is the SQL that I generate (its a simple example) and can be more elaborate due to the logical operators (AND and OR) given in the XML.
    The problem that we're seeing is performance-based: when one of the logical operator queries is Spatial-based, like below. Running it in JDBC, the query never returns.
    The spatial query just by itself returns ~300 rows (takes approximately 0.2 seconds). The "PERCENTAGE" query by itself returns about ~40000 rows (takes approximately ~.8 seconds).
    If we run the query below with 2 non-spatial subqueries, the result returns and performance is very acceptable (~ 0.9 seconds)-- the result set is about 80000 rows.
    Thanks,
    Jim
    =========================
    SELECT
    COLUMN_WE_WANT , RESULTS
    FROM
    TABLE_A
    WHERE
    COLUMN_WE_WANT IN
    SELECT
    COLUMN_WE_WANT
    FROM
    TABLE_A
    WHERE
    SDO_OVERLAPBDYINTERSECT(TABLE_A.MY_SPATIAL_COLUMN,
    SDO_GEOMETRY(2003,
    4326,
    null,
    SDO_elem_info_array( 1 , 3 , 1 ),
    SDO_ORDINATE_ARRAY( lng_1,lat_1 , lng_2,lat_2 , lng_3,lat_3 , lng_4,lat_4 , lng_1,lat_1 )
    ) = 'TRUE'
    OR
    COLUMN_WE_WANT IN
    SELECT
    COLUMN_WE_WANT
    FROM
    TABLE_B
    WHERE
    SOME_PERCENTAGE_RATE_COLUMN < 90
    )

    Its difficult to comment without seeing the execution plan. You should trace this query to get a better idea of exactly what's happening.
    Depending on the complexity of the logical operators, I would look at doing this using set operations. So for an OR you might have...
    SELECT COLUMN_WE_WANT, RESULTS
    FROM TABLE_A
    WHERE COLUMN_WE_WANT IN (
         SELECT COLUMN_WE_WANT
         FROM TABLE_A
         WHERE SDO_OVERLAPBDYINTERSECT(TABLE_A.MY_SPATIAL_COLUMN,SDO_GEOMETRY(2003,4326,
         NULL, SDO_elem_info_array( 1 , 3 , 1 ),
         SDO_ORDINATE_ARRAY( lng_1,lat_1 , lng_2,lat_2 , lng_3,lat_3 , lng_4,lat_4 , lng_1,lat_1 ) )) = 'TRUE'
    UNION
         SELECT COLUMN_WE_WANT
         FROM TABLE_B
         WHERE SOME_PERCENTAGE_RATE_COLUMN < 90)For an AND, you would use INTERSECT.
    Edited by: Reggie to remove the extra INTERSECT

  • Spatial query w/ logical operators in a subquery on Linux using Oracle 10g

    Hello...
    I'm being given XML that I need to parse and create SQL from it. Below my signature is the SQL that I generate (its a simple example) and can be more elaborate due to the logical operators (AND and OR) given in the XML.
    The problem that we're seeing is performance-based: when one of the logical operator queries is Spatial-based, like below. Running it in JDBC, the query never returns.
    The spatial query just by itself returns ~300 rows (takes approximately 0.2 seconds). The "PERCENTAGE" query by itself returns about ~40000 rows (takes approximately ~.8 seconds).
    If we run the query below with 2 non-spatial subqueries, the result returns and performance is very acceptable (~ 0.9 seconds)-- the result set is about 80000 rows.
    Thanks,
    Jim
    =========================
    SELECT
    COLUMN_WE_WANT , RESULTS
    FROM
    TABLE_A
    WHERE
    COLUMN_WE_WANT IN
    SELECT
    COLUMN_WE_WANT
    FROM
    TABLE_A
    WHERE
    SDO_OVERLAPBDYINTERSECT(TABLE_A.MY_SPATIAL_COLUMN,
    SDO_GEOMETRY(2003,
    4326,
    null,
    SDO_elem_info_array( 1 , 3 , 1 ),
    SDO_ORDINATE_ARRAY( lng_1,lat_1 , lng_2,lat_2 , lng_3,lat_3 , lng_4,lat_4 , lng_1,lat_1 ) )
    ) = 'TRUE'
    OR
    COLUMN_WE_WANT IN
    SELECT
    COLUMN_WE_WANT
    FROM
    TABLE_B
    WHERE
    SOME_PERCENTAGE_RATE_COLUMN < 90
    )

    There is a spatial forum. You will likely have a far better experience there.

  • Spatial query in a distributed environment

    We want to compare two spatial tables.
    We have (at present identical) tables on two computers GEOSRV0 and NB25.
    On both we have Oracle 10.1.0.2. GEOSRV0 has the WINDOWS 2000 operating system installed, on NB25 there is WINDOWS XP Professional.
    The table is EZG:
    GEOMETRY MDSYS.SDO_GEOMETRY
    GEOMETRY_SK VARCHAR2(15)
    EZG_NR NOT NULL NUMBER
    FLAECHE FLOAT(126)
    The primary key is EZG_NR.
    There is a private database link for the user WLKREP on NB25 to user WLKREP on GEOSRV0.
    The USER_SDO_GEOM_METADATA are the same on both machines (same SRID, same DIMINFO).
    The following query – we check, if for each record on NB25 is a record on GEOSRV0 - works normally:
    SQL> select ezg_nr from
    2 ezg a where not exists
    3 (select 1 from wlkrep.ezg@wlk where ezg_nr=a.ezg_nr);
    no rows selected
    This is correct.
    We can read the geometry on the remote database:
    SQL> select * from wlkrep.ezg@wlk where rownum=1;
    GEOMETRY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
    GEOMETRY_SK EZG_NR FLAECHE
    SDO_GEOMETRY(3003, 1040001, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(182285.489, 405672.889, 0, 182248.701, 405644.889, 0, 182241.984, 405639.771, 0, 182171.753, 405538.805, 0, 182130.953, 405498.016, 0, 181971.1, 405274.91
    6, 0, 182223.796, 405176.609, 0, 182292.701, 405204.37, 0, 182439.028, 405451.66
    , 0, 182573.506, 405628.153, 0, 182643.64, 405726.59, 0, 182718.945, 405764.608,
    0, 182780.371, 405805.57, 0, 182862.191, 405843.931, 0, 182966.69, 405933.13, 0
    , 183131.065, 406064.852, 0, 183205.098, 406160.637, 0, 183231.535, 406220.959,
    0, 183266.473, 406265.415, 0, 183308.669, 406303.524, 0, 183295.305, 406364.696,
    0, 183204.283, 406331.35, 0, 183161.835, 406299.691, 0, 183134.554, 406243.403,
    GEOMETRY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
    GEOMETRY_SK EZG_NR FLAECHE
    0, 183080.454, 406171.548, 0, 183027.376, 406123.698, 0, 182914.558, 406039.291
    , 0, 182770.335, 405973.138, 0, 182593.691, 405886.413, 0, 182443.506, 405795.85
    2, 0, 182343.293, 405713.991, 0, 182285.489, 405672.889, 0))
    13 304906.065
    Now we want to compare the geometry and get
    SQL> select a.ezg_nr from
    2 wlkrep.ezg@wlk b, ezg a where a.ezg_nr=b.ezg_nr and
    3 sdo_equal(a.geometry,b.geometry) != 'TRUE';
    select a.ezg_nr from
    ERROR at line 1:
    ORA-03113: end-of-file on communication channel
    Only comparing two elements gives the same result
    SQL> select a.ezg_nr from
    2 wlkrep.ezg@wlk b, ezg a where a.ezg_nr=640 and
    3 b.ezg_nr = 640 and
    4 sdo_equal(a.geometry,b.geometry) = 'TRUE';
    select a.ezg_nr from
    ERROR at line 1:
    ORA-03113: end-of-file on communication channel
    Even if we query a non existing element
    select count(*) from ezg where ezg_nr=99999;
    COUNT(*)
    0
    SQL> select a.ezg_nr from
    2 wlkrep.ezg@wlk b, ezg a where a.ezg_nr=99999 and
    3 b.ezg_nr = 99999 and
    4 sdo_equal(a.geometry,b.geometry) = 'TRUE';
    select a.ezg_nr from
    ERROR at line 1:
    ORA-03113: end-of-file on communication channel
    Is this a bug or is a distributed spatial query not supported?
    The following statement works:
    SQL> select a.ezg_nr from
    2 wlkrep.ezg@wlk a where not exists
    3 (select 1 from ezg b where
    4 b.ezg_nr=a.ezg_nr and
    5 sdo_equal(b.geometry,a.geometry)='TRUE');
    no rows selected
    Regards
    Karl

    Actually, I have filed a TAR to Oracle on this. I also spoke to Steve Muench about it at OracleWorld, briefly. As of today, I'm trying to add to DataScroller.java to make it implement java.io.Serializable (with no luck...maybe someone can comment on what I'm doing wrong).
    Here's what I have done so far.
    Changed DataScroller.java (located in bc4jhtmlsrc.zip) to the following:
    public class DataScroller implements java.io.Serializable
    I added the following members per the docs on java.io.Serializable
    private void writeObject(java.io.ObjectOutputStream out)
    throws IOException
    // really don't need to save state. Next call will recompute what's necessary
    private void readObject(java.io.ObjectInputStream in)
    throws IOException, ClassNotFoundException
    // really don't need to load state. Next call will recompute what's necessary
    I then used jar xvf to "unjar" datatags.jar, replaced DataScroller.class with my version and used
    jar cv0Mf datatags.jar META-INF/* oracle/*
    to recreate the datatags.jar. My file is not 100% the exact same as their file, but it looks to be right to me. I ended up doing it this way because the oracle\ord\* classes are not in the bc4jhtmlsrc.zip, only in the jar file and felt this was the "safest" way to include the correct contents of the file.
    HOWEVER -- I'm sorry to say that I've then tried to run my app and get the same issue.
    Thanks,
    Jeff

  • Spatial Query with multiple geometries from 2 tables

    Hi,
    I'm using Oracle 8.1.7. I am trying to do a spatial query on two tables with multiple geometries. There are two spatial tables. One made up of points and one made up of polygons. There are 829551 rows in the table of points and 1817795 rows in the table with polygons...
    I want to find all polygons where one of this points is within it...
    This query is pretty intensive querying two large spatial tables against each other and so I need to find the most efficient way of running this query. I've been running variations of my query for the last two week and every time it's bombed out with various errors after 12-24 hrs processing like out of memory, out of tablespace, out of processing, invalid index etc etc etc. I need to get this query run asap... Any tips would be gratefully appreciated..
    For the session running the query I've allocated 16M sort area with
    ALTER SESSION SET SORT_AREA_SIZE=16777216;
    Below is the query I'm running... How can I improve this please? BTW PARCEL_OVERLAPS contains the points and TP$_PARCEL_AREAS the polygons.
    SELECT lu.LNU_PARCEL_ID
         FROM
              seventy.PARCEL_OVERLAPS po,
              imap_topol.TP$_PARCEL_AREAS pa,
              TP$_PARCEL_CENTROID_AREA pca,
              TDCR_LAND_UNIT lu
         WHERE
              SDO_FILTER(po.geometry, pa.area,
              'querytype=WINDOW') = ’TRUE’ and
              sdo_within_distance(po.geometry,pa.area,'distance=0')='TRUE' and
              pa.delete_date is null and
              Lu.LNU_LAND_UNIT_UNIQUE_NUM = pca.CENTROID_ID and
              pa.AREA_ID = pca.AREA_ID and
              pca.DELETE_DATE IS NULL and
              pa.DELETE_DATE IS NULL;

    Albert,
    Thanks for your reply and the tips you've given. The tp$_parcel_areas table will always be bigger so I've changed the order to sdo_within_distance(pa.area,po.geometry,'distance=0')='TRUE'. The requested counts for those queries are
    12:26:29 [email protected]:SQL> select count(*)
    13:46:22 2 from seventy.PARCEL_OVERLAPS;
    COUNT(*)
    612
    13:48:12 [email protected]:SQL> select count(*)
    13:48:17 2 from imap_topol.TP$_PARCEL_AREAS pa,
    13:48:21 3 TP$_PARCEL_CENTROID_AREA pca
    13:48:21 4 where pca.DELETE_DATE IS NULL
    13:48:21 5 and pa.DELETE_DATE IS NULL
    13:48:21 6 and pa.AREA_ID = pca.AREA_ID;
    COUNT(*)
    1310665
    There was no reason for both filter and within_distance. I did try use the anyinteract but for some reason that does not return the desired results(I've added one id row as a test to make sure it returns desired results). Plus Oracle have recomended using the within distance for better performance..
    so the explan plan for
    14:38:37 [email protected]:SQL> EXPLAIN PLAN FOR
    14:38:50 2 SELECT lu.LNU_PARCEL_ID
    14:38:50 3 FROM
    14:38:50 4 seventy.PARCEL_OVERLAPS po,
    14:38:50 5 imap_topol.TP$_PARCEL_AREAS pa,
    14:38:50 6 TP$_PARCEL_CENTROID_AREA pca,
    14:38:50 7 TDCR_LAND_UNIT lu
    14:38:50 8 WHERE
    14:38:50 9 sdo_within_distance(pa.area,po.geometry,'distance=0')='TRUE' and
    14:38:50 10 pa.delete_date is null and
    14:38:50 11 Lu.LNU_LAND_UNIT_UNIQUE_NUM = pca.CENTROID_ID and
    14:38:50 12 pa.AREA_ID = pca.AREA_ID and
    14:38:50 13 pca.DELETE_DATE IS NULL and
    14:38:50 14 pa.DELETE_DATE IS NULL;
    is
    Plan Table
    | Operation | Name | Rows | Bytes| Cost | Pstart| Pstop |
    | SELECT STATEMENT | | 4G|32920G| 547M| | |
    | NESTED LOOPS | | 4G|32920G| 547M| | |
    | MERGE JOIN | | 547M| 2029G| 230124 | | |
    | SORT JOIN | | 1M| 36M| 85014 | | |
    | MERGE JOIN | | 1M| 36M| 50019 | | |
    | SORT JOIN | | 1M| 17M| 21650 | | |
    | TABLE ACCESS FULL |TP$_PARCE | 1M| 17M| 485 | | |
    | SORT JOIN | | 1M| 22M| 28369 | | |
    | TABLE ACCESS FULL |TDCR_LAND | 1M| 22M| 2127 | | |
    | SORT JOIN | | 42K| 160M| 145111 | | |
    | TABLE ACCESS FULL |TP$_PARCE | 42K| 160M| 12697 | | |
    | TABLE ACCESS FULL |PARCEL_OV | 817 | 3M| 1 | | |
    14:43:14 [email protected]:SQL> explain plan for
    14:43:23 2 SELECT pa.AREA_ID
    14:43:23 3 FROM seventy.PARCEL_OVERLAPS po,
    14:43:23 4 imap_topol.TP$_PARCEL_AREAS pa
    14:43:23 5 WHERE SDO_RELATE(po.geometry, pa.area,'mask=ANTINTERACT querytype=WINDOW') = 'TRUE'
    14:43:23 6 and pa.DELETE_DATE IS NULL;
    Plan Table
    | Operation | Name | Rows | Bytes| Cost | Pstart| Pstop |
    | SELECT STATEMENT | | 6M| 50G| 10M| | |
    | NESTED LOOPS | | 6M| 50G| 10M| | |
    | TABLE ACCESS FULL |PARCEL_OV | 817 | 3M| 1 | | |
    | TABLE ACCESS FULL |TP$_PARCE | 850K| 3G| 12697 | | |
    14:45:03 [email protected]:SQL> explain plan for
    14:45:04 2 SELECT pa.AREA_ID
    14:45:05 3 FROM seventy.PARCEL_OVERLAPS po,
    14:45:05 4 imap_topol.TP$_PARCEL_AREAS pa
    14:45:05 5 WHERE SDO_RELATE(pa.area, po.geometry,'mask=ANTINTERACT querytype=WINDOW') = 'TRUE'
    14:45:05 6 and pa.DELETE_DATE IS NULL;
    Plan Table
    | Operation | Name | Rows | Bytes| Cost | Pstart| Pstop |
    | SELECT STATEMENT | | 6M| 50G| 863554 | | |
    | NESTED LOOPS | | 6M| 50G| 863554 | | |
    | TABLE ACCESS FULL |TP$_PARCE | 850K| 3G| 12697 | | |
    | TABLE ACCESS FULL |PARCEL_OV | 817 | 3M| 1 | | |
    --------------------------------------------------------------------------------

  • Poor performance with Oracle Spatial when spatial query invoked remotely

    Is anyone aware of any problems with Oracle Spatial (10.2.0.4 with patches 6989483 and 7003151 on Red Hat Linux 4) which might explain why a spatial query (SDO_WITHIN_DISTANCE) would perform 20 times worse when it was invoked remotely from another computer (using SQLplus) vs. invoking the very same query from the database server itself (also using SQLplus)?
    Does Oracle Spatial have any known problems with servers which use SAN disk storage? That is the primary difference between a server in which I see this poor performance and another server where the performance is fine.
    Thank you in advance for any thoughts you might share.

    OK, that's clearer.
    Are you sure it is the SQL inside the procedure that is causing the problem? To check, try extracting the SQL from inside the procedure and run it in SQLPLUS with
    set autotrace on
    set timing on
    SELECT ....If the plans and performance are the same then it may be something inside the procedure itself.
    Have you profiled the procedure? Here is an example of how to do it:
    Prompt Firstly, create PL/SQL profiler table
    @$ORACLE_HOME/rdbms/admin/proftab.sql
    Prompt Secondly, use the profiler to gather stats on execution characteristics
    DECLARE
      l_run_num PLS_INTEGER := 1;
      l_max_num PLS_INTEGER := 1;
      v_geom    mdsys.sdo_geometry := mdsys.sdo_geometry(2002,null,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(0,0,45,45,90,0,135,45,180,0,180,-45,45,-45,0,0));
    BEGIN
      dbms_output.put_line('Start Profiler Result = ' || DBMS_PROFILER.START_PROFILER(run_comment => 'PARALLEL PROFILE'));  -- The comment name can be anything: here it is related to the Parallel procedure I am testing.
      v_geom := Parallel(v_geom,10,0.05,1);  -- Put your procedure call here
      dbms_output.put_line('Stop Profiler Result = ' || DBMS_PROFILER.STOP_PROFILER );
    END;
    SHOW ERRORS
    Prompt Finally, report activity
    COLUMN runid FORMAT 99999
    COLUMN run_comment FORMAT A40
    SELECT runid || ',' || run_date || ',' || run_comment || ',' || run_total_time
      FROM plsql_profiler_runs
      ORDER BY runid;
    COLUMN runid       FORMAT 99999
    COLUMN unit_number FORMAT 99999
    COLUMN unit_type   FORMAT A20
    COLUMN unit_owner  FORMAT A20
    COLUMN text        FORMAT A100
    compute sum label 'Total_Time' of total_time on runid
    break on runid skip 1
    set linesize 200
    SELECT u.runid || ',' ||
           u.unit_name,
           d.line#,
           d.total_occur,
           d.total_time,
           text
    FROM   plsql_profiler_units u
           JOIN plsql_profiler_data d ON u.runid = d.runid
                                         AND
                                         u.unit_number = d.unit_number
           JOIN all_source als ON ( als.owner = 'CODESYS'
                                   AND als.type = u.unit_type
                                   AND als.name = u.unit_name
                                AND als.line = d.line# )
    WHERE  u.runid = (SELECT max(runid) FROM plsql_profiler_runs)
    ORDER BY d.total_time desc;Run the profiler in both environments and see if you can see where the slowdown exists.
    regards
    Simon

Maybe you are looking for

  • Creation of pdf - which product / products do i need

    I am getting a little confused so would like some help. I want to create an editable pdf which can be filled in by a user on a mobile device. I then want the pdf file created to be automatically emailed to an email address. I need to be able to set s

  • HT4236 How do I get rid of the photo stream on my iphone 5?!!!

    How do I get rid of the photo stream on my iphone 5? Loads of weird icons I don't want/need.  Tx

  • Smart Playlists Won't Update

    Since I updated to iTunes 6.0.3 I can no longer change the Date Added section of my Smart Playlists. So I tried creating a new Smart Playlist and it won't let me save a Date Range - no matter what I enter, it beeps when I close it and then when I che

  • Jumpy and Blurry Animation in Google Chrome

    Hi! I seem to have problems getting my animation to run smoothly in Google Chrome... seems to work ok in Internet Explorer. Am I doing something wrong? Untitled thank you so much any help is appreciated! Christina

  • What is the best ADSL modem to use with AEBS in the UK?

    I'm currently using the Netgear DG834G with it's wireless functionality switched off, and my AEBS (gigabit) is set up as a bridge. When I've tried to resolve various problems such as getting iChat AV working I've got the impression that I might have