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,
SafiDid 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 AMHi 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,
JohnI 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,
JohnHave 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
-
Warning in data source activation in R/3
Hi experts, While activating the data source 0salesorg_attr it shows the following warning: ============================================ Generating DataSource 0SALESORG_ATTR The extraction structure V_VKORG_BW of DS 0SALESORG_ATTR is a view. This all
-
Interactive Reporting is not opening in Hyperion workspace
Hi, I have installed Hyperion Foundation Services 11.1.1.1.0 and IR 11.1.1.1.0 I am trying to access IR through Workspace I could see the procedure like File-> New-> Document_> interactive reporting document. Then i have selected a .oce file to make
-
I have installed Java 1.4.1 and am now trying to install Java 3D. When i try to run the demos from the Java3D folder i get an error: "No compatible device found, please switch to other display mode and try again". How do i solve this problem, so that
-
I have about 10000 images of different persons with dimension of 640*480. I wan to crop face from these images to dimension of 200*280. The location of face varies in differnt pics. So, please let me know step by step how can I perform this using the
-
Good day, I'm working in Oracle Forms Builder 10g (10.1.2.0.2) and I keep coming across functions in the PL/SQL code that are used to modify values in the forms. Unfortunately I don't have a design document for my system so I can't tell the API of th