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

Similar Messages

  • Spatial query in a Distributed Database

    Y have 2 oracle dbs: db1 in machine 1 and db2 in machine 2.
    In machine 1 i have the tables and the index tables and in machine 2 i want make the spatial queries in these tables on machine 1. I make the grants to tables in machine 2. But when i execute the select, oracle returns:ORA-13226 interface not supported without a spatial index. But i created the indexes in machine 1. HElp-me, please!!!!
    Sory my english.

    In the real world, you wouldn't design a system where you maintained referential integrity between two databases owned by two different companies. You wouldn't want two organizations to have systems that were that tightly coupled. You might replicate reference data from one database to the local database and then declare integrity constraints between the replicated reference table and other tables in the system, but even that may be more tightly coupled than you'd normally want. The owner of the parent table, for example, would want to be able to delete records from the master after some retention period without worrying that some downstream database still had child records that referred to the parent. The owners of the parent table might also have lots of different downstream consumers and wouldn't want to have to write new code every time a new consumer came along.
    If you want to ignore multi-user issues, you could write relatively simplistic triggers. When you insert or update data into the child table, do a select against the parent table and throw an exception if no rows are found. When you delete data from the parent table, do a select against the child table and throw an exception if rows are found. If you want to handle the case of updating a primary key, you could do that as well. These triggers, though, would not work if there are multiple users modifying the tables simultaneously-- someone may have deleted a parent record in another session that isn't committed, for example, when your child table trigger reads the data.
    Justin

  • SAPehpi and Windows distributed environment

    Hi,  We have Windows platform with Oracle databases in distributed and high-availability environment.
    I have tried to install EHP1 for PI 7.1.  I have used SAPehpi as described in installation manual.  SAPehpi will stop
    when querying database information.  It uses brtools and this will fail because Oracle is another server and you cannot
    use brtools in primary application server os-level.
    SAPehpi should be started on primary application server as described in manual. But the instructions how to use tool
    in distributed environment just give information about microsoft cluster SCS and ASCS handling. I need to know
    howto use this tool with remote Oracle database.
    Why I can't just use SAINT and JSPM, I don't need slow and complicated tools like this. I don't need shadow instance
    because just building up the systems.
    Do I have to install temporary PAS instances to database server to get this work? Any experience using this tool
    on distributed env?
    BR. Jari

    > My question was actually criticism againts this new tool.  SAINT and JSPM were working fine in already installed and configured
    > SAP systems.
    Yes - you're right - but they require a HUGE downtime since the whole system must be locked as the first runtime step of SAINT is started; depending on the speed of the system and the number of packages you'd have downtimes of two days or more; this is fine for test- and/or qa-systems but it's not for production systems.
    > Now this SApehpi tool doesn't work in current installation without changing configurations.
    SAPehpi is basically nothing else than a SAPup - so a real upgrade (as if you'd upgrade e. g. from 4.6c to ERP 6.0 or from XI 3.0 to PI 7.1).
    I agree with you that the communication of that fact was not clear, one can get the impression, that the installation of EHP1 is the same as a support package installation. It is not, it's a real upgrade of the system requiring lots of additional work.
    > We have already configured DBAcockpit via SAP gateways because remote shell was not wanted to use.
    I see.
    > But I haven't found a way to tell SAPehpi how to use gateway for brtools. Solution cannot be that I have to
    > change SAP supported installation just to get EHP1 installed.
    >
    > I think this tool is released without proper testing.
    That tool was basically used for all upgrades that have been done since 2.x (R3up, SAPup) and is now "renamed" to SAPehpi. The Java upgrade functionality was integrated, former combined upgrades required two upgrade programs (SAPup and SAPJup) running and synchronizing at the same time.
    I understand your problem - I'm not aware of any way to tell SAPehpi to use the RFC or gateway functionality to connect to the database; I suggest you write an email to "EHP-TECH at SAP dot COM", maybe those guys and girls have an idea how to do that.
    EHP1 for PI 7.1 is a system upgrade, not a support package installation.
    Markus

  • 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.

  • SSRS - SQL Server Spatial Query

    Hi, I was hoping someone could help me.
    I'm creating an SSRS report with Map and importing points via SQL Server Spatial query. I have a db table with 8,000 points bu the import only ever brings in the first 2,000 queried (no matter what the filter is). Is there a limitation in SSRS that can be
    changed via a configuration setting?
    Many thanks in advance for any help on this,
    Steve.

    Really appreciate you coming back so quick Olaf.
    No its a straightforward query (select AccountNum, Name, Address, Longitude, Lattitude, UrbanArea, County, MI_STYLE, MI_PRINX, SP_GEOMETRY from <table>)
    Just to give the whole picture. I had 8,000 points in MapInfo version 10. I imported them to SQL Server 2012 via MapInfo Easy Loader.
    The SQL Server spatial points import to SSRS and the Bing overlay map works great (so they import to correct space) but its only a subset of the points that import. I can pick any subset using the WHERE clause but I cannot get all 8,000 points.  
    I was hoping there was a configuration setting somewhere in SSRS that was causing the problem.

  • Deploy to Application Server Failed on a distributed environment

    Hi All,
    I am trying to configure new Hyperion verion 11.1.2.2 on distributed environment but during configuring calculation manager to application server failed and getting error message like "Deploy to Application Server Failed". I am not sure what is issue and how to fix it. I have tried to read log files but I am not able to undersantd where to look and debug this issue.
    My Hyperion Environment over view as a below:-
    1- I have used Microsoft VMWARE to build my Hyperion Enviornment
    2- I have created 1 window server 2003 domain and made 4 clients of that domain. (All these systems have windows server 2003 installed). I have given name to each client server i.e. System A, System B, System C, System D
    3- I have installed SQL 2005 and created databases for all Hyperion components i.e. Shared services, calculation manager, epma on a system A
    5- I have installed and configured foundation services and weblogic server on a system B. (In this system I have installed and configured shared services, weblogic, workspace, and able to deploye application server on a same system)
    6- On a system A I am able to complete installation for hyperion Performance Management Architect and Calculation Manager and able to finish all type of configuration for these two components but as soon as system trying to configure any related to APPLICATION SERVER services it fails to configure. On a configuration summary page system shows everything is configured but APPLICATION SERVER says FAILED wrtten on a red color letters.
    I have explored log files and found that Calculation Manager application server failed to deploy or Deploy to Application server failed.....
    Since, I am not sure where to look and how to debug this issue I am requesting to all hyperion friends to help and guide me to debug as I have been trying to install this product since last friday and still no out put....
    I will be really thankful if someone share his or her wisdom to help me....
    Thank you to all in Advance.....
    Thanks,
    Safi

    Did you install all the WebLogic web applications on the foundation machine as well as the machine they are going to be deployed to.
    "On the machine on which you plan to administer the WebLogic Server, you must install all Web applications for all applications you plan to deploy on any machine in the environment. (The WebLogic Administration Server is installed and deployed on the Foundation Services machine.)"
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Managed to make run EPM 11.1.2.1 in a distributed environment?

    Hi,
    please see blow...
    so far the installation and configuration worked well.
    However, in shared services under the essbase node there are no applications available .
    The same is when I try to priovision a user (for apps).
    Can someone give me a hint how to take a closer look to solfe the problem.
    Evething else seems to work fine. Essbase is up an running and it's accessible via the EAS console.
    Thank you in advance!
    Andre
    Hi all,
    a more general question:
    Has anybody successfully managed to make run EPM 11.1.2.1 in a distributed environment?
    If yes - please let me know it, just to give me a littel bit of hope.
    I have tried to install and config a EPM 11.1.2.1 like this:
    All Servers Win208R2.
    1. Http and J2EE Server
    2. Essbase Server
    3. Others Server
    4. RDBMS-Server (Repository)
    However the the OPMN process on the essbase server does not start and thus I cannot go the next steps in my install/conifg process.
    Thank you in advance and best Regards.
    Andre
    Edited by: andreml on May 17, 2011 9:47 AM
    Edited by: andreml on May 17, 2011 9:50 AM

    Hi Pablo,
    Thanks for your inputs
    - I am a bit familiar with F5's BIG/IP load-balancing methods - round-robin, least connections mode and dynamic ratio - while intelligently supporting session persistence.
    - We can also manage load balancing via the WebLogic Admin console, and as you have noted by the OHS as well - which I am not familiar with...
    This is a newbie question - wouldn't having 3 different agents managing load-balancing complicate things..? As the WebLogic server sits on top of the OHS, I guess they work together to provide load-balancing and configuring the WebLogic for clustering/load-balancing should affect the OHS configuration as well. Is this how it works at the high-level or is it more complicated?
    The EPM System Configurator creates the required cluster and adds servers to the cluster when we deploy the Web applications in the final step of the configuration. So we need not manually configure WebLogic for clustering. But when and where does one configure load-balancing..?
    Thanks again.. Essbase infrastructure is indeed a vast topic as it is interesting... :)

  • Hyperion EPM Installation in a distributed environment...

    Hi all,
    I am planning to install Hyperion products in a distributed environment. I have three machines say, Machine A, Machine B, Machine C. All of the machines have Windows 2003 operating system. And only Machine B and Machine C have Application Server installed. Now I give a brief structure as what machine holds which products-
    Machine A:-
    Oracle 11g
    Essbase Server
    Machine B:-
    Foundation Services- Shared Services
    Essbase Studio
    Essbase Integration Services
    Smart Search
    Administration Services
    Provider Services
    Habnet
    Essbase Client
    Machine C:-
    EPMA
    Planning
    Workspace
    I create a separate database for each component, say, to configure Essbase I have Hyess database, to configure Planning I have Hyplan database.
    And I configure Shared Services to the same database, say, Hyshs from each machine. In that case I just follow the previously congigured database.
    Machine B and Machine C components are deployed to their respective Application Server.
    Can anyone please tell me if this is proper or not? Any kind of modification or recommendation would be appreciated.
    Thanks.

    Hi John,
    thanks for your response. Yes, the Process Manager does not start. I had a look at the Event Viewer. And it shows error and the error properties description is something like this-
    Service cannot be started. Hyperion.DimensionServer.ProcessManager.Interface.ProcessManagerException: Cannot initialize the Session Manager. ---> System.Exception: System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
    at System.Data.OracleClient.OCI.DetermineClientVersion()
    at System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
    at System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions)
    at System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
    at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
    at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningOb...
    For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

  • 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 | | |
    --------------------------------------------------------------------------------

  • Export with embedded spatial query

    I am trying to use the exp utility to export spatial data. I am using the "query" parameter to specify a spatial query based on another spatial layer.
    I have two layers. Admin1 has lots of administrative boundaries. PE has three polygons in it over different sections of my data set. I want to get the data extracted from admin1 that exists in these areas to an export file(along with all the triggers and other related database objects). I was hoping this approach would work
    I am getting errors saying that the identifier is too long.
    Here is the par file:
    file=1.exp
    log=1.log
    tables=(admin1, pe)
    query="""WHERE mdsys.SDO_RELATE(GEOM1,pe.GEOM, 'MASK=INSIDE QUERYTYPE=WINDOW')='TRUE' OR SDO_RELATE(GEOM2,pe.GEOM, 'MASK=INSIDE QUERYTYPE=WINDOW')='TRUE'"""
    I get:
    Export: Release 10.2.0.1.0 - Production on Wed May 10 11:56:14 2006
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Produc
    tion
    With the Partitioning, OLAP and Data Mining options
    Export done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
    About to export specified tables via Conventional Path ...
    . . exporting table ADMIN1
    EXP-00056: ORACLE error 972 encountered
    ORA-00972: identifier is too long
    . . exporting table PE
    EXP-00056: ORACLE error 972 encountered
    ORA-00972: identifier is too long
    Export terminated successfully with warnings.
    Is this even possible? Can you use the exp query parameter to perform a spatial operation? Did this work? I am accustom to seeing record counts next to the exported tables, and they are not present in the output from exp. The export file is not empty. It exported all the features, not the subset I had requested.
    How can I structure the query differently so that I get the export file with just the lines that fall within the polygons?
    Thanks,
    John

    I am trying to use the exp utility to export spatial data. I am using the "query" parameter to specify a spatial query based on another spatial layer.
    I have two layers. Admin1 has lots of administrative boundaries. PE has three polygons in it over different sections of my data set. I want to get the data extracted from admin1 that exists in these areas to an export file(along with all the triggers and other related database objects). I was hoping this approach would work
    I am getting errors saying that the identifier is too long.
    Here is the par file:
    file=1.exp
    log=1.log
    tables=(admin1, pe)
    query="""WHERE mdsys.SDO_RELATE(GEOM1,pe.GEOM, 'MASK=INSIDE QUERYTYPE=WINDOW')='TRUE' OR SDO_RELATE(GEOM2,pe.GEOM, 'MASK=INSIDE QUERYTYPE=WINDOW')='TRUE'"""
    I get:
    Export: Release 10.2.0.1.0 - Production on Wed May 10 11:56:14 2006
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Produc
    tion
    With the Partitioning, OLAP and Data Mining options
    Export done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
    About to export specified tables via Conventional Path ...
    . . exporting table ADMIN1
    EXP-00056: ORACLE error 972 encountered
    ORA-00972: identifier is too long
    . . exporting table PE
    EXP-00056: ORACLE error 972 encountered
    ORA-00972: identifier is too long
    Export terminated successfully with warnings.
    Is this even possible? Can you use the exp query parameter to perform a spatial operation? Did this work? I am accustom to seeing record counts next to the exported tables, and they are not present in the output from exp. The export file is not empty. It exported all the features, not the subset I had requested.
    How can I structure the query differently so that I get the export file with just the lines that fall within the polygons?
    Thanks,
    John

  • 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

  • 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.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • 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

  • 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.

Maybe you are looking for