Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

11gR2 - ORA-13268: error obtaining dimension from USER_SDO_GEOM_METADATA

908083Feb 20 2012 — edited Jun 29 2012
Hi,

I'm getting the above error when running a SDO_Within_Distance query, SDO_Geom_Metadata is populated correctly for the table, so why would the error be thrown that indicates it's missing?

Here's my reproducable test case. The query that shows the error looks a bit basic and not very useful, but has been stripped down to the simplest form that generates the error. Any help appreciated.



Environment = Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
OS = Oracle Enterprise Linux Server release 5.2 (Carthage) 2.6.18 92.el5 (32-bit)

Here's my repeatable test-case which generates the error...

-- Tablespaces used for test case...
-- Event_ID_01_TS
-- Event_ID_02_TS
-- Event_1_TS
-- Event_2_TS
-- Event_Default_TS

CONNECT Sys/...@OEL5DB AS SysDBA

DROP USER TEST_USER CASCADE;
CREATE USER TEST_USER IDENTIFIED BY x DEFAULT TABLESPACE Users TEMPORARY TABLESPACE Temp ACCOUNT UNLOCK;

GRANT CONNECT TO TEST_USER;
GRANT RESOURCE TO TEST_USER;
GRANT CREATE TABLE TO TEST_USER;

CONNECT TEST_USER/x@OEL5DB

CREATE TYPE Partition_type AS OBJECT
(
ID INTEGER,
eventDate Timestamp(3),
eventLocation MDSys.SDO_Geometry
)
/

-- Range Partitioned Object Table, uses Hash-Partitioned Global PK index
CREATE TABLE Event_Table
OF Partition_Type (PRIMARY KEY (ID) USING INDEX
GLOBAL PARTITION BY HASH (ID) PARTITIONS 2
STORE IN
(
Event_ID_01_TS,
Event_ID_02_TS
)
STORAGE
(
INITIAL 1M PCTINCREASE 0 NEXT 1M
) NOLOGGING
)
OBJECT IDENTIFIER IS PRIMARY KEY
PARTITION BY RANGE(eventDate)
(
PARTITION Event_Part_1 VALUES LESS THAN (To_Date('07-Feb-2012','DD-Mon-YYYY')) TABLESPACE Event_1_TS,
PARTITION Event_Part_2 VALUES LESS THAN (To_Date('08-Feb-2012','DD-Mon-YYYY')) TABLESPACE Event_2_TS,
PARTITION Event_Default VALUES LESS THAN (MAXVALUE) TABLESPACE Event_Default_TS
)
PCTFREE 0
STORAGE (INITIAL 1M
PCTINCREASE 0
NEXT 1M);

ALTER TABLE Event_Table ADD CONSTRAINT Event_Table_CC1
CHECK (eventDate IS NOT NULL AND
eventLocation IS NOT NULL AND
eventLocation.SDO_Point.X IS NOT NULL AND
eventLocation.SDO_Point.Y IS NOT NULL AND
eventLocation.SDO_Point.Z IS NULL);

CREATE INDEX Event_Table_I1 ON Event_Table (eventDate)
LOCAL
(
PARTITION Event_Part_1 TABLESPACE Event_1_TS PCTFREE 0 STORAGE (INITIAL 1M PCTINCREASE 0 NEXT 512K),
PARTITION Event_Part_2 TABLESPACE Event_2_TS PCTFREE 0 STORAGE (INITIAL 1M PCTINCREASE 0 NEXT 512K),
PARTITION Event_Default TABLESPACE Event_Default_TS PCTFREE 0 STORAGE (INITIAL 1K PCTINCREASE 0 NEXT 1K)
)
TABLESPACE Event_Default_TS STORAGE (INITIAL 1K PCTINCREASE 0 NEXT 1K) NOLOGGING PARALLEL;

INSERT INTO User_SDO_Geom_Metadata
(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
VALUES
(
'Event_Table',
'eventLocation',
SDO_DIM_ARRAY
(
SDO_DIM_ELEMENT('Longitude',-180,180,1),
SDO_DIM_ELEMENT('Latitude', -90, 90,1)
),4326);

-- Create partitioned spatial index...
CREATE INDEX Event_Table_SI1
ON Event_Table(eventLocation)
INDEXTYPE IS MDSYS.SPATIAL_INDEX
PARAMETERS
('Layer_gType=POINT sdo_rtr_pctfree=0 Tablespace=Event_Default_TS Initial=1K PctIncrease=0 Next=1K')
LOCAL
(
PARTITION Event_Part_1 PARAMETERS ('Layer_gType=POINT sdo_rtr_pctfree=0 Tablespace=Event_1_TS Initial=1M PctIncrease=0 Next=512K'),
PARTITION Event_Part_2 PARAMETERS ('Layer_gType=POINT sdo_rtr_pctfree=0 Tablespace=Event_2_TS Initial=1M PctIncrease=0 Next=512K'),
PARTITION Event_Default PARAMETERS ('Layer_gType=POINT sdo_rtr_pctfree=0 Tablespace=Event_Default_TS Initial=1K PctIncrease=0 Next=1K')
) PARALLEL;

ALTER TABLE Event_Table DROP PARTITION Event_Default;

-- Create some test data...
declare
event partition_type;
BEGIN

DELETE Event_Table;

-- 1st Partition data...
event := new Partition_Type (1, To_Date('06-Feb-2012 12:00:00','DD-Mon-YYYY HH24:MI:SS'),
SDO_Geometry
(2001, 4326,SDO_Point_Type(10, 10, Null), Null,Null));
INSERT INTO Event_Table VALUES event;

event := new Partition_Type (2, To_Date('06-Feb-2012 13:00:00','DD-Mon-YYYY HH24:MI:SS'),
SDO_Geometry
(2001, 4326,SDO_Point_Type(20, 20, Null), Null,Null));
INSERT INTO Event_Table VALUES event;

-- 2nd Partition data...
event := new Partition_Type (3, To_Date('07-Feb-2012 14:00:00','DD-Mon-YYYY HH24:MI:SS'), -- sysdate,
SDO_Geometry
(2001, 4326,SDO_Point_Type(30, 30, Null), Null,Null));
INSERT INTO Event_Table VALUES event;

event := new Partition_Type (4, To_Date('07-Feb-2012 15:00:00','DD-Mon-YYYY HH24:MI:SS'), -- sysdate,
SDO_Geometry
(2001, 4326,SDO_Point_Type(40, 40, Null), Null,Null));
INSERT INTO Event_Table VALUES event;

COMMIT;

END;
/

---------------------------------------------------------------------------------------------------------------
-- now run sql that produces error...
SELECT E1.ID, E2.ID
FROM (SELECT E.EventLocation,
E.ID,
E.EventDate
FROM Event_Table E) E1,
Event_Table E2
WHERE (SDO_Within_Distance(E2.EventLocation, E1.EventLocation, 'distance=1000 unit=meter') = 'TRUE')
AND (E2.EventDate BETWEEN (E1.EventDate - NumToDSInterval(1,'Minute'))
AND (E1.EventDate + NumToDSInterval(1,'Minute')));

SELECT E1.ID, E2.ID
*
ERROR at line 1:
ORA-13268: error obtaining dimension from USER_SDO_GEOM_METADATA
ORA-06512: at "MDSYS.MD", line 1723
ORA-06512: at "MDSYS.MDERR", line 8
ORA-06512: at "MDSYS.SDO_3GL", line 1097
---------------------------------------------------------------------------------------------------------------


Running the query without the EventDate predicate and just the SDO_Within_Distance clause runs without the error, so it's unclear as to where the error message is pointing to.

Regards,
Mark
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 27 2012
Added on Feb 20 2012
4 comments
803 views