Flashback query: Historical rows not always returned

Hello all,
I have a problem using flashback queries, like e.g.
SELECT id, description, versions_starttime, versions_operation, versions_xid FROM testtable VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE
The point is, that the historical rows are returned only for a certain period of time. Executing the above query after a certain period of time will result in returning only the current rows in the table (having versions_xxx columns returned as NULL).
Do you have any ideas how I can fix it so I can always access the historical rows?
Is it possible to use flashback queries to implement a complete history mechanism (including restore of rows) ?
Many thanks in advance and best regards,
Martin

michaels2 wrote:
In 11g we now have the option of total recall with this technique.But unfortunately it's not that easy with the current implementation. I wrote a blogpost some time ago about this exact topic: http://rwijk.blogspot.com/2007/11/setting-up-journaling-using-flashback.html
Regards,
Rob.

Similar Messages

  • Flashback query works, but not flashback versions query

    This is a test database (Oracle10g 10.1.0.5), not in archivelog mode. I deleted one row 2 hours ago. I can still use flashback query:
    select * from tm_instances as of timestamp to_timestamp('STARTTIME_HERE') to view this row. But I can't use the following flashback versions query:
    SELECT versions_startscn, versions_starttime,
    versions_endscn, versions_endtime,
    versions_xid, versions_operation from tm_instances VERSIONS BETWEEN TIMESTAMP to_timestamp('STARTTIME_HERE') and MAXVALUE
    It gave the following error:
    ORA-30052: invalid lower limit snapshot expression
    So I guess flashback query works better than flashback versions query?
    undo_retention is set to 900 by default here.
    Thanks,
    Hai

    currently function returns all mydate rows, i just want mydesired date rowsCheck if there is a column in the table with the same name as the function parameter. It's the most probable reason of such DML operations behaviour in PL/SQL procedures and function.
    Rgds.

  • SQL Query Single Row not working

    My workflow contain a Query Single row activity. I have added a where clause in Arabic which is not working. If I remove the Arabic condition its working.
    Is there something to do with the server?
    My server is windows 2008 R2 Server.
    The same workflow is running perfectly on another identical environment.
    Thanks for any valuable suggestions,
    Nith

    Hi Sastry,
    Connection to the database is trough Pivotal, I have tried ODBC connection as well but same error
    The instruction at "0x005d53e0" refereced memory at "0x00000014'. The memory could not be "read".
    With ODBC I have always compilation error saying
    Query Engine Error: '42000:[Microsoft][ODBC SQL Server Driver][SQL server] Incorrect syntax near the keyword 'SELECT'. '.
    but even the simple select statment is showing the error.
    Do you think the error is with Drivers???
    Regards
    Stefan

  • Query rewrite does not always work?

    Hi -
    I created several cubes at this point.
    Cube #1: simple time and volume. Query re-write works great.
    Cube #2: simple customer (geography) hierarchy and volume. Query re-write works great.
    Cube #3: Added product dimension along with time and customer. I also added ytd volume and same period prior period volume calculations.
    The Cube#3 is not peforming a query re-write.
    All cubes have MV and Query rewrite enabled.
    I am using lastest verisons of 11G and AWM.
    Any ideas how to debug why query rewrite is not working?
    Thanks,
    Frank.

    Hi Frank,
    See the information at the following link:- https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=577293.1
    This is titled 'Oracle OLAP 11g: How to ensure use of Cube Materialized Views/Query Rewrite'
    I hope it helps
    Thanks,
    Stuart Bunby
    OLAP Blog: http://oracleOLAP.blogspot.com
    OLAP Wiki: http://wiki.oracle.com/page/Oracle+OLAP+Option
    OLAP on OTN: http://www.oracle.com/technology/products/bi/olap/index.html
    DW on OTN : http://www.oracle.com/technology/products/bi/db/11g/index.html

  • In range and coerce function does not always return a correct result

    I passed 20E6 as DBL to "upper limit" input of "in-range and coerce" built-in VI, and also passed 20E6 as DBL to the X input of the VI, yet it says that it is not in range.  (Note: lower limit was hardwired to 0.)
    Apparently, there is some kind of roundoff error going on with LabVIEW.
    I've seen this before when just wiring 2 doubles of the same value to an "=?" built-in VI.
    When I display 30 digits or so, the values then display slightly differently.
    How do 2 numbers which were entered by ME (not anything else) precisely as 20E6 manage, over time or by passing thru VIs, or by being copied & pasted -- or whatever -- to become "different"?

    This simpliest 'In Range and coerce' does not work on my setup (8.0 and XP). The result should be 0 but it returns -5.
    Attachments:
    Coerce Not Working.vi ‏8 KB

  • Cascading LOV always returns first row in af:query

    HI
    JDEV 11.1.1.3.0
    A strange thing is happening with my cascading LOV which is input text with LOV.
    I have a read only table with a query section. I then also bring up any of the tables rows in a popup with single record view where the row is then in an af:form for inserting and updating.
    Both the af:query and af:form have the cascaing LOV in them.
    When testing the cascading LOV in the BC Browser it works fine. When I use it in the popup in the af:form record it works fine. But in the af:query section, no matter which row I choose in the LOV, it always returns the 1st row of the LOV back to my input text component.
    Has anyone experienced this...any ideas?
    Thanks,
    Mario

    Aha...and the above log message lead me to the solution!! :-)
    The VO is based on an Oracle data dictionary view, DBA_TAB_COLUMNS. When you create the read only VO, by default it does not create any of the attributes as "key" attributes, because the oracle view has no primary key.
    Setting owner, tableName and columnName as key attributes solved this issue, now my cascading LOV works in the BC Tester, af:query component and my af:form component.
    Regards,
    Mario

  • SQL Query works in SQL Developer, but not always in MII

    Hi all,
    I encountered a strange behaviour with a query in MII 12.0.2. Maybe someone has a guess what happens.
    I have created a SQL query which runs against Oracle 10g tables. I have tested the query using SQL Developer, and it throws a couple of lines, depending on the contents of the where clause.
    Next I have copied the query to a MII SQL Query (FixedQuery). However, the output is empty most of the time, without showing any errors. After some testing I got the impression that older data are not displayed, but there is no time or date setting in MII.
    As the SQL Developer always returns rows, I am unsure where to search for the error.
    Regards
    Michael

    Michael,
    I would imagine that you have sub-select statements in your FixedQuery, all which will fall subject to the RowCount property of the query template (SQL defaults to 100), which is issued through the driver and typically honored by the database when returning the data from your request.
    Most of the native database query tools allow you to make unbound query requests with no limit on rows, which would probably account for the difference between SQL Developer and the query template.
    For SQLServer it's ROWCOUNT:  http://msdn.microsoft.com/en-us/library/ms188774.aspx
    For Oracle it's ROWNUM:  http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
    So the answer would be not to make the query template row count some rediculous number, but more appropriately refine the way that the database request is issued.
    Regards,
    Jeremy

  • Oracle Query Always return records

    I want to have an Query In Which i always want to return one records regardless of exitence.
    If no records exist ...it should appear as
    NAME ID
    0 0
    if records exit it should appear as
    NAME ID
    manish 1

    Hi,
    You can do that with a UNION of your real query and something that selects the default values from dual. Just be sure the second part returns 0 rows when the real query returns anything.
    WITH     real_query     AS
         SELECT     name
         ,     id
         FROM     table_x
         WHERE     ...
    SELECT     *
    FROM     real_query
    UNION ALL
    SELECT     '0'     AS name
    ,     0     AS id
    FROM     dual
    WHERE     NOT EXISTS (
                     SELECT  1
                 FROM        real_query
    ;As always, be careful that the two prongs of the UNION have the same number and types of columns in the SELECT clause.

  • SQL Query (PL/SQL Function Body returning SQL query) doesn't return any row

    I have a region with the following type:
    SQL Query (PL/SQL Function Body returning SQL query).
    In a search screen the users can enter different numbers, separated by an ENTER.
    I want to check these numbers by replacing the ENTER, which is CHR(13) || CHR(10) I believe, with commas. And then I can use it like this: POD IN (<<text>>).
    It's something like this:
    If (:P30_POD Is Not Null) Then
    v_where := v_where || v_condition || 'POD IN (''''''''||REPLACE(''' || :P30_POD || ''', CHR(13) || CHR(10), '','')||'''''''''')';
    v_condition := ' AND ';
    End If;
    But the query doesn't return any rows.
    I tried to reproduce it in Toad:
    select * from asx_worklistitem
    where
    POD IN (''''||REPLACE('541449200000171813'||CHR(13) || CHR(10)||'541449206006341366', CHR(13) || CHR(10), ''',''')||'''')
    ==> This is the query that does't return any rows
    select (''''||REPLACE('541449200000171813'||CHR(13) || CHR(10)||'541449206006341366', CHR(13) || CHR(10), ''',''')||'''')
    from dual;
    ==> This returns '541449200000171813','541449206006341366'
    select * from asx_worklistitem
    where pod in ('541449200000171813','541449206006341366');
    ==> and when I copy/paste this in the above query, it does return my rows.
    So why does my first query doesn't work?
    Doe anyone have any idea?
    Kind regards,
    Geert
    Message was edited by:
    Zorry

    Thanks for the help.
    I made it work, but via the following code:
    If (:P30_POD Is Not Null) Then
    v_pods := REPLACE(:P30_POD, CHR(13) || CHR(10));
    v_where := v_where || v_condition || 'POD IN (';
    v_counter := 1;
    WHILE (v_counter < LENGTH(v_pods)) LOOP
    v_pod := SUBSTR(v_pods, v_counter, 18);
    IF (v_counter <> 1) THEN
    v_where := v_where || ',';
    END IF;
    v_where := v_where || '''' || v_pod || '''';
    v_counter := v_counter + 18;
    END LOOP;
    v_where := v_where || ')';
    v_condition := ' AND ';
    End If;But now I want to make an update of all the records that correspond to this search criteria. I can give in a status via a dropdownlist and that I want to update all the records that correspond to one of these POD's with that status.
    For a region you can build an SQL query via PL/SQL, but for a process you only have a PL/SQL block. Is the only way to update all these records by making a loop and make an update for every POD that is specified.
    Because I think this will have a lot of overhead.
    I would like to make something like a multi row update in an updateable report, but I want to specify the status from somewhere else. Is this possible?

  • Bc4j:RowScope on a Master Detail page always returns 0 rows for detail

    Hi,
    I have a problem with a Master Detail page that is called from another page. The Master Detail page has two View Objects, Budgets and Budget Versions. These are linked properly in BC4J and when I use these VOs together I can navigate through the Budgets (master) and the Budget Versions (details) are populated correctly.
    However, I want to navigate to this page from another page which lists all possible Budgets. I pass the key of the selected Budget to the Master Detail page and the correct Budget is displayed, BUT the Budget Versions are NOT displayed - I get 0 rows returned.
    The mechanism I use to pass the selected Budget ID to my Master Detail page is:
    <ctrl:property name="key">
    <ctrl:selection name="ViewTable" key="key"/>
    </ctrl:property>
    My BC4J Registry is set up as follows:
    <bc4j:registryDef>
    <bc4j:rootAppModuleDef name="BudgetModule"
    defFullName="BudgetPackage.BudgetPackageModule"
    configName="BudgetPackageModuleLocal"
    releaseMode="stateful">
    <bc4j:viewObjectDef name="ItiBudgetsView1">
    <bc4j:rowDef name="CurrentBudgetRow" usesCurrency="True">
    <bc4j:propertyKey name="key"/>
    </bc4j:rowDef>
    </bc4j:viewObjectDef>
    <bc4j:viewObjectDef name="ItiBudgetVersionsView2" rangeSize="15"/>
    </bc4j:rootAppModuleDef>
    </bc4j:registryDef>
    I then use
    <bc4j:rowScope name="CurrentBudgetRow">
    to get the correct Budget row in my master VO. But this always returns 0 rows in my detail VO. If I comment out the rowScope element, I don't get the desired Budget row, but I do get the correct Budget Version rows displayed. Is the rowScope element on the Budget VO interfering with the Budget Version VO?
    Hope this is not too confusing!!
    Thanks,
    Steve

    Steve,
    I tried to create a comparable set of two pages and initially ran into the same problem. I just realized that my issue (which I hope is yours too) is that the rootAppModule name was different across my two pages. This led to each page having its own application module instance, so the currency was different on each page.
    By changing all of my pages to use the same application module name (in the registryDef, in the appModuleScope tags in the page, and in the findAppModule tags in the handlers), I resolved this problem.
    My event handler to go to the master/detail page from the master page, FYI, looks like this:
      <event name="details" >
       <bc4j:findRootAppModule name="MyApp" >
        <!-- establish the ViewObject scope -->
        <bc4j:findViewObject name="CustomersView1" >
         <!-- find the selected Row -->
         <bc4j:findRowByKey>
          <bc4j:keyBinding>
           <bc4j:selectionKey name="viewTable" key="key" />
          </bc4j:keyBinding>
         </bc4j:findRowByKey>
        </bc4j:findViewObject>
        <bc4j:executeQuery />
        <go name="OrdersByCustomer_View" redirect="true" />
       </bc4j:findRootAppModule>                     
      </event>Hope this helps.
    -brian
    UIX Team

  • Select query on table rcv_lots_interface is always returning null

    Hi ,
    I need a help on the below issue.
    The issue is after creating PO in Oracle 11i I receive it in MSCA application.
    When we receive it at that point data gets inserted in the table " rcv_transactions_interface " and we have written a trigger on it.
    From the trigger on table " rcv_transactions_interface " we are calling a package and in the package we have select query on "rcv_lots_interface."
    But the select query is always returning null even though we are passing the correct "interface_transaction_id " and also after the "Receiving Transaction Processor" is executed i can see data in the table " RCV_LOT_TRANSACTIONS " for the same transaction.
    Below is the sample code i am using.
    CREATE OR REPLACE TRIGGER inv.RCV_TRAN_TRIGGER
    AFTER UPDATE
    ON po.rcv_transactions_interface
    FOR EACH ROW
    WHEN (NEW.processing_status_code='PENDING'
    AND NEW.destination_type_code IN ('INVENTORY','RECEIVING')
    AND NEW.mobile_txn = 'Y')
    DECLARE
    PRAGMA AUTONOMOUS_TRANSACTION;
    v_user_id NUMBER;
    v_interface_transaction_id NUMBER;
    v_organization_id NUMBER;
    v_item_id NUMBER;
    v_quantity NUMBER;
    v_resp_id NUMBER;
    v_mobile_txn VARCHAR2(5);
    v_shipment_header_id NUMBER;
    v_bill_of_lading VARCHAR2(100);
    v_group_id NUMBER;
    v_header_interface_id NUMBER;
    BEGIN
    v_interface_transaction_id := :NEW.interface_transaction_id;
    v_organization_id := :NEW.to_organization_id;
    v_user_id := :NEW.created_by;
    v_item_id := :NEW.item_id;
    v_quantity := :NEW.quantity;
    v_resp_id :=fnd_profile.VALUE('RESP_ID');
    v_transaction_type := :NEW.transaction_type;
    v_mobile_txn := :NEW.mobile_txn;
    v_bill_of_lading := :NEW.bill_of_lading;
    v_group_id := :NEW.group_id;
    v_header_interface_id := :NEW.HEADER_INTERFACE_ID;
    INV.INV_RCV_TRX_PKG.INV_RCV_LABEL_GEN_PRC( v_user_id,
    v_interface_transaction_id,
    v_item_id,
    v_quantity,
    v_organization_id,
    v_resp_id,
    v_shipment_header_id,
    v_bill_of_lading,
    v_header_interface_id,
    v_group_id);
    END;
    CREATE OR REPLACE PACKAGE BODY INV.INV_RCV_TRX_PKG
    AS
    PROCEDURE INV_RCV_LABEL_GEN_PRC( p_user_id IN NUMBER,
    p_interface_transaction_id IN NUMBER,
    p_item_id IN NUMBER,
    p_quantity IN NUMBER,
    p_organization_id IN NUMBER,
    p_resp_id IN NUMBER,
    p_shipment_header_id IN NUMBER,
    p_bill_of_lading IN VARCHAR2,
    p_header_interface_id IN NUMBER ,
    p_group_id IN NUMBER
    IS
    v_user_id NUMBER;
    v_print BOOLEAN;
    v_resp_id NUMBER;
    v_resp_appl_id NUMBER;
    v_lot_num VARCHAR2(50);
    BEGIN
    BEGIN
    SELECT application_id
    INTO v_resp_appl_id
    FROM apps.fnd_responsibility_tl frt
    WHERE responsibility_id=p_resp_id;
    END;
    apps.fnd_global.apps_initialize(p_user_id, p_resp_id, v_resp_appl_id);
    BEGIN
    SELECT rli.lot_num , rli.expiration_date
    INTO v_lot_num ,
    v_expiration_date
    FROM apps.rcv_lots_interface rli
    WHERE rli.interface_transaction_id = p_interface_transaction_id ;
    EXCEPTION
    WHEN OTHERS THEN
    v_lot_num :=NULL;
    v_expiration_date :=NULL;
    apps.fnd_file.put_line(fnd_file.log,'Exception while deriving LOT Number ######### '||p_interface_transaction_id||'------'||SQLERRM);
    END;
    END;
    Need your help to understand why the below query is always returning null and what is the solution for it ?
    SELECT rli.lot_num , rli.expiration_date
    FROM apps.rcv_lots_interface rli
    WHERE rli.interface_transaction_id = p_interface_transaction_id ;
    Thanks
    Jaydeep
    Edited by: user10454886 on Mar 25, 2013 6:31 AM
    Hi ,
    I need a solution to this issue at the earliest.
    Appreciate all of your help
    Thanks
    Jaydeep

    Centinul wrote:
    There are a lot of bugs listed in Metalink with respect to wrong results and function-based indexes.
    Here are a few:
    Bug 4028186 Wrong results if function based index exists
    Bug 4717546 Wrong results / poor plan when function based index exists
    Bug 5092688 Wrong results if function based index exists
    Based on reviewing them the workarounds range from dropping the index to setting "_disable_function_based_index" to TRUE.Facinating. It seems to me that if you use the undocumented intitialization parameter you might just as well drop the FBIs too.
    Another hazard of FBIs is the Law of Unintended Consequences. 2 years ago we tried to use one to speed up a query in a PL/SQL package. Worked OK for that purpose, but an unrelated loader on the affected table ran and rand but never finished until the FBI was dropped.

  • ViewObject with rows not based on a query

    Hello,
    I have an ViewObject with rows not based on a query. For example, if in activate method from my application module I insert a row, that row will not show when I test my app module. Please do not answer with a link for SRDemo ADF+BC as i've read it and didn't find any answers there.

    Yes,thanks, I found that, but I don't know how to do a ViewLink that have as destination a viewobject like that. I get all rows from destination for any row from source. There is a way to do that?

  • Portal report - If rows returned are 1 greater than max,last row not shown

    We are experiencing what appears to be a bug with reports developed from a locally built Provider in Portal...
    If my "maximum rows to return" is set to 20, and my search returns 21 rows/results, the "next" button to navigate to the last row does not appear. Therefore, the last row is not returned to the user....
    We have been able to duplicate this with any number... For example, if we set the "max rows to be returned" to 59, and our results come back with 60 rows, neither the "next" button or last row are returned...
    Bug by chance?
    Thanks in advance for any help offered....
    ~Chris

    Hi Varsha,
    Please pay attention when you are requesting motnly period for
    start date : 1st July 2008
    end date : 1st july 2008
    After saving the period is changed to
    Start Date : 7/1/2008
    End Date  : 7/31/2008
    When you are requesting weekly period for the same interval, after sving the dates are changed again, according
    you settings of first day of the week. It it is Monday it could be as following
    Start Date : 6/30/2008
    End Date  : 7/6/2008
    So you are asking data for not quite the same period.
    Do you have data for monthly period in that interval?
    Regards,
    Victoria Gur

  • Flashback query on the v$transaction

    hi All,
    if i know the SCN just before the transaction commit, after the transaction is commit, I can use flashback query on the v$transaction to get the info about the transaction, such as undo segment number, used undo block.
    Here comes the testcase, i use dbms_lock.sleep(6) because the smon_scn_time is updated every 6 seconds(Note ID: 281510.1)
    the problem is that the flashback query on the v$transaction doest not work, no rows return at the last line.
    any advice?
    sys@SID10G> select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
    PL/SQL Release 10.2.0.4.0 - Production
    CORE     10.2.0.4.0     Production
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    sys@SID10G> drop table t purge;
    Table dropped.
    sys@SID10G>
    sys@SID10G> create table t as select * from all_objects where rownum <= 1000;
    Table created.
    sys@SID10G>
    sys@SID10G> exec dbms_lock.sleep(6);
    PL/SQL procedure successfully completed.
    sys@SID10G>
    sys@SID10G> update t set object_name = lower(object_name);
    1000 rows updated.
    sys@SID10G>
    sys@SID10G> --save the current scn for later flashback query
    sys@SID10G> col scn new_value _scn
    sys@SID10G>
    sys@SID10G> select dbms_flashback.get_system_change_number scn from dual;
           SCN
       6397848
    sys@SID10G>
    sys@SID10G> select xidusn, xidslot, xidsqn, used_ublk from v$transaction;
        XIDUSN    XIDSLOT     XIDSQN  USED_UBLK
             8         12       4725          8
    sys@SID10G>
    sys@SID10G> select dbms_flashback.get_system_change_number scn from dual;
           SCN
       6397848
    sys@SID10G>
    sys@SID10G> commit;
    Commit complete.
    sys@SID10G>
    sys@SID10G> exec dbms_lock.sleep(6);
    PL/SQL procedure successfully completed.
    sys@SID10G> select xidusn, xidslot, xidsqn, used_ublk from v$transaction as of scn &_scn;
    old   1: select xidusn, xidslot, xidsqn, used_ublk from v$transaction as of scn &_scn
    new   1: select xidusn, xidslot, xidsqn, used_ublk from v$transaction as of scn    6397848
    no rows selectedEdited by: Sidney Chen on Aug 7, 2011 3:33 PM

    Please see,
    http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_flashback.htm#g1703502
    You cannot retrieve past data from a dynamic performance (V$) view. A query on such a view always returns current data.Aman....

  • Spatial Queries Not Always Producing Accurate Results

    Hi,
    Spatial queries are not always producing accurate results. Here are the issues. We would appreciate any clarification you could provide to resolve these issues.
    1. When querying for points inside a polygon that is not an MBR (minimum bounded rectangle), some of the coordinates returned are not inside the polygon. It is as though the primary filter is working, but not the secondary filter when using sdo_relate. How can we validate that the spatial query using sdo_relate is using the secondary filter?
    2. SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT returns true when validating geometries even though we find results that are invalid.
    3. Illegal geodetic coordinates can be inserted into a table: latitude > 90.0, latitude < -90.0, longitude > 180.0 or longitude < -180.0.
    4. Querying for coordinates outside the MBR for the world where illegal coordinates existed did NOT return any rows, yet there were coordinates of long, lat: 181,91.
    The following are examples and information relating to the above-referenced points.
    select * from USER_SDO_GEOM_METADATA
    TABLE_NAME      COLUMN_NAME      DIMINFO(SDO_DIMNAME, SDO_LB, SDO_UB, SDO_TOLERANCE)      SRID
    LASTKNOWNPOSITIONS      THE_GEOM SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', -180, 180, .05), SDO_DIM_ELEMENT('Y', -90, 90, .05))      8307
    POSITIONS     THE_GEOM SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', -180, 180, .05), SDO_DIM_ELEMENT('Y', -90, 90, .05))      8307
    Example 1: Query for coordinates inside NON-rectangular polygon includes points outside of polygon.
    SELECT l.vesselid, l.latitude, l.longitude, TO_CHAR(l.observationtime,
    'YYYY-MM-DD HH24:MI:SS') as obstime FROM lastknownpositions l where
    SDO_RELATE(l.the_geom,SDO_GEOMETRY(2003, 8307, NULL,
    SDO_ELEM_INFO_ARRAY(1, 1003, 1),
    SDO_ORDINATE_ARRAY(-98.20268,18.05079,-57.30101,18.00705,-57.08229,
    54.66061,-98.59638,32.87842,-98.20268,18.05079)),'mask=inside')='TRUE'
    This query returns the following coordinates that are outside of the polygon:
    vesselid : 1152 obstime : 2005-08-24 06:00:00 long : -82.1 lat : 45.3
    vesselid : 3140 obstime : 2005-08-28 12:00:00 long : -80.6 lat : 44.6
    vesselid : 1253 obstime : 2005-08-22 09:00:00 long : -80.0 lat : 45.3
    Example 2a: Using SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT
    Select areaid, the_geom,
    SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(the_geom, 0.005) from area where
    areaid=24
    ResultSet:
    AREAID THE_GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO,
    SDO_ORDINATES) SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(THE_GEOM,0.005)
    24 SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(-98.20268, 18.05079, -57.30101, 18.00705, -57.08229, 54.66061, -98.59638, 32.87842, -98.20268, 18.05079)) TRUE
    Example 2b: Using SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT
    Select positionid, vesselid, the_geom,
    SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(the_geom, 0.005) from positions where vesselid=1152
    ResultSet:
    POSITIONID VESSELID THE_GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z),
    SDO_ELEM_INFO, SDO_ORDINATES) DO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(THE_GEOM,0.005)
    743811 1152 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-82.1, 45.3, NULL), NULL, NULL) TRUE
    743812 1152 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-82.1, 45.3, NULL), NULL, NULL) TRUE
    743813 1152 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-80.2, 42.5, NULL), NULL, NULL) TRUE
    743814 1152 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-80.2, 42.5, NULL), NULL, NULL) TRUE
    Example 3: Invalid Coordinate values found in POSITIONS table.
    SELECT p.positionid, p.latitude, p.longitude, p.the_geom FROM positions p
    WHERE p.latitude < -180.0
    2 lines from ResultSet:
    POSITIONID LATITUDE LONGITUDE THE_GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
    714915 -210.85408 -79.74449 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-79.74449, -210.85408, NULL), NULL, NULL)
    714938 -211.13632 -79.951256 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-79.951256, -211.13632, NULL), NULL, NULL)
    SELECT p.positionid, p.latitude, p.longitude, p.the_geom FROM positions p
    WHERE p.longitude > 180.0
    3 lines from ResultSet:
    POSITIONID LATITUDE LONGITUDE THE_GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
    588434 91 181 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(181, 91, NULL), NULL, NULL)
    589493 91 181 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(181, 91, NULL), NULL, NULL)
    589494 91 181 SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(181, 91, NULL), NULL, NULL)
    Example 4: Failure to locate illegal coordinates by querying for disjoint coordinates outside of MBR for the world:
    SELECT p.vesselid, p.latitude, p.longitude, p.the_geom,
    TO_CHAR(p.observationtime, 'YYYY-MM-DD HH24:MI:SS') as obstime,
    SDO_GEOM.RELATE(p.the_geom, 'determine',
    SDO_GEOMETRY(2003, 8307, NULL,SDO_ELEM_INFO_ARRAY(1, 1003, 1),
    SDO_ORDINATE_ARRAY(-180.0,-90.0,180.0,-90.0,180.0,90.0,
    -180.0,90.0,-180.0,-90.0)), .005) relationship FROM positions p where
    SDO_GEOM.RELATE(p.the_geom, 'disjoint', SDO_GEOMETRY(2003, 8307,
    NULL,SDO_ELEM_INFO_ARRAY(1, 1003, 1),
    SDO_ORDINATE_ARRAY(-180.0,-90.0,180.0,-90.0,180.0,90.0,-80.0,90.0,
    -180.0,-90.0)),.005)='TRUE'
    no rows selected
    Carol Saah

    Hi Carol,
    1) I think the results are correct. Note in a geodetic coordinate system adjacent points in a linestring or polygon are connected via geodesics. You are probably applying planar thinking to an ellipsoidal problem! I don't have time to do the full analysis right now, but a first guess is that is what is happening.
    2) The query window seems to be valid. I don't think this is a problem.
    3) Oracle will let you insert most anything into a table. In the index, it probably wraps. If you validate, I think the validation routines will tell you is is illegal if you use the signature with diminfo, where the coordinate system bounds are included in the validation.
    4) Your query window is not valid. Your data is not valid. As the previous reply stated, you need to have valid data. If you think in terms of a geodetic coordinate system, you will realize that -180.0,-90.0 and 180.0,-90.0 are really the same point. Also, Oracle has a rule that polygon geometries cannot be greater than half the surface of the Earth.
    Hope this helps.

Maybe you are looking for

  • Question about memory upgrade on Satellite L20-181

    Hi, there The minimum recommended memory for Windwows XP is 256 Mb and I do not understand how the company could get away selling notebook with 256 MB with built-in graphic adapter sharing the system memory. Anyway, I want to upgrade my Toshiba and m

  • URGENT:Problem using JTree.

    Hi, I'am using the "setSelectionPath(TreePath path)" method of JTree to select a particular node of my JTree, which works fine but I also want that particular node to be highlighted as if the user has clicked on it. Is there any way this can be achie

  • Java Web Start and JasperReports

    Hi all, I am trying to get jasper reports (search www.sourceforge.net for jasperreports) to work with Java web Start. I have a problem in that jasper reports cannot find the SAX2 parser in the jar file even though its there. Jasper requires one to se

  • User exit for V.23 transaction

    Hi, Is there any user exit or BADI available for transaction v.23? Thanks, Venu

  • Airport Express gives heavy 'rumble' on hifi-amplifier, but not on headphone

    The Airport Express gives a good sound connected with a headphone or a set of speakers. But when I connect it to the aux-port of my hifi-amplifier I get a heavy 'rumble' or crunchy sound. Very weak I can hear the music. Direct connection of the Ipod