Problems using an edge index

Hello, everyone.
I've received a container and its related environment from another project and I'm trying to do some queries on it.
The problem is that my queries aren't using the edge index they've set on this container. In fact, I can't even see any indexed document when executing lookupEdgeIndex.
Here are some results:
dbxml> openContainer policies.dbxml
dbxml> listIndexes
Default Index: node-metadata-presence-none
Index: edge-element-equality-string for node {urn:oasis:names:tc:xacml:2.0:policy:schema:os}:AttributeValue
Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
3 indexes found.
dbxml> lookupEdgeIndex edge-element-equality-string "urn:oasis:names:tc:xacml:2.0:policy:schema:os" AttributeValues "urn:oasis:names:tc:xacml:2.0:policy:schema:os" SubjectMatch
0 objects returned for eager index lookup 'edge-element-equality-string'
--- Here there should be several objects reported
dbxml> query 'collection("policies.dbxml")/Policy/Target[Subjects/Subject/SubjectMatch/AttributeValue="ract"]'
2 objects returned for eager expression 'collection("policies.dbxml")/Policy/Target[Subjects/Subject/SubjectMatch/AttributeValue="ract"]'
dbxml> queryPlan 'collection("policies.dbxml")/Policy/Target[Subjects/Subject/SubjectMatch/AttributeValue="ract"]'
<XQuery>
<DbXmlNav>
<QueryPlanFunction result="collection" container="policies.dbxml">
<OQPlan>U</OQPlan>
</QueryPlanFunction>
<DbXmlStep axis="child" name="Policy" nodeType="element"/>
<DbXmlStep axis="child" name="Target" nodeType="element"/>
<DbXmlFilter>
<DbXmlNav>
<DbXmlStep axis="child" name="Subjects" nodeType="element"/>
<DbXmlStep axis="child" name="Subject" nodeType="element"/>
<DbXmlStep axis="child" name="SubjectMatch" nodeType="element"/>
<DbXmlCompare name="equal" join="child" name="AttributeValue" nodeType="element">
<Sequence>
<AnyAtomicTypeConstructor value="ract" typeuri="http://www.w3.org/2001/XMLSchema" typename="string"/>
</Sequence>
</DbXmlCompare>
</DbXmlNav>
</DbXmlFilter>
</DbXmlNav>
</XQuery>
--- I can see here that the index is not being used for this query. Next I'll try setting the namespace and query again.
dbxml> query 'collection("policies.dbxml")/p:Policy/p:Target[p:Subjects/p:Subject/p:SubjectMatch/p:AttributeValue="ract"]'
0 objects returned for eager expression 'collection("policies.dbxml")/p:Policy/p:Target[p:Subjects/p:Subject/p:SubjectMatch/p:AttributeValue="ract"]'
dbxml> queryPlan 'collection("policies.dbxml")/p:Policy/p:Target[p:Subjects/p:Subject/p:SubjectMatch/p:AttributeValue="ract"]'
<XQuery>
<DbXmlNav>
<QueryPlanFunction result="collection" container="policies.dbxml">
<OQPlan>V(edge-element-equality-string,SubjectMatch:urn:oasis:names:tc:xacml:2.0:policy:schema:os.AttributeValue:urn:oasis:names:tc:xacml:2.0:policy:schema:os,=,'ract')</OQPlan>
</QueryPlanFunction>
<DbXmlStep axis="child" prefix="p" uri="urn:oasis:names:tc:xacml:2.0:policy:schema:os" name="Policy" nodeType="element"/>
<DbXmlStep axis="child" prefix="p" uri="urn:oasis:names:tc:xacml:2.0:policy:schema:os" name="Target" nodeType="element"/>
<DbXmlFilter>
<DbXmlNav>
<DbXmlStep axis="child" prefix="p" uri="urn:oasis:names:tc:xacml:2.0:policy:schema:os" name="Subjects" nodeType="element"/>
<DbXmlStep axis="child" prefix="p" uri="urn:oasis:names:tc:xacml:2.0:policy:schema:os" name="Subject" nodeType="element"/>
<DbXmlStep axis="child" prefix="p" uri="urn:oasis:names:tc:xacml:2.0:policy:schema:os" name="SubjectMatch" nodeType="element"/>
<DbXmlCompare name="equal" join="child" prefix="p" uri="urn:oasis:names:tc:xacml:2.0:policy:schema:os" name="AttributeValue" nodeType="element">
<Sequence>
<AnyAtomicTypeConstructor value="ract" typeuri="http://www.w3.org/2001/XMLSchema" typename="string"/>
</Sequence>
</DbXmlCompare>
</DbXmlNav>
</DbXmlFilter>
</DbXmlNav>
</XQuery>
--- Even though the query returned empty, now I can see that the index is being used.
If the queryPlan shows that the index is being used, why can't I find any document? The application which created and uses this container correctly finds all documents.
Any help would be appreciated.
Thanks,
Rafael.

Rafael,
What you describe would indicate that the AttributeValue elements of the
documents involved are not actually in the namespace you think. The fact that you get
results with no namespace prefix mapping implies they are in no namespace at all.
Also a note on copying containers -- I can't think of a good reason to copy the
environment around. When doing backups you will copy log files but not the __db* files.
For experimentation like it seems you are doing just be sure that the containers
are checkpointed or that no applications have the containers or environment open and
it should be safe to copy them.
Regards,
George

Similar Messages

  • Problem using CTXXPATH index

    Hi all,
    i'm using Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 on Windows.
    I created this table
    create table PERSISTENT_COMPOSITION
      COMPOSITION_ID NUMBER(19) not null,
      XML_CONTENT    SYS.XMLTYPE not null,
    )and filled it with more or less 1.000.000 records (that si 1.000.000 xml document loaded into XML_CONTENT).
    Then first of all i tested it with a simple query just like the following:
    SELECT *
      FROM PERSISTENT_COMPOSITION t
    WHERE existsNode(t.xml_content, '/composition/archetype_details/archetype_id[value="openEHR-EHR-COMPOSITION.composition_test.v1"]') = 1;obtaining the expected result: 50,000 records found.
    Now, in order to improve query performances, i created a CTXXPATH index as follows:
    CREATE INDEX IDX#COMP_CTXXPATH ON PERSISTENT_COMPOSITION(XML_CONTENT) INDEXTYPE IS CTXSYS.CTXXPATH;Then i tested the new performances using exactly the same query shown above...and here comes the problem: the query returns NO RESULT! No record was found! I looked at the query execution plan and it uses the created index IDX#COMP_CTXXPATH...but no record could be found...
    I thought it could be a matter of namespace: in fact loaded xml documents have a xmlns set and so i changed the query as follows:
    SELECT *
    FROM persistent_composition t
    WHERE existsNode(t.xml_content,
                      '/composition/archetype_details/archetype_id[value="openEHR-EHR-COMPOSITION.composition_test.v1"]',
                 'xmlns="http://this.is.an.xmlns.url.org/v1"') = 1and surprise: i obtained my 50,000 results just like before BUT, looking at the query execution plan, the IDX#COMP_CTXXPATH index HASN'T BEEN USED!!!
    I really don't understand why using the IDX#COMP_CTXXPATH i get no result....can someone help me?
    Thank you very much
    P.S: i tried using ANALYZE (both on index and on table), CTX_DDL.sync_index and CTX_DDL.optimize_index but got no result..
    Edited by: user11295548 on 29-giu-2009 5.47

    Besides following Mark's advice, and I could be mistaken regarding this in combination with domain indexes, you should NOT use ANALYZE anymore in a Oracle 10 environment. Instead use DBMS_STATS. Its more flexible.
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_4005.htm#SQLRF01105
    Note:
    Do not use the COMPUTE and ESTIMATE clauses of ANALYZE to collect optimizer statistics.
    These clauses are supported for backward compatibility.
    Instead, use the DBMS_STATS package, which lets you collect statistics in parallel,
    collect global statistics for partitioned objects, and fine tune your statistics collection
    in other ways. The optimizer, which depends upon statistics, will eventually use only
    statistics that have been collected by DBMS_STATS.
    See PL/SQL Packages and Types Reference for more information on the
    DBMS_STATS package. You must use the ANALYZE statement (rather than
    DBMS_STATS) for statistics collection not related to the cost-based optimizer, such as:
    - To use the VALIDATE or LIST CHAINED ROWS clauses
    - To collect information on freelist blocks

  • Problem using two function based indexes at once!

    Hello Oracle!
    I've got problems using two function based indexes on geometries at once.
    The problem occures, when I use a spatial join between two geometries both using function based indexes.
    The test case:
    CREATE TABLE quad (centroid NUMBER);
    CREATE TABLE points (no NUMBER, point MDSYS.SDO_GEOMETRY);
    CREATE OR REPLACE FUNCTION getQuad (centroid NUMBER) RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC IS
    BEGIN
    RETURN MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),MDSYS.SDO_ORDINATE_ARRAY(centroid-5,centroid-5,centroid+5,centroid-5,centroid+5,centroid+5,centroid-5,centroid+5,centroid-5,centroid-5));
    END;
    INSERT INTO USER_SDO_GEOM_METADATA VALUES('quad','tiedge.getQuad(centroid)',MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X', -100, 100, .0000001), MDSYS.SDO_DIM_ELEMENT('Y', -100, 100, .0000001)),NULL);
    CREATE INDEX quad_idx on quad(getQuad(centroid)) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
    INSERT INTO quad VALUES (0);
    INSERT INTO quad VALUES (5);
    INSERT INTO quad VALUES (10);
    INSERT INTO points VALUES (1, MDSYS.SDO_GEOMETRY(1001,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),MDSYS.SDO_ORDINATE_ARRAY(4,4)));
    ALTER SESSION SET QUERY_REWRITE_INTEGRITY=TRUSTED;
    ALTER SESSION SET QUERY_REWRITE_ENA[i]Long postings are being truncated to ~1 kB at this time.

    hi there,
    For a better audience for this question, I'd look at the database forum.
    guys on that will be a lot more familiar with FBIs
    thanks
    Barry

  • Problem in accessing mseg table using MSEG~M Index.

    Hi Experts,
    I am facing problem in accessing mseg table using MSEG~M Index. I used same sequence of fields and i tried with mandt field also. but it is not taking the Index and it is going for TImeout ABAP dump.
    This are my codes used in different ways
    1.  SELECT  mjahr
             bwart
             matnr
             lifnr
             dmbtr
             kostl
             aufnr
             bukrs
             FROM mseg CLIENT SPECIFIED INTO TABLE t_mseg2
                      WHERE mandt EQ sy-mandt      AND
                            matnr NE SPACE         AND
                            werks EQ p_werks       AND
                            lgort NE '0000'        AND
                            bwart IN (122,201,262) AND
                            sobkz NE '0'
                            %_HINTS ORACLE 'INDEX("MSEG" "MSEG~M")'.
    2.   SELECT  mjahr
             bwart
             matnr
             lifnr
             dmbtr
             kostl
             aufnr
             bukrs
             FROM mseg  INTO TABLE t_mseg2
                      WHERE matnr NE SPACE         AND
                            werks EQ p_werks       AND
                            lgort NE '0000'        AND
                            bwart IN (122,201,262) AND
                            sobkz NE '0'
                            %_HINTS ORACLE 'INDEX("MSEG" "MSEG~M")'.
    3.   SELECT  mjahr
             bwart
             matnr
             lifnr
             dmbtr
             kostl
             aufnr
             bukrs
             FROM mseg INTO TABLE t_mseg2
                      WHERE matnr NE SPACE         AND
                            werks EQ p_werks       AND
                            lgort NE '0000'        AND
                            bwart IN (122,201,262) AND
                            sobkz NE '0'.                   
    The above all code is not at all taking the index in Quality server .but in Development it is taking .In Quality server it is reading all datas without using the index and going Timeout ABAP dmup
    Please, Suggest me some solutions.
    Thanks in Advance.
    Regards,
    Nandha

    Hi,
    Without NE also not working out. i am facing same problem still.
    SELECT  bwart
             matnr
             lifnr
             dmbtr
             kostl
             aufnr
             FROM mseg CLIENT SPECIFIED INTO TABLE t_mseg
                      WHERE mandt EQ sy-mandt      AND
                            werks EQ p_werks       AND
                            bwart IN (122,201,262) AND
                            mjahr EQ p_year        AND
                            bukrs EQ p_cc
                            %_HINTS ORACLE 'INDEX("MSEG" "MSEG~M")'.
    Please,check and help me out from this issue.
    Regards,
    Nandha

  • I purchased an iPhone 5S using my EDGE upgrade on September 5, but would like to exchange it for an iPhone 6 within the 14 day period. Other than having to pay the $35 restocking fee, will I have any problems doing so? Thanks

    I purchased an iPhone 5S using my EDGE upgrade on September 5, but would like to exchange it for an iPhone 6 within the 14 day period. Other than having to pay the $35 restocking fee, will I have any problems doing so? Thanks

        Good evening udflyers! You should not have any problem returning/exchanging your current within 14 days http://bit.ly/IeiJI of purchase. However, you may have to preorder the device you want as it is not currently available and preorder start on 9/12/14 at 12:01am, PST. Please process your return/exchange thru the same channel as your original purchase.
    AntonioC_VZW Follow us on Twitter at www.twitter.com/VZWSupport

  • Problem using byte indexed pixel format in setPixels method of PixelWriter

    I try to construct a byte array and set it to a WritableImage using PixelWriter's setPixels method.
    If I use an RGB pixel format, it works. If I use a byte-indexed pixel format, I get an NPE.
    The stride etc should be fine if I'm not mistaken.
    java.lang.NullPointerException
         at com.sun.javafx.image.impl.BaseByteToByteConverter.<init>(BaseByteToByteConverter.java:45)
         at com.sun.javafx.image.impl.General$ByteToByteGeneralConverter.<init>(General.java:69)
         at com.sun.javafx.image.impl.General.create(General.java:44)
         at com.sun.javafx.image.PixelUtils.getB2BConverter(PixelUtils.java:223)
         at com.sun.prism.Image$ByteAccess.setPixels(Image.java:770)
         at com.sun.prism.Image.setPixels(Image.java:606)
         at javafx.scene.image.WritableImage$2.setPixels(WritableImage.java:199)
    Short, self-contained example here:
    import java.nio.ByteBuffer;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.image.ImageView;
    import javafx.scene.image.PixelFormat;
    import javafx.scene.image.WritableImage;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Stage;
    public class IndexedColorTestApp extends Application {
        public static void main(String[] args) {
            launch(args);
        @Override
        public void start(Stage primaryStage) {
            BorderPane borderPane = new BorderPane();
            Scene scene = new Scene(borderPane, 600, 1100);
            primaryStage.setScene(scene);
            ImageView imageView = new ImageView();
            borderPane.setCenter(imageView);
            primaryStage.show();
            int imageWidth = 200;
            int imageHeight = 200;
            WritableImage writableImage = new WritableImage(imageWidth, imageHeight);
            // this works
            byte[] rgbBytePixels = new byte[imageWidth * imageHeight * 3];
            PixelFormat<ByteBuffer> byteRgbFormat = PixelFormat.getByteRgbInstance();
            writableImage.getPixelWriter().setPixels(0, 0, imageWidth, imageHeight,
                                                     byteRgbFormat, rgbBytePixels, 0, imageWidth * 3);
            imageView.setImage(writableImage);
            // this throws an NPE in setPixels()
            byte[] indexedBytePixels = new byte[imageWidth * imageHeight];
            int[] colorPalette = new int[256];
            PixelFormat<ByteBuffer> byteIndexedFormat = PixelFormat.createByteIndexedInstance(colorPalette);
            writableImage.getPixelWriter().setPixels(0, 0, imageWidth, imageHeight,
                                                     byteIndexedFormat, indexedBytePixels, 0, imageWidth);
            imageView.setImage(writableImage);
    }If there's no solution, maybe someone knows a workaround? We chose to use indexed format because of data size / performance reasons.
    Edited by: Andipa on 01.03.2013 10:52

    You have found a platform bug, file it against the Runtime project at => http://javafx-jira.kenai.com with your sample code and a link back to this forum question.
    Byte indexed pixel formats seem like a feature which was never completely (or perhaps even hardly at all) implemented to me.
    The PixelFormat type your failed case is using is (PixelFormat.Type.BYTE_INDEXED):
    PixelFormat<ByteBuffer> byteIndexedFormat = PixelFormat.createByteIndexedInstance(colorPalette);
    System.out.println(byteIndexedFormat.getType());These are the valid PixelFormat types =>
    http://docs.oracle.com/javafx/2/api/javafx/scene/image/PixelFormat.Type.html
    BYTE_BGRA
    The pixels are stored in adjacent bytes with the non-premultiplied components stored in order of increasing index: blue, green, red, alpha.
    BYTE_BGRA_PRE
    The pixels are stored in adjacent bytes with the premultiplied components stored in order of increasing index: blue, green, red, alpha.
    BYTE_INDEXED
    The pixel colors are referenced by byte indices stored in the pixel array, with the byte interpreted as an unsigned index into a list of colors provided by the PixelFormat object.
    BYTE_RGB
    The opaque pixels are stored in adjacent bytes with the color components stored in order of increasing index: red, green, blue.
    INT_ARGB
    The pixels are stored in 32-bit integers with the non-premultiplied components stored in order, from MSb to LSb: alpha, red, green, blue.
    INT_ARGB_PRE
    The pixels are stored in 32-bit integers with the premultiplied components stored in order, from MSb to LSb: alpha, red, green, blue.As the native pixel format for a WritableImage is not the same as the pixel format you are using, the JavaFX platform needs to do a conversion by reading the pixels in one format and writing them in another format. To do this it must be able to determine a PixelGetter for your PixelFormat (the PixelGetter is an internal thing, not public API).
    And here is the source the determines the PixelGetter for a given PixelFormat type:
    http://hg.openjdk.java.net/openjfx/8/master/rt/file/06afa65a1aa3/javafx-ui-common/src/com/sun/javafx/image/PixelUtils.java
    119     public static <T extends Buffer> PixelGetter<T> getGetter(PixelFormat<T> pf) {
    120         switch (pf.getType()) {
    121             case BYTE_BGRA:
    122                 return (PixelGetter<T>) ByteBgra.getter;
    123             case BYTE_BGRA_PRE:
    124                 return (PixelGetter<T>) ByteBgraPre.getter;
    125             case INT_ARGB:
    126                 return (PixelGetter<T>) IntArgb.getter;
    127             case INT_ARGB_PRE:
    128                 return (PixelGetter<T>) IntArgbPre.getter;
    129             case BYTE_RGB:
    130                 return (PixelGetter<T>) ByteRgb.getter;
    131         }
    132         return null;
    133     }As you can see, the BYTE_INDEXED format is not handled and null is returned instead . . . this is the source of your NullPointerException.

  • Can Oracle be forced to use the spatial index for sdo_filter in combination with an or clause? Difference between Enterprise and SE?

    We’re seeing the following issue: sql - Can Oracle be forced to use the spatial index for sdo_filter in combination with an or clause? - Stack Overflow (posted by a colleague of mine) and are curious to know if this behaviour is due to a difference between standard and enterprise, or could we doing something else wrong in our DB config.?
    We have also reproduced the issue on the following stacks:
    Oracle SE One 11.2.0.3 (with Spatial enabled)
    Redhat Linux 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    11.2.0.3.0 Standard Edition and 11.2.0.4.0 Standard Edition (both with Spatial enabled)
    Microsoft Windows Server 2003R2 Standard x64 Edition
    However, the SQL works fine if we try it on Oracle 11.2.0.3.0 *Enterprise* Edition.
    Any help or advice would be much appreciated.
    Kindest Regards,
    Kevin

    In my experience sdo_filter ALWAYS uses the spatial index, so that's not the problem. Since you did not provide the explain plans, we can't say for sure but I think yhu is right: Standard Edition can't use the bitmap operations, and thus it'll take longer to combine the results of the two queries (because the optimizer will surely split this OR up in two parts, then combine them).
    BTW: when asking questions about queries here, it would be nice if you posted the queries here as well, so that we do not have to check another website in order to see what you are doing. Plus it will probably get you more answers, because not everyone can be bothered to click on that link. It would also have been nice if you had posted your own answer on the other post here as well, because my recommendation would have been to use union all - but since you already found that out for yourself my recommendation would have been a little late.

  • How to use Adobe Edge Web Fonts correctly

    I am a Dreamweaver newbie and am trying to learn how to use it through the tutorials. I am stuck at part 3 trying to use Adobe Edge Web Fonts correctly in my web site. As far as I can tell I have followed the instructions in the tutorial correctly, but the font style effect does not show up on my site. I am working on a Windows 7 machine and using Dreamweaver 5.5. I have copied and pasted the javascript into the correct spot in the head of the index.html page as well as included the font-family name in the CSS file and saved the whole smash. The source code for my index page looks exactly like the sample in the tutorial, and I have tried to view my site in my browser, but no dice. Doesn't display the Edge Web Font style in the web page. I believe I've done everything according to the directions, but I suppose I've missed some small detail. Any suggestions greatly appreciated

    You need to add a <script> to the head of your documents like the example below.  In my example, I'm using all of the aguafina-script and league-gothic fonts.
    <!--Edge Font-->
    <script src="//use.edgefonts.net/aguafina-script:n4:all;league-gothic:n4:all.js"></script>
    CSS:
         h1 {
         font-family: league-gothic, sans-serif;
         font-weight:bold;
         color: #639;
         font-size: 250%;
    A simple way to get the correct codes is to go to Adobe Edge Web Fonts and select the font you wish to use.
    https://edgewebfonts.adobe.com/fonts
    NOTE: You won't see the custom web fonts displayed in Design View, Live View or when previewed locally unless you use a local testing server.  An easier way to test is by uploading the page to your remote server.
    Hope this helps,
    Nancy O.

  • Query don't use the right index when using bind variables

    Hi people !
    I need some help because I have an issue with a query that don t use the right Indexes as it should
    First of all, I have mainly three tables :
    ORDER : Table that contains description for each Order (approximately 1 000 000 Records)
    ORDER_MVTS : Table that contains the tasks made (called movements) to set up each Orders
    with quantity of packages prepared for each product (approximately 10 000 000 Records)
    PRODUCT : Tables that contains the products (approximately 50 000 Records)
    When I launch the query with hard coded values, it brings back response very fast
    because it uses the right index (ORDER_DHR_VALID) which represent the date and hour of the order
    (with format 'DD/MM/YYYY HH24:MI:SS'). The selectivity for this index is good.
    NB 1: I have to use the trick " >= Trunc(date) and < trunc(date) +1 " to filter on a simple date because
    the index contains hour and minutes (I know it wasn't probably a bright idea at conception time).
    NB 2: The index on ORDER_MVTS.PRODUCT_CODE is'nt discriminating enough because there is'nt enough different products.
    It's the same for index on CUSTOMER_CODE and on MVT_TYPE so only the index on ORDER.DHR_VALID is good.
    Here is the correct explain plan when I execute the query with hard coded values :
    SELECT SUM(ORDER_MVTS.NB_PACKAGE)
    FROM ORDER_MVTS, PRODUCT, ORDER
    WHERE ORDER.DHR_VALID >= TRUNC(to_date('14/11/2008 10:04:56','DD/MM/YYYY HH24:MI:SS'))
    AND ORDER.DHR_VALID < TRUNC(to_date('14/11/2008 10:04:56','DD/MM/YYYY HH24:MI:SS')) + 1
    AND ORDER_MVTS.MVT_TYPE = 'DELIVERY'
    AND PRODUCT.CODE = ORDER_MVTS.PRODUCT_CODE
    AND ORDER_MVTS.ORDER_CODE = ORDER.CODE
    AND ORDER.CUSTOMER_CODE = 'ADIDAS'
    AND PRODUCT.CODE = 1234
    Rows Row Source Operation
    1 SORT AGGREGATE
    2 NESTED LOOPS
    4 NESTED LOOPS
    2 INDEX UNIQUE SCAN (object id 378548) --> PRODUCT_PK
    4 TABLE ACCESS BY INDEX ROWID ORDER
    777 INDEX RANGE SCAN (object id 378119) --> ORDER_DHR_VALID
    2 TABLE ACCESS BY INDEX ROWID ORDER_MVTS
    30 INDEX RANGE SCAN (object id 377784) --> ORDER_MVTS_ORDER_FK
    Now the problem is when the query is used in a Cursor with bind variables.
    It seems like Oracle don't use index on ORDER.DHR_VALID because he can't figure out that he have
    to actually filter on a short period of time (only one day).
    So Oracle uses the index on ORDER_MVTS.PRODUCT_CODE which is'nt a bright idea (it takes 10 secondes instead of just one)
    Here is the bad explain plan :
    Rows Row Source Operation
    1 SORT AGGREGATE
    2 NESTED LOOPS
    722 NESTED LOOPS
    2 INDEX UNIQUE SCAN (object id 378548) --> PRODUCT_PK
    722 TABLE ACCESS BY INDEX ROWID ORDER_MVTS
    1790 INDEX RANGE SCAN (object id 377777) --> ORDER_MVTS_PRODUCT_FK
    2 TABLE ACCESS BY INDEX ROWID ORDER
    1442 INDEX UNIQUE SCAN (object id 378439) --> ORDER_PK
    Now I have found two solutions to this problem :
    1) using a Hint to force the use of index on ORDER.DHR_VALID (with /*+ INDEX(ORDER ORDER_DHR_VALID) */ )
    2) Using Dynamic SQL and keeping the date hard coded (but not the other values except mvt_type)
    For example :
    QUERY :=
    'SELECT SUM(ORDER_MVTS.NB_PACKAGE)
    FROM ORDER_MVTS, PRODUCT, ORDER
    WHERE ORDER.DHR_VALID >= TRUNC(TO_DATE('''||To_char(P_DTE_VAL,'DD/MM/YYYY')||''',''DD/MM/YYYY'')) '||
    AND ORDER.DHR_VALID < TRUNC(TO_DATE('''||To_char(P_DTE_VAL,'DD/MM/YYYY')||''',''DD/MM/YYYY'')) + 1 '||
    AND ORDER_MVTS.MVT_TYPE = 'DELIVERY'
    AND PRODUCT.CODE = ORDER_MVTS.PRODUCT_CODE
    AND ORDER_MVTS.ORDER_CODE = ORDER.CODE
    AND ORDER.CUSTOMER_CODE = :CUSTOMER
    AND PRODUCT.CODE = :CODE ';
    These two solutions work but Number 1 is bad in theory because it uses a Hint
    and Number 2 may be difficult to code.
    So my question is : Does someone knows another solution to force the use of index ORDER_DHR_VALID that can be simple and reliable.
    Thank you very much for support
    Edited by: remaï on Apr 1, 2009 4:08 PM

    What version of oracle you have? CBO work is different in 9i and 10g.
    Usually cost based optimizer do not want to use index for >< condition with binding variables because optimizer can not use statistic to determine selectivity, and by default selectivity of <> operators is low.
    (As I remember '>' selectivity by default is 5%, you have two conditions > and <, therefore resulting selectivity will be 0.05*0.05=0.0025 as two independent events, but selectivity of other conditions
    ORDER_MVTS.MVT_TYPE = 'DELIVERY' or ORDER.CUSTOMER_CODE = 'ADIDAS' looks much better for CBO)
    The best solution I see is do not use binding variables. Actually your query looks as searching query, which executes not so often, therefore you will not have perfomance win along of skipping execution plan creation.
    Edited by: JustasVred on Apr 1, 2009 10:10 AM

  • Performance problem because of ignored index

    Hi,
    We have a performance problem with kodo ignoring indexes in Oracle:
    Our baseclass of all our persistent classes (LogasPoImpl) has a subclass
    CODEZOLLMASSNAHMENIMPL.
    We use vertical mapping for all subclasses and have 400.000 instances of
    CODEZOLLMASSNAHMENIMPL.
    We defined an additional index on an attribute of CODEZOLLMASSNAHMENIMPL.
    A query with a filter like "myIndexedAttribute = 'DE'" takes about 15
    seconds on Oracle 8.1.7.
    Kodo logs something like the following:
    [14903 ms] executing prepstmnt 6156689 SELECT (...)
    FROM CODEZOLLMASSNAHMENIMPL t0, LOGASPOIMPL t1
    WHERE (t0.myIndexedAttribute = ?)
    AND t1.JDOCLASS = ?
    AND t0.JDOID = t1.JDOID
    [params=(String) DE, (String)
    de.logas.zoll.eztneu.CodeZollMassnahmenImpl] [reused=0]
    When I execute the same statement from a SQL-prompt, it takes that long as
    well, but when I swap the tablenames in the from part
    (to "FROM LOGASPOIMPL t1, CODEZOLLMASSNAHMENIMPL t0") the result comes
    immediately.
    I've had a look at the query plans, oracle creates for the two statements
    and found, that our index on myIndexedAttribute is not used
    by the first statement, but it is by the second.
    How can I make Kodo use the faster statement?
    I've tried to use the "jdbc-indexed" tag, but without success so far.
    Thanks,
    Wolfgang

    Thank you very much, Stefan & Alex.
    After computing statistics the index is used and the performance is fine
    now.
    - Wolfgang
    Alex Roytman wrote:
    ANALYZE TABLE MY_TABLE COMPUTE STATISTICS;
    "Stefan" <[email protected]> wrote in message
    news:btlqsj$f18$[email protected]..
    When I execute the same statement from a SQL-prompt, it takes that longas
    well, but when I swap the tablenames in the from part
    (to "FROM LOGASPOIMPL t1, CODEZOLLMASSNAHMENIMPL t0") the result comes
    immediately.
    I've had a look at the query plans, oracle creates for the twostatements
    and found, that our index on myIndexedAttribute is not used
    by the first statement, but it is by the second.
    How can I make Kodo use the faster statement?
    I've tried to use the "jdbc-indexed" tag, but without success so far.I know that in DB2 there is a function called "Run Statistics" which you
    can (and should do) on all tables involved in a query (at least once a
    month, when there are heavy changes in the tables).
    On information gathered by this statistics DB2 can optimize your queries
    and execution path's
    Since I was once involved in query performance optimizing on DB/2 I can
    say you can get improvements of 80% on big tables on which statistics are
    run and not. (Since the execution plans created by the optimizer differ
    heavily)
    Since I'm working now with Oracle as well, at least I can say, that Oracle
    has a featere like statistics as well. (go into the manager enterprise
    Console and click on a table, you will find a row "statisitics last run")
    I don't know how to trigger these statistics nor whether they would
    influence the query execution path on oracle (thus "swapping" tablenames
    by itself), since I didn't have time to do further research on thatmatter.
    But it's worth a try to find out and maybe it helps on you problem ?

  • Problem using existsnode from view

    I am having a problem using existsnode from a view. I am currently using 10.2.0.3
    example
    CREATE OR REPLACE VIEW XML_PERSON_ASSOCIATION
    (PERSON)
    AS
    select
    xmlelement("Person",
        xmlforest(
            extractvalue(value(p),'/Person/PersonID') "PersonID",
            extractvalue(value(p),'/Person/Prefix') "Prefix",
            extractvalue(value(p),'/Person/FirstName') "FirstName",
            extractvalue(value(p),'/Person/MiddleName') "MiddleName",
            extractvalue(value(p),'/Person/LastName') "LastName",
            extractvalue(value(p),'/Person/Suffix') "Suffix",
            extractvalue(value(p),'/Person/PreferredName') "PreferredName",
            extractvalue(value(p),'/Person/Gender') "Gender",
            extractvalue(value(p),'/Person/PrimaryLanguage') "PrimaryLanguage",
            extractvalue(value(p),'/Person/RecordStatus') "RecordStatus",
            extractvalue(value(p),'/Person/ImportedDate') "ImportedDate",
            (select
                xmlagg(
                    xmlelement("Association",
                        xmlforest(
                            extractvalue(value(oa),'/OrganizationPersonAssoc/Name') "Name",
                            extractvalue(value(ot),'/OrganizationType/OrganizationID') "OrganizationID",
                            extractvalue(value(ot),'/OrganizationType/Type') "OrganizationType",
                            extractvalue(value(a),'/Association/Role') "Role",                        
                            extractvalue(value(a),'/Association/RecordStatus') "RecordStatus",
                            extractvalue(value(oa),'/OrganizationPersonAssoc/ImportedDate') "ImportedDate"                                                
                        xmlelement("PersonTypes",
                            extract(value(per),'/Person/PersonTypes/PersonType')
                        xmlelement("Addresses",
                            extract(value(a),'/Association/Addresses/Address')
                        xmlelement("ContactMechanisms",
                            extract(value(a),'/Association/ContactMechanisms/ContactMechanism')
            from org_person_assoc oa,
            table(xmlsequence(extract(value(oa),'/OrganizationPersonAssoc/OrganizationTypes/OrganizationType'))) ot,
            table(xmlsequence(extract(value(ot),'/OrganizationType/Associations/Association'))) a,
            table(xmlsequence(extract(value(a),'/Association/Persons/Person'))) per
            where extractvalue(value(per),'/Person/PersonID') = extractvalue(value(p),'/Person/PersonID')        
            ) "Associations"
    ) person
    from person p
    /When I run the following statment
    select person
    from xml_person_association o
    where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1;
    I get no records returned. Now if I used the extract function and use the same path that's in the existsnode clause I get a record returned.
    select extract(person,'/Person/Associations/Association')
    from xml_person_association o
    where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1;
    <Association>
    <Name>TEST DATA</Name>
    <OrganizationID>30097</OrganizationID>
    </Association>
    If I run the same style of existsnode statment against a table directly instead of a view I am not required to use an extract caluse that has the same path that is used in the existsnode clause.
    Thanks for the help.
    Message was edited by:
    mdrake

    Testing in 11g I get
    SQL>
    SQL>
    SQL> set echo on
    SQL> spool testcase.log
    SQL> --
    SQL> connect sys/ as sysdba
    Enter password:
    Connected.
    SQL> set define on
    SQL> set timing on
    SQL> --
    SQL> define USERNAME = XDBTEST
    SQL> --
    SQL> def PASSWORD = XDBTEST
    SQL> --
    SQL> def USER_TABLESPACE = USERS
    SQL> --
    SQL> def TEMP_TABLESPACE = TEMP
    SQL> --
    SQL> drop user &USERNAME cascade
      2  /
    old   1: drop user &USERNAME cascade
    new   1: drop user XDBTEST cascade
    User dropped.
    Elapsed: 00:00:09.42
    SQL> grant connect, resource to &USERNAME identified by &PASSWORD
      2  /
    old   1: grant connect, resource to &USERNAME identified by &PASSWORD
    new   1: grant connect, resource to XDBTEST identified by XDBTEST
    Grant succeeded.
    Elapsed: 00:00:00.03
    SQL> grant create any directory, drop any directory to &USERNAME
      2  /
    old   1: grant create any directory, drop any directory to &USERNAME
    new   1: grant create any directory, drop any directory to XDBTEST
    Grant succeeded.
    Elapsed: 00:00:00.00
    SQL> grant alter session, create view to &USERNAME
      2  /
    old   1: grant alter session, create view to &USERNAME
    new   1: grant alter session, create view to XDBTEST
    Grant succeeded.
    Elapsed: 00:00:00.00
    SQL> alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
      2  /
    old   1: alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
    new   1: alter user XDBTEST default tablespace USERS temporary tablespace TEMP
    User altered.
    Elapsed: 00:00:00.00
    SQL> connect &USERNAME/&PASSWORD
    Connected.
    SQL> --
    SQL> alter session set events ='19027 trace name context forever, level 0x800'
      2  /
    Session altered.
    Elapsed: 00:00:00.00
    SQL> var xmlText1 clob
    SQL> var xmlText2 clob
    SQL> var xmlSchema clob
    SQL> var schemaURL varchar2(256)
    SQL> --
    SQL> begin
      2    :schemaURL := 'mcs.xsd';
      3    :xmlSchema :=
      4  '<!-- edited with XMLSpy v2007 sp2 (http://www.altova.com) by Shaun (PPD Inc) --> <s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xdb=
    "http://xmlns.oracle.com/xdb" elementFormDefault="qualified" xdb:storeVarrayAsTable="true">
      5     <s:element name="Organization" type="Organization" xdb:defaultTable="ORG"/>
      6     <s:element name="Person" type="Person" xdb:defaultTable="PERSON"/>
      7     <s:element name="OrganizationPersonAssoc" type="Organization" xdb:defaultTable="ORG_PERSON_ASSOC"/>
      8     <s:complexType name="Organization" xdb:SQLType="Organization">
      9             <s:sequence minOccurs="0">
    10                     <s:element name="Name" type="s:string" nillable="true"/>
    11                     <s:element name="LongName" type="s:string" nillable="true"/>
    12                     <s:element name="Description" type="s:string" nillable="true"/>
    13                     <s:element name="FWANumber" type="s:string" nillable="true"/>
    14                     <s:element name="GUID" type="s:string" nillable="true"/>
    15                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    16                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    17                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    18                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    19                     <s:element name="OrganizationTypes" type="ArrayOfOrganizationType" minOccurs="0"/>
    20                     <s:element name="OrganizationSynonyms" type="ArrayOfOrganizationSynonym"/>
    21                     <s:element name="ImportedDate" type="s:date"/>
    22             </s:sequence>
    23     </s:complexType>
    24     <s:complexType name="ArrayOfOrganizationType" xdb:SQLType="ArrayOfOrganizationType">
    25             <s:sequence minOccurs="0">
    26                     <s:element name="OrganizationType" type="OrganizationType" minOccurs="0" maxOccurs="unbounded"/>
    27             </s:sequence>
    28     </s:complexType>
    29     <s:complexType name="OrganizationType" xdb:SQLType="OrganizationType">
    30             <s:sequence minOccurs="0">
    31                     <s:element name="OrganizationID" type="s:string"/>
    32                     <s:element name="Type" type="s:string" nillable="true"/>
    33                     <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
    34                     <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    35                     <s:element name="SiteEstablishmentStatus" type="s:string" nillable="true"/>
    36                     <s:element name="SiteEstablishmentStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    37                     <s:element name="IPFNumber" type="s:int"/>
    38                     <s:element name="DUNSNumber" type="s:int"/>
    39                     <s:element name="GUID" type="s:string" nillable="true"/>
    40                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    41                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    42                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    43                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    44                     <s:element name="LegacyCodes" type="ArrayOfLegacyCode" minOccurs="0"/>
    45                     <s:element name="Addresses" type="ArrayOfAddress" minOccurs="0"/>
    46                     <s:element name="ContactMechanisms" type="ArrayOfContactMechanism" minOccurs="0"/>
    47                     <s:element name="Associations" type="ArrayOfAssociation" minOccurs="0"/>
    48             </s:sequence>
    49     </s:complexType>
    50     <s:complexType name="ArrayOfLegacyCode" xdb:SQLType="ArrayOfLegacyCode">
    51             <s:sequence minOccurs="0">
    52                     <s:element name="LegacyCode" type="LegacyCode" minOccurs="0" maxOccurs="unbounded"/>
    53             </s:sequence>
    54     </s:complexType>
    55     <s:complexType name="LegacyCode" xdb:SQLType="LegacyCode">
    56             <s:sequence minOccurs="0">
    57                     <s:element name="Code" type="s:string" nillable="true"/>
    58                     <s:element name="NetworkID" type="s:string"/>
    59                     <s:element name="GUID" type="s:string" nillable="true"/>
    60                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    61                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    62                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    63                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    64             </s:sequence>
    65     </s:complexType>
    66     <s:complexType name="ArrayOfAddress" xdb:SQLType="ArrayOfAddress">
    67             <s:sequence minOccurs="0">
    68                     <s:element name="Address" type="Address" minOccurs="0" maxOccurs="unbounded"/>
    69             </s:sequence>
    70     </s:complexType>
    71     <s:complexType name="Address" xdb:SQLType="Address">
    72             <s:sequence minOccurs="0">
    73                     <s:element name="StreetName1" type="s:string" nillable="true"/>
    74                     <s:element name="StreetName2" type="s:string" nillable="true"/>
    75                     <s:element name="StreetName3" type="s:string" nillable="true"/>
    76                     <s:element name="StreetName4" type="s:string" nillable="true"/>
    77                     <s:element name="CityName" type="s:string" nillable="true"/>
    78                     <s:element name="CityGUID" type="s:string" nillable="true"/>
    79                     <s:element name="CityCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    80                     <s:element name="CityLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    81                     <s:element name="CityRecordStatus" type="s:string" nillable="true"/>
    82                     <s:element name="CityRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    83                     <s:element name="StateName" type="s:string" nillable="true"/>
    84                     <s:element name="StateGUID" type="s:string" nillable="true"/>
    85                     <s:element name="StateCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    86                     <s:element name="StateLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    87                     <s:element name="StateRecordStatus" type="s:string" nillable="true"/>
    88                     <s:element name="StateRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    89                     <s:element name="CountryName" type="s:string" nillable="true"/>
    90                     <s:element name="CountryCode" type="s:string" nillable="true"/>
    91                     <s:element name="CountryGUID" type="s:string" nillable="true"/>
    92                     <s:element name="CountryCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    93                     <s:element name="CountryLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    94                     <s:element name="CountryRecordStatus" type="s:string" nillable="true"/>
    95                     <s:element name="CountryRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    96                     <s:element name="ZipPostalCode" type="s:string" nillable="true"/>
    97                     <s:element name="GUID" type="s:string" nillable="true"/>
    98                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    99                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    100                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    101                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    102                     <s:element name="Type" type="s:string" nillable="true"/>
    103                     <s:element name="TypeOtherSpecify" type="s:string" nillable="true"/>
    104                     <s:element name="InternalOffice" type="s:string" nillable="true"/>
    105                     <s:element name="MailStopCode" type="s:string" nillable="true"/>
    106                     <s:element name="PreferredFlag" type="s:string" nillable="true"/>
    107                     <s:element name="ActiveFromDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    108                     <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
    109                     <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    110             </s:sequence>
    111     </s:complexType>
    112     <s:complexType name="ArrayOfContactMechanism" xdb:SQLType="ArrayOfContactMechanism">
    113             <s:sequence minOccurs="0">
    114                     <s:element name="ContactMechanism" type="ContactMechanism" minOccurs="0" maxOccurs="unbounded"/>
    115             </s:sequence>
    116     </s:complexType>
    117     <s:complexType name="ContactMechanism" xdb:SQLType="ContactMechanism">
    118             <s:sequence minOccurs="0">
    119                     <s:element name="ContactType" type="s:string" nillable="true"/>
    120                     <s:element name="ContactTypeOtherSpecify" type="s:string" nillable="true"/>
    121                     <s:element name="ContactValue" type="s:string" nillable="true"/>
    122                     <s:element name="ContactAreaCode" type="s:string" nillable="true"/>
    123                     <s:element name="ContactCountryCallingCode" type="s:int"/>
    124                     <s:element name="ContactTollFreeFlag" type="s:string" nillable="true"/>
    125                     <s:element name="ContactGUID" type="s:string" nillable="true"/>
    126                     <s:element name="ContactCreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    127                     <s:element name="ContactLastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    128                     <s:element name="ContactRecordStatus" type="s:string" nillable="true"/>
    129                     <s:element name="ContactRecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    130                     <s:element name="Role" type="s:string" nillable="true"/>
    131                     <s:element name="PhoneExtension" type="s:string" nillable="true"/>
    132                     <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
    133                     <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    134                     <s:element name="ActiveFromDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    135                     <s:element name="GUID" type="s:string" nillable="true"/>
    136                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    137                     <s:element name="ModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    138                     <s:element name="PreferredFlag" type="s:string" nillable="true"/>
    139                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    140                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    141             </s:sequence>
    142     </s:complexType>
    143     <s:complexType name="ArrayOfAssociation" xdb:SQLType="ArrayOfAssociation">
    144             <s:sequence minOccurs="0">
    145                     <s:element name="Association" type="Association" minOccurs="0" maxOccurs="unbounded"/>
    146             </s:sequence>
    147     </s:complexType>
    148     <s:complexType name="Association" xdb:SQLType="Association">
    149             <s:sequence minOccurs="0">
    150                     <s:element name="Role" type="s:string" nillable="true"/>
    151                     <s:element name="GUID" type="s:string" nillable="true"/>
    152                     <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
    153                     <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    154                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    155                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    156                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    157                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    158                     <s:element name="Addresses" type="ArrayOfAddress" minOccurs="0"/>
    159                     <s:element name="ContactMechanisms" type="ArrayOfContactMechanism" minOccurs="0"/>
    160                     <s:element name="Persons" type="ArrayOfPerson" minOccurs="0"/>
    161             </s:sequence>
    162     </s:complexType>
    163     <s:complexType name="ArrayOfPerson" xdb:SQLType="ArrayOfPerson">
    164             <s:sequence minOccurs="0">
    165                     <s:element name="Person" type="Person" minOccurs="0" maxOccurs="unbounded"/>
    166             </s:sequence>
    167     </s:complexType>
    168     <s:complexType name="Person" xdb:SQLType="Person">
    169             <s:sequence minOccurs="0">
    170                     <s:element name="PersonID" type="s:int"/>
    171                     <s:element name="Prefix" type="s:string" nillable="true"/>
    172                     <s:element name="FirstName" type="s:string" nillable="true"/>
    173                     <s:element name="MiddleName" type="s:string" nillable="true"/>
    174                     <s:element name="LastName" type="s:string" nillable="true"/>
    175                     <s:element name="Suffix" type="s:string" nillable="true"/>
    176                     <s:element name="PreferredName" type="s:string" nillable="true"/>
    177                     <s:element name="Gender" type="s:string" nillable="true"/>
    178                     <s:element name="PrimaryLanguage" type="s:string" nillable="true"/>
    179                     <s:element name="GUID" type="s:string" nillable="true"/>
    180                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    181                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    182                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    183                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    184                     <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
    185                     <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    186                     <s:element name="PersonDegrees" type="ArrayOfPersonDegree" minOccurs="0"/>
    187                     <s:element name="PersonSpecialties" type="ArrayOfPersonSpecialty" minOccurs="0"/>
    188                     <s:element name="PersonTypes" type="ArrayOfPersonType" minOccurs="0"/>
    189                     <s:element name="Addresses" type="ArrayOfAddress" minOccurs="0"/>
    190                     <s:element name="ContactMechanisms" type="ArrayOfContactMechanism" minOccurs="0"/>
    191                     <s:element name="ImportedDate" type="s:date"/>
    192             </s:sequence>
    193     </s:complexType>
    194     <s:complexType name="ArrayOfPersonDegree" xdb:SQLType="ArrayOfPersonDegree">
    195             <s:sequence minOccurs="0">
    196                     <s:element name="PersonDegree" type="PersonDegree" minOccurs="0" maxOccurs="unbounded"/>
    197             </s:sequence>
    198     </s:complexType>
    199     <s:complexType name="PersonDegree" xdb:SQLType="PersonDegree">
    200             <s:sequence minOccurs="0">
    201                     <s:element name="Code" type="s:string" nillable="true"/>
    202                     <s:element name="Major" type="s:string" nillable="true"/>
    203                     <s:element name="ListingOrder" type="s:int"/>
    204                     <s:element name="GUID" type="s:string" nillable="true"/>
    205                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    206                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    207                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    208                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    209             </s:sequence>
    210     </s:complexType>
    211     <s:complexType name="ArrayOfPersonSpecialty" xdb:SQLType="ArrayOfPersonSpecialty">
    212             <s:sequence minOccurs="0">
    213                     <s:element name="PersonSpecialty" type="PersonSpecialty" minOccurs="0" maxOccurs="unbounded"/>
    214             </s:sequence>
    215     </s:complexType>
    216     <s:complexType name="PersonSpecialty" xdb:SQLType="PersonSpecialty">
    217             <s:sequence minOccurs="0">
    218                     <s:element name="Name" type="s:string" nillable="true"/>
    219                     <s:element name="GUID" type="s:string" nillable="true"/>
    220                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    221                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    222                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    223                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    224             </s:sequence>
    225     </s:complexType>
    226     <s:complexType name="ArrayOfPersonType" xdb:SQLType="ArrayOfPersonType">
    227             <s:sequence minOccurs="0">
    228                     <s:element name="PersonType" type="PersonType" minOccurs="0" maxOccurs="unbounded"/>
    229             </s:sequence>
    230     </s:complexType>
    231     <s:complexType name="PersonType" xdb:SQLType="PersonType">
    232             <s:sequence minOccurs="0">
    233                     <s:element name="Type" type="s:string" nillable="true"/>
    234                     <s:element name="GUID" type="s:string" nillable="true"/>
    235                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    236                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    237                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    238                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    239                     <s:element name="QCDoneStatus" type="s:string" nillable="true"/>
    240                     <s:element name="QCDoneStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    241             </s:sequence>
    242     </s:complexType>
    243     <s:complexType name="ArrayOfOrganizationSynonym" xdb:SQLType="ArrayOfOrganizationSynonym">
    244             <s:sequence minOccurs="0">
    245                     <s:element name="OrganizationSynonym" type="OrganizationSynonym" minOccurs="0" maxOccurs="unbounded"/>
    246             </s:sequence>
    247     </s:complexType>
    248     <s:complexType name="OrganizationSynonym" xdb:SQLType="OrganizationSynonym">
    249             <s:sequence minOccurs="0">
    250                     <s:element name="Name" type="s:string" nillable="true"/>
    251                     <s:element name="GUID" type="s:string" nillable="true"/>
    252                     <s:element name="CreatedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    253                     <s:element name="LastModifiedDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    254                     <s:element name="RecordStatus" type="s:string" nillable="true"/>
    255                     <s:element name="RecordStatusDate" type="s:dateTime" xdb:SQLType="TIMESTAMP(6) WITH TIME ZONE"/>
    256             </s:sequence>
    257     </s:complexType>
    258  </s:schema>';
    259    :xmltext1 :=
    260  '<?xml version="1.0" encoding="WINDOWS-1252"?> <Person xsi:noNamespaceSchemaLocation="mcs.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns
    :xsi="http://www.w3.org/2001/XMLSchema-instance">
    261    <PersonID>100448</PersonID>
    262    <Prefix/>
    263    <FirstName>John</FirstName>
    264    <MiddleName/>
    265    <LastName>Doe</LastName>
    266    <Suffix/>
    267    <PreferredName/>
    268    <Gender/>
    269    <PrimaryLanguage xsi:nil="true"/>
    270    <GUID>ffff-ffff-ffff</GUID>
    271    <RecordStatus>Active</RecordStatus>
    272    <RecordStatusDate>2007-04-29T00:11:50.750000-04:00</RecordStatusDate>
    273    <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
    274    <LastModifiedDate>2007-04-29T00:11:50.770000-04:00</LastModifiedDate>
    275    <QCDoneStatus>Yes</QCDoneStatus>
    276    <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
    277    <PersonDegrees>
    278      <PersonDegree>
    279        <Code>B.S.</Code>
    280        <Major xsi:nil="true"/>
    281        <ListingOrder>1</ListingOrder>
    282        <GUID>d01bbcfd-9d48-47bf-818d-9957b907a664</GUID>
    283        <RecordStatus>Active</RecordStatus>
    284        <RecordStatusDate>2006-10-05T10:48:04.430000-04:00</RecordStatusDate>
    285        <CreatedDate>2006-10-05T10:48:06.520000-04:00</CreatedDate>
    286        <LastModifiedDate>2006-10-05T10:48:06.520000-04:00</LastModifiedDate>
    287      </PersonDegree>
    288    </PersonDegrees>
    289    <PersonSpecialties/>
    290    <PersonTypes>
    291      <PersonType>
    292        <Type>Resource Personnel</Type>
    293        <GUID>3049ddcd-3590-4fd9-a534-e2cea5b82c09</GUID>
    294        <RecordStatus>Active</RecordStatus>
    295        <RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate>
    296        <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
    297        <LastModifiedDate>2007-04-29T00:11:50.817000-04:00</LastModifiedDate>
    298        <QCDoneStatus>Yes</QCDoneStatus>
    299        <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
    300      </PersonType>
    301    </PersonTypes>
    302    <Addresses/>
    303    <ContactMechanisms/>
    304    <ImportedDate>2007-04-30</ImportedDate>
    305  </Person>';
    306    :xmltext2 :=
    307  '<?xml version="1.0" encoding="WINDOWS-1252"?> <OrganizationPersonAssoc xsi:noNamespaceSchemaLocation="mcs.xsd" xmlns:xsd="http://www.w3.org/2001
    /XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    308    <Name>Org Name Office</Name>
    309    <LongName>Long Name</LongName>
    310    <Description xsi:nil="true"/>
    311    <FWANumber xsi:nil="true"/>
    312    <GUID>dddd-dddd</GUID>
    313    <CreatedDate>2006-05-18T18:59:01.500000-04:00</CreatedDate>
    314    <LastModifiedDate>2006-05-18T18:59:01.500000-04:00</LastModifiedDate>
    315    <RecordStatus>Active</RecordStatus>
    316    <RecordStatusDate>2006-05-18T18:59:01.500000-04:00</RecordStatusDate>
    317    <OrganizationTypes>
    318      <OrganizationType>
    319        <OrganizationID>30097</OrganizationID>
    320        <Type>Agency</Type>
    321        <QCDoneStatus>Yes</QCDoneStatus>
    322        <QCDoneStatusDate>2006-05-18T18:59:01.513000-04:00</QCDoneStatusDate>
    323        <SiteEstablishmentStatus xsi:nil="true"/>
    324        <SiteEstablishmentStatusDate>0001-01-01T00:00:00.000000-05:00</SiteEstablishmentStatusDate>
    325        <IPFNumber>0</IPFNumber>
    326        <DUNSNumber>0</DUNSNumber>
    327        <GUID>cfe9e9e0-68a3-45c9-81c0-74848523133b</GUID>
    328        <CreatedDate>2006-05-18T18:59:01.513000-04:00</CreatedDate>
    329        <LastModifiedDate>2006-05-18T18:59:01.513000-04:00</LastModifiedDate>
    330        <RecordStatus>Active</RecordStatus>
    331        <RecordStatusDate>2006-05-18T18:59:01.513000-04:00</RecordStatusDate>
    332        <Associations>
    333          <Association>
    334            <Role>Employee</Role>
    335            <GUID>9a9a9a-ababab</GUID>
    336            <QCDoneStatus>Yes</QCDoneStatus>
    337            <QCDoneStatusDate>2006-06-13T01:29:09.030000-04:00</QCDoneStatusDate>
    338            <CreatedDate>2006-06-13T01:29:09.030000-04:00</CreatedDate>
    339            <LastModifiedDate>2006-07-25T15:27:23.783000-04:00</LastModifiedDate>
    340            <RecordStatus>Active</RecordStatus>
    341            <RecordStatusDate>2006-06-13T01:29:09.030000-04:00</RecordStatusDate>
    342            <Addresses>
    343              <Address>
    344                <StreetName1>123 Front St.</StreetName1>
    345                <StreetName2 xsi:nil="true"/>
    346                <StreetName3 xsi:nil="true"/>
    347                <StreetName4 xsi:nil="true"/>
    348                <CityName>City</CityName>
    349                <CityGUID>234234</CityGUID>
    350                <CityCreatedDate>2006-05-08T20:06:45.143000-04:00</CityCreatedDate>
    351                <CityLastModifiedDate>2006-05-08T20:06:45.143000-04:00</CityLastModifiedDate>
    352                <CityRecordStatus>Active</CityRecordStatus>
    353                <CityRecordStatusDate>2006-05-08T20:06:45.143000-04:00</CityRecordStatusDate>
    354                <StateName>New York</StateName>
    355                <StateGUID>9fd469e1-4d4a-4f38-9def-50038e5ecca2</StateGUID>
    356                <StateCreatedDate>2006-04-22T16:09:35.830000-04:00</StateCreatedDate>
    357                <StateLastModifiedDate>2006-04-22T16:09:35.830000-04:00</StateLastModifiedDate>
    358                <StateRecordStatus>Active</StateRecordStatus>
    359                <StateRecordStatusDate>2006-04-22T16:09:35.830000-04:00</StateRecordStatusDate>
    360                <CountryName>United States</CountryName>
    361                <CountryCode>USA</CountryCode>
    362                <CountryGUID>532d35dd-3a49-408a-a416-20c41e9c7997</CountryGUID>
    363                <CountryCreatedDate>2006-04-22T15:30:47.000000-04:00</CountryCreatedDate>
    364                <CountryLastModifiedDate>2006-04-22T15:30:47.000000-04:00</CountryLastModifiedDate>
    365                <CountryRecordStatus>Active</CountryRecordStatus>
    366                <CountryRecordStatusDate>2006-04-22T15:30:47.000000-04:00</CountryRecordStatusDate>
    367                <ZipPostalCode>12345</ZipPostalCode>
    368                <GUID>b2414fa9-7375-4d26-8d76-89a6915d6751</GUID>
    369                <CreatedDate>2006-06-13T01:29:09.030000-04:00</CreatedDate>
    370                <LastModifiedDate>2006-07-29T23:45:17.670000-04:00</LastModifiedDate>
    371                <RecordStatus>Active</RecordStatus>
    372                <RecordStatusDate>2006-06-13T01:29:09.030000-04:00</RecordStatusDate>
    373                <Type>Office</Type>
    374                <TypeOtherSpecify/>
    375                <InternalOffice></InternalOffice>
    376                <MailStopCode/>
    377                <PreferredFlag>Yes</PreferredFlag>
    378                <ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
    379                <QCDoneStatus>Yes</QCDoneStatus>
    380                <QCDoneStatusDate>2006-06-13T01:29:09.030000-04:00</QCDoneStatusDate>
    381              </Address>
    382            </Addresses>
    383            <ContactMechanisms>
    384              <ContactMechanism>
    385                <ContactType>Phone</ContactType>
    386                <ContactTypeOtherSpecify xsi:nil="true"/>
    387                <ContactValue>555-5555</ContactValue>
    388                <ContactAreaCode>555</ContactAreaCode>
    389                <ContactCountryCallingCode>1</ContactCountryCallingCode>
    390                <ContactTollFreeFlag xsi:nil="true"/>
    391                <ContactGUID>123</ContactGUID>
    392                <ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
    393                <ContactLastModifiedDate>2007-02-23T16:36:10.260000-05:00</ContactLastModifiedDate>
    394                <ContactRecordStatus>Active</ContactRecordStatus>
    395                <ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
    396                <Role>Business</Role>
    397                <PhoneExtension/>
    398                <QCDoneStatus>Yes</QCDoneStatus>
    399                <QCDoneStatusDate>2006-06-13T01:29:09.047000-04:00</QCDoneStatusDate>
    400                <ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
    401                <GUID>321</GUID>
    402                <CreatedDate>2006-06-13T01:29:09.047000-04:00</CreatedDate>
    403                <ModifiedDate>2006-07-29T23:53:03.323000-04:00</ModifiedDate>
    404                <PreferredFlag>Yes</PreferredFlag>
    405                <RecordStatus>Inactive</RecordStatus>
    406                <RecordStatusDate>2006-07-29T23:53:03.393000-04:00</RecordStatusDate>
    407              </ContactMechanism>
    408              <ContactMechanism>
    409                <ContactType>Email</ContactType>
    410                <ContactTypeOtherSpecify xsi:nil="true"/>
    411                <ContactValue>[email protected]</ContactValue>
    412                <ContactAreaCode xsi:nil="true"/>
    413                <ContactCountryCallingCode>0</ContactCountryCallingCode>
    414                <ContactTollFreeFlag xsi:nil="true"/>
    415                <ContactGUID>ddd</ContactGUID>
    416                <ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
    417                <ContactLastModifiedDate>2006-06-13T01:29:09.047000-04:00</ContactLastModifiedDate>
    418                <ContactRecordStatus>Active</ContactRecordStatus>
    419                <ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
    420                <Role>Business</Role>
    421                <PhoneExtension xsi:nil="true"/>
    422                <QCDoneStatus>Yes</QCDoneStatus>
    423                <QCDoneStatusDate>2006-06-13T01:29:09.063000-04:00</QCDoneStatusDate>
    424                <ActiveFromDate>2006-06-13T01:29:09.063000-04:00</ActiveFromDate>
    425                <GUID>111</GUID>
    426                <CreatedDate>2006-06-13T01:29:09.063000-04:00</CreatedDate>
    427                <ModifiedDate>2006-06-13T01:29:09.063000-04:00</ModifiedDate>
    428                <PreferredFlag>Yes</PreferredFlag>
    429                <RecordStatus>Active</RecordStatus>
    430                <RecordStatusDate>2006-06-13T01:29:09.063000-04:00</RecordStatusDate>
    431              </ContactMechanism>
    432            </ContactMechanisms>
    433            <Persons>
    434              <Person>
    435                <PersonID>100448</PersonID>
    436                <Prefix/>
    437                <FirstName>John</FirstName>
    438                <MiddleName/>
    439                <LastName>Doe</LastName>
    440                <Suffix/>
    441                <PreferredName/>
    442                <Gender/>
    443                <PrimaryLanguage xsi:nil="true"/>
    444                <GUID>123</GUID>
    445                <RecordStatus>Active</RecordStatus>
    446                <RecordStatusDate>2007-04-29T00:11:50.750000-04:00</RecordStatusDate>
    447                <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
    448                <LastModifiedDate>2007-04-29T00:11:50.770000-04:00</LastModifiedDate>
    449                <QCDoneStatus>Yes</QCDoneStatus>
    450                <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
    451                <PersonTypes>
    452                  <PersonType>
    453                    <Type>Resource Personnel</Type>
    454                    <GUID>3049ddcd-3590-4fd9-a534-e2cea5b82c09</GUID>
    455                    <RecordStatus>Active</RecordStatus>
    456                    <RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate>
    457                    <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
    458                    <LastModifiedDate>2007-04-29T00:11:50.817000-04:00</LastModifiedDate>
    459                    <QCDoneStatus>Yes</QCDoneStatus>
    460                    <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
    461                  </PersonType>
    462                </PersonTypes>
    463              </Person>
    464            </Persons>
    465          </Association>
    466        </Associations>
    467      </OrganizationType>
    468    </OrganizationTypes>
    469    <ImportedDate>2007-04-30</ImportedDate>
    470  </OrganizationPersonAssoc>
    471  ';
    472  end;
    473  /
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:00.00
    SQL> begin
      2    dbms_xmlschema.registerSchema
      3    (
      4        schemaURL => :schemaURL
      5       ,schemaDoc => :xmlSchema
      6       ,local     => TRUE
      7       ,genBean   => false
      8       ,genTypes  => TRUE
      9       ,genTables => TRUE
    10       ,enableHierarchy => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
    11    );
    12  end;
    13  /
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:03.67
    SQL> insert into Person values ( xmltype (:xmltext1))
      2  /
    1 row created.
    Elapsed: 00:00:00.07
    SQL> insert into org_person_assoc values ( xmltype (:xmltext2))
      2  /
    1 row created.
    Elapsed: 00:00:00.03
    SQL> commit
      2  /
    Commit complete.
    Elapsed: 00:00:00.00
    SQL> CREATE OR REPLACE VIEW XML_PERSON_ASSOCIATION
      2  (PERSON)
      3  AS
      4  select
      5  xmlelement("Person",
      6      xmlforest(
      7          extractvalue(value(p),'/Person/PersonID') "PersonID",
      8          extractvalue(value(p),'/Person/Prefix') "Prefix",
      9          extractvalue(value(p),'/Person/FirstName') "FirstName",
    10          extractvalue(value(p),'/Person/MiddleName') "MiddleName",
    11          extractvalue(value(p),'/Person/LastName') "LastName",
    12          extractvalue(value(p),'/Person/Suffix') "Suffix",
    13          extractvalue(value(p),'/Person/PreferredName') "PreferredName",
    14          extractvalue(value(p),'/Person/Gender') "Gender",
    15          extractvalue(value(p),'/Person/PrimaryLanguage') "PrimaryLanguage",
    16          extractvalue(value(p),'/Person/RecordStatus') "RecordStatus",
    17          extractvalue(value(p),'/Person/ImportedDate') "ImportedDate",
    18          (select
    19              xmlagg(
    20                  xmlelement("Association",
    21                      xmlforest(
    22                          extractvalue(value(oa),'/OrganizationPersonAssoc/Name') "Name",
    23                          extractvalue(value(ot),'/OrganizationType/OrganizationID') "OrganizationID",
    24                          extractvalue(value(ot),'/OrganizationType/Type') "OrganizationType",
    25                          extractvalue(value(a),'/Association/Role') "Role",
    26                          extractvalue(value(a),'/Association/RecordStatus') "RecordStatus",
    27                          extractvalue(value(oa),'/OrganizationPersonAssoc/ImportedDate') "ImportedDate"
    28                      ),
    29                      xmlelement("PersonTypes",
    30                          extract(value(per),'/Person/PersonTypes/PersonType')
    31                      ),
    32                      xmlelement("Addresses",
    33                          extract(value(a),'/Association/Addresses/Address')
    34                      ),
    35                      xmlelement("ContactMechanisms",
    36                          extract(value(a),'/Association/ContactMechanisms/ContactMechanism')
    37                      )
    38                  )
    39              )
    40          from org_person_assoc oa,
    41          table(xmlsequence(extract(value(oa),'/OrganizationPersonAssoc/OrganizationTypes/OrganizationType'))) ot,
    42          table(xmlsequence(extract(value(ot),'/OrganizationType/Associations/Association'))) a,
    43          table(xmlsequence(extract(value(a),'/Association/Persons/Person'))) per
    44          where extractvalue(value(per),'/Person/PersonID') = extractvalue(value(p),'/Person/PersonID')
    45          ) "Associations"
    46      )
    47  ) person
    48  from person p
    49  /
    View created.
    Elapsed: 00:00:00.06
    SQL> set autotrace on explain
    SQL> --
    SQL> set long 10000 pages 0 lines 150
    SQL> --
    SQL> select person
      2    from xml_person_association o
      3   where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1
      4  /
    <Person><PersonID>100448</PersonID><FirstName>John</FirstName><LastName>Doe</LastName><RecordStatus>Active</RecordStatus><ImportedDate>2007-04-30</Imp
    ortedDate><Associations><Association><Name>Org Name Office</Name><OrganizationID>30097</OrganizationID><OrganizationType>Agency</OrganizationType><Rol
    e>Employee</Role><RecordStatus>Active</RecordStatus><ImportedDate>2007-04-30</ImportedDate><PersonTypes><PersonType>
      <Type>Resource Personnel</Type>
      <GUID>3049ddcd-3590-4fd9-a534-e2cea5b82c09</GUID>
      <RecordStatus>Active</RecordStatus>
      <RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate>
      <CreatedDate>2006-06-13T00:57:21.090000-04:00</CreatedDate>
      <LastModifiedDate>2007-04-29T00:11:50.817000-04:00</LastModifiedDate>
      <QCDoneStatus>Yes</QCDoneStatus>
      <QCDoneStatusDate>2006-06-13T00:57:22.977000-04:00</QCDoneStatusDate>
    </PersonType>
    </PersonTypes><Addresses><Address>
      <StreetName1>123 Front St.</StreetName1>
      <StreetName2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <StreetName3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <StreetName4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <CityName>City</CityName>
      <CityGUID>234234</CityGUID>
      <CityCreatedDate>2006-05-08T20:06:45.143000-04:00</CityCreatedDate>
      <CityLastModifiedDate>2006-05-08T20:06:45.143000-04:00</CityLastModifiedDate>
      <CityRecordStatus>Active</CityRecordStatus>
      <CityRecordStatusDate>2006-05-08T20:06:45.143000-04:00</CityRecordStatusDate>
      <StateName>New York</StateName>
      <StateGUID>9fd469e1-4d4a-4f38-9def-50038e5ecca2</StateGUID>
      <StateCreatedDate>2006-04-22T16:09:35.830000-04:00</StateCreatedDate>
      <StateLastModifiedDate>2006-04-22T16:09:35.830000-04:00</StateLastModifiedDate>
      <StateRecordStatus>Active</StateRecordStatus>
      <StateRecordStatusDate>2006-04-22T16:09:35.830000-04:00</StateRecordStatusDate>
      <CountryName>United States</CountryName>
      <CountryCode>USA</CountryCode>
      <CountryGUID>532d35dd-3a49-408a-a416-20c41e9c7997</CountryGUID>
      <CountryCreatedDate>2006-04-22T15:30:47.000000-04:00</CountryCreatedDate>
      <CountryLastModifiedDate>2006-04-22T15:30:47.000000-04:00</CountryLastModifiedDate>
      <CountryRecordStatus>Active</CountryRecordStatus>
      <CountryRecordStatusDate>2006-04-22T15:30:47.000000-04:00</CountryRecordStatusDate>
      <ZipPostalCode>12345</ZipPostalCode>
      <GUID>b2414fa9-7375-4d26-8d76-89a6915d6751</GUID>
      <CreatedDate>2006-06-13T01:29:09.030000-04:00</CreatedDate>
      <LastModifiedDate>2006-07-29T23:45:17.670000-04:00</LastModifiedDate>
      <RecordStatus>Active</RecordStatus>
      <RecordStatusDate>2006-06-13T01:29:09.030000-04:00</RecordStatusDate>
      <Type>Office</Type>
      <TypeOtherSpecify/>
      <InternalOffice/>
      <MailStopCode/>
      <PreferredFlag>Yes</PreferredFlag>
      <ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
      <QCDoneStatus>Yes</QCDoneStatus>
      <QCDoneStatusDate>2006-06-13T01:29:09.030000-04:00</QCDoneStatusDate>
    </Address>
    </Addresses><ContactMechanisms><ContactMechanism>
      <ContactType>Phone</ContactType>
      <ContactTypeOtherSpecify xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <ContactValue>555-5555</ContactValue>
      <ContactAreaCode>555</ContactAreaCode>
      <ContactCountryCallingCode>1</ContactCountryCallingCode>
      <ContactTollFreeFlag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <ContactGUID>123</ContactGUID>
      <ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
      <ContactLastModifiedDate>2007-02-23T16:36:10.260000-05:00</ContactLastModifiedDate>
      <ContactRecordStatus>Active</ContactRecordStatus>
      <ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
      <Role>Business</Role>
      <PhoneExtension/>
      <QCDoneStatus>Yes</QCDoneStatus>
      <QCDoneStatusDate>2006-06-13T01:29:09.047000-04:00</QCDoneStatusDate>
      <ActiveFromDate>2006-06-13T01:29:09.000000-04:00</ActiveFromDate>
      <GUID>321</GUID>
      <CreatedDate>2006-06-13T01:29:09.047000-04:00</CreatedDate>
      <ModifiedDate>2006-07-29T23:53:03.323000-04:00</ModifiedDate>
      <PreferredFlag>Yes</PreferredFlag>
      <RecordStatus>Inactive</RecordStatus>
      <RecordStatusDate>2006-07-29T23:53:03.393000-04:00</RecordStatusDate>
    </ContactMechanism>
    <ContactMechanism>
      <ContactType>Email</ContactType>
      <ContactTypeOtherSpecify xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <ContactValue>[email protected]</ContactValue>
      <ContactAreaCode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <ContactCountryCallingCode>0</ContactCountryCallingCode>
      <ContactTollFreeFlag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <ContactGUID>ddd</ContactGUID>
      <ContactCreatedDate>2006-06-13T01:29:09.047000-04:00</ContactCreatedDate>
      <ContactLastModifiedDate>2006-06-13T01:29:09.047000-04:00</ContactLastModifiedDate>
      <ContactRecordStatus>Active</ContactRecordStatus>
      <ContactRecordStatusDate>2006-06-13T01:29:09.047000-04:00</ContactRecordStatusDate>
      <Role>Business</Role>
      <PhoneExtension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <QCDoneStatus>Yes</QCDoneStatus>
      <QCDoneStatusDate>2006-06-13T01:29:09.063000-04:00</QCDoneStatusDate>
      <ActiveFromDate>2006-06-13T01:29:09.063000-04:00</ActiveFromDate>
      <GUID>111</GUID>
      <CreatedDate>2006-06-13T01:29:09.063000-04:00</CreatedDate>
      <ModifiedDate>2006-06-13T01:29:09.063000-04:00</ModifiedDate>
      <PreferredFlag>Yes</PreferredFlag>
      <RecordStatus>Active</RecordStatus>
      <RecordStatusDate>2006-06-13T01:29:09.063000-04:00</RecordStatusDate>
    </ContactMechanism>
    </ContactMechanisms></Association></Associations></Person>
    Elapsed: 00:00:00.42
    Execution Plan
    Plan hash value: 95656148
    | Id  | Operation                        | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                 |                                |     1 | 18040 |     9   (0)| 00:00:01 |
    |   1 |  SORT AGGREGATE                  |                                |     1 | 10096 |            |          |
    |   2 |   TABLE ACCESS BY INDEX ROWID    | SYS_NT32zHSpCZQ9ynComtqqKsrw== |     1 | 10096 |     2   (0)| 00:00:01 |
    |*  3 |    INDEX RANGE SCAN              | SYS_C009300                    |     1 |       |     2   (0)| 00:00:01 |
    |   4 |    SORT AGGREGATE                |                                |     1 | 48284 |            |          |
    |   5 |     TABLE ACCESS BY INDEX ROWID  | SYS_NTjbkXqKq3S96fbEOM3Qs5Gg== |     1 | 48284 |     2   (0)| 00:00:01 |
    |*  6 |      INDEX RANGE SCAN            | SYS_C009296                    |     1 |       |     2   (0)| 00:00:01 |
    |   7 |      SORT AGGREGATE              |                                |     1 | 28187 |            |          |
    |   8 |       TABLE ACCESS BY INDEX ROWID| SYS_NTm2nBfKKNSGm6hs2e1Z0w/A== |     1 | 28187 |     2   (0)| 00:00:01 |
    |*  9 |        INDEX RANGE SCAN          | SYS_C009297                    |     1 |       |     2   (0)| 00:00:01 |
    |  10 |  SORT AGGREGATE                  |                                |     1 | 13910 |            |          |
    |  11 |   NESTED LOOPS                   |                                |     1 | 13910 |     6   (0)| 00:00:01 |
    |  12 |    NESTED LOOPS                  |                                |     1 |  8131 |     5   (0)| 00:00:01 |
    |  13 |     NESTED LOOPS                 |                                |     1 |  4097 |     4   (0)| 00:00:01 |
    |* 14 |      TABLE ACCESS FULL           | SYS_NT7Erd/G5iSPWX9w20Z5cNRg== |     1 |    43 |     3   (0)| 00:00:01 |
    |* 15 |      TABLE ACCESS BY INDEX ROWID | SYS_NTQWY/m3uES5GM7AByRclr8A== |     1 |  4054 |     1   (0)| 00:00:01 |
    |* 16 |       INDEX UNIQUE SCAN          | SYS_C009310                    |     1 |       |     0   (0)| 00:00:01 |
    |* 17 |     TABLE ACCESS BY INDEX ROWID  | SYS_NTTiDHMvB7RbSEfNxho66yQg== |     1 |  4034 |     1   (0)| 00:00:01 |
    |* 18 |      INDEX UNIQUE SCAN           | SYS_C009314                    |     1 |       |     0   (0)| 00:00:01 |
    |  19 |    TABLE ACCESS BY INDEX ROWID   | ORG_PERSON_ASSOC               |     1 |  5779 |     1   (0)| 00:00:01 |
    |* 20 |     INDEX UNIQUE SCAN            | SYS_C009320                    |     1 |       |     0   (0)| 00:00:01 |
    |* 21 |  FILTER                          |                                |       |       |            |          |
    |  22 |   TABLE ACCESS FULL              | PERSON                         |     1 | 18040 |     3   (0)| 00:00:01 |
    |  23 |   NESTED LOOPS                   |                                |       |       |            |          |
    |  24 |    NESTED LOOPS                  |                                |     1 |  5893 |     6   (0)| 00:00:01 |
    |  25 |     NESTED LOOPS                 |                                |     1 |  2125 |     5   (0)| 00:00:01 |
    |  26 |      NESTED LOOPS                |                                |     1 |    93 |     4   (0)| 00:00:01 |
    |* 27 |       TABLE ACCESS FULL          | SYS_NT7Erd/G5iSPWX9w20Z5cNRg== |     1 |    43 |     3   (0)| 00:00:01 |
    |* 28 |       TABLE ACCESS BY INDEX ROWID| SYS_NTQWY/m3uES5GM7AByRclr8A== |     1 |    50 |     1   (0)| 00:00:01 |
    |* 29 |        INDEX UNIQUE SCAN         | SYS_C009310                    |     1 |       |     0   (0)| 00:00:01 |
    |* 30 |      TABLE ACCESS BY INDEX ROWID | SYS_NTTiDHMvB7RbSEfNxho66yQg== |     1 |  2032 |     1   (0)| 00:00:01 |
    |* 31 |       INDEX UNIQUE SCAN          | SYS_C009314                    |     1 |       |     0   (0)| 00:00:01 |
    |* 32 |     INDEX UNIQUE SCAN            | SYS_C009320                    |     1 |       |     0   (0)| 00:00:01 |
    |  33 |    TABLE ACCESS BY INDEX ROWID   | ORG_PERSON_ASSOC               |     1 |  3768 |     1   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       3 - access("NESTED_TABLE_ID"=:B1)
       6 - access("NESTED_TABLE_ID"=:B1)
       9 - access("NESTED_TABLE_ID"=:B1)
      14 - filter("SYS_NC_TYPEID$" IS NOT NULL AND "PersonID"=:B1)
      15 - filter("SYS_NC_TYPEID$" IS NOT NULL)
      16 - access("NESTED_TABLE_ID"="SYS_ALIAS_1"."SYS_NC0002700028$")
      17 - filter("SYS_NC_TYPEID$" IS NOT NULL)
      18 - access("NESTED_TABLE_ID"="SYS_ALIAS_0"."SYS_NC0003700038$")
      20 - access("NESTED_TABLE_ID"="OA"."SYS_NC0002100022$")
      21 - filter( EXISTS (SELECT 0 FROM "XDBTEST"."SYS_NT7Erd/G5iSPWX9w20Z5cNRg=="
                  "SYS_ALIAS_1","XDBTEST"."SYS_NTQWY/m3uES5GM7AByRclr8A=="
                  "SYS_ALIAS_3","XDBTEST"."SYS_NTTiDHMvB7RbSEfNxho66yQg==" "SYS_ALIAS_0","XDBTEST"."ORG_PERSON_ASSOC" "OA"
                  WHERE "SYS_ALIAS_0"."NESTED_TABLE_ID"="OA"."SYS_NC0002100022$" AND
                  "SYS_ALIAS_1"."NESTED_TABLE_ID"="SYS_ALIAS_0"."SYS_NC0003700038$" AND "SYS_ALIAS_0"."SYS_NC_TYPEID$" IS
                  NOT NULL AND TO_NUMBER("SYS_ALIAS_0"."OrganizationID")=30097 AND
                  "SYS_ALIAS_4"."NESTED_TABLE_ID"="SYS_ALIAS_1"."SYS_NC0002700028$" AND "SYS_ALIAS_1"."SYS_NC_TYPEID$" IS
                  NOT NULL AND "SYS_ALIAS_4"."SYS_NC_TYPEID$" IS NOT NULL AND "SYS_ALIAS_4"."PersonID"=:B1))
      27 - filter("SYS_ALIAS_4"."SYS_NC_TYPEID$" IS NOT NULL AND "SYS_ALIAS_4"."PersonID"=:B1)
      28 - filter("SYS_ALIAS_1"."SYS_NC_TYPEID$" IS NOT NULL)
      29 - access("SYS_ALIAS_4"."NESTED_TABLE_ID"="SYS_ALIAS_1"."SYS_NC0002700028$")
      30 - filter("SYS_ALIAS_0"."SYS_NC_TYPEID$" IS NOT NULL AND
                  TO_NUMBER("SYS_ALIAS_0"."OrganizationID")=30097)
      31 - access("SYS_ALIAS_1"."NESTED_TABLE_ID"="SYS_ALIAS_0"."SYS_NC0003700038$")
      32 - access("SYS_ALIAS_0"."NESTED_TABLE_ID"="OA"."SYS_NC0002100022$")
    Note
       - dynamic sampling used for this statement
    SQL> select extract(person,'/Person/Associations/Association')
      2    from xml_person_association o
      3   where existsnode(person,'/Person/Associations/Association[OrganizationID=30097]')=1
      4  /
    <Association><Name>Org Name Office</Name><OrganizationID>30097</OrganizationID><OrganizationType>Agency</OrganizationType><Role>Employee</Role><Record
    Status>Active</RecordStatus><ImportedDate>2007-04-30</ImportedDate><PersonTypes><PersonType><Type>Resource Personnel</Type><GUID>3049ddcd-3590-4fd9-a5
    34-e2cea5b82c09</GUID><RecordStatus>Active</RecordStatus><RecordStatusDate>2006-06-13T00:57:22.977000-04:00</RecordStatusDate><CreatedDate>2006-06-13T
    00:

  • Why CBO don't use function-base index when I use like and bind variable

    Hello
    I have litle problem with function-base index and like with bind variable.
    When I use like with bind variable, the CBO don't use my function-base index.
    For example when I create table and index:
    ALTER SESSION SET NLS_SORT='BINARY_CI';
    ALTER SESSION SET NLS_COMP='LINGUISTIC';
    alter session set nls_language='ENGLISH';
    -- DROP TABLE TEST1;
    CREATE TABLE TEST1 (K1 VARCHAR2(32));
    create index test1_idx on test1(nlssort(K1,'nls_sort=BINARY_CI'));
    INSERT INTO TEST1
    SELECT OBJECT_NAME FROM ALL_OBJECTS;
    COMMIT;
    When I run:
    ALTER SESSION SET NLS_SORT='BINARY_CI';
    ALTER SESSION SET NLS_COMP='LINGUISTIC';
    SELECT * FROM TEST1 WHERE K1 = 'abcd';
    or
    SELECT * FROM TEST1 WHERE K1 LIKE 'abcd%';
    CBO use index.
    PLAN_TABLE_OUTPUT
    SQL_ID 4vrmp7cshbvqy, child number 1
    SELECT * FROM TEST1 WHERE K1 LIKE 'abcd%'
    Plan hash value: 1885706448
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | | | 1 (100)| |
    | 1 | TABLE ACCESS BY INDEX ROWID| TEST1 | 2 | 98 | 1 (0)| 00:00:01 |
    |* 2 | INDEX RANGE SCAN | TEST1_IDX | 2 | | 1 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    2 - access("TEST1"."SYS_NC00002$">=HEXTORAW('6162636400') AND
    "TEST1"."SYS_NC00002$"<HEXTORAW('6162636500') )
    but when I run
    SELECT * FROM TEST1 WHERE K1 LIKE :1;
    CBO don't use index
    PLAN_TABLE_OUTPUT
    SQL_ID 9t461s1669gru, child number 0
    SELECT * FROM TEST1 WHERE K1 LIKE :1
    Plan hash value: 4122059633
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | | | 89 (100)| |
    |* 1 | TABLE ACCESS FULL| TEST1 | 2 | 48 | 89 (3)| 00:00:02 |
    Predicate Information (identified by operation id):
    1 - filter("K1" LIKE :1)
    What should I change to force CBO to use index.
    I don't wont use index hint in query.
    My oracle version:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE     11.2.0.1.0     Production
    TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production

    OK. But why if I create normal index (create index test1_idx on test1(K1)) and return to default nls settings this same query use index.
    PLAN_TABLE_OUTPUT
    SQL_ID 9t461s1669gru, child number 0
    SELECT * FROM TEST1 WHERE K1 LIKE :1
    Plan hash value: 598212486
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | | | 1 (100)| |
    |* 1 | INDEX RANGE SCAN| TEST1_IDX | 1 | 18 | 1 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    1 - access("K1" LIKE :1)
    filter("K1" LIKE :1)
    Note
    - dynamic sampling used for this statement (level=2)
    when index is function-base (create index test1_idx on test1(nlssort(K1,'nls_sort=BINARY_CI')))
    PLAN_TABLE_OUTPUT
    SQL_ID 9t461s1669gru, child number 1
    SELECT * FROM TEST1 WHERE K1 LIKE :1
    Plan hash value: 4122059633
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | | | 89 (100)| |
    |* 1 | TABLE ACCESS FULL| TEST1 | 3 | 54 | 89 (3)| 00:00:02 |
    Predicate Information (identified by operation id):
    1 - filter("K1" LIKE :1)
    Note
    - dynamic sampling used for this statement (level=2)
    when I create index with upper function "index test1_idx on test1(upper(K1))" the query use index
    SELECT * FROM TEST1 WHERE upper(K1) LIKE :1
    Plan hash value: 1885706448
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | | | 1 (100)| |
    | 1 | TABLE ACCESS BY INDEX ROWID| TEST1 | 4481 | 157K| 1 (0)| 00:00:01 |
    |* 2 | INDEX RANGE SCAN | TEST1_IDX | 806 | | 1 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    2 - access("TEST1"."SYS_NC00002$" LIKE :1)
    filter("TEST1"."SYS_NC00002$" LIKE :1)
    Note
    - dynamic sampling used for this statement (level=2)

  • TREX on Portal-Server also used for search/index for SAP Records Management

    Hi all,
    can a installation of the TREX on the Portal-Server (or as separate Server) used for Portal Index/search and also in parallel for searching of Content in an SAP Records Management (means full text research of records/ dossier in the SAP RM) ? Some ideas, tips or settings to keep in mind ?
    THX
    mario

    Hi Neil,
    We have exactly the same problem. We installed a new SAP E-Commerce system on Microsoft Windws 2008 R2 with TREX Version 7.10.43.00. The TREX connection is okay. Also the catalogue replication works without any problems. The SAP support means it is a permission problem on the IIS. The problem isnu2019t solved yet and the message to the SAP support is in process.
    What is your effect with this link?
    http://localhost:<TREXNAMESERVER>/TREXHttpServer/
    Default:
    http://localhost:<30305>/TREXHttpServer/
    Kind regards,
    Roland

  • 2 problem with BITMAP JOIN INDEX and access plan

    On my schema ("LSA") I have 3 tables:
    AAB_VENDUTO (~4.200.000 record)
    AAB_ARTICOLO (~8.200 record)
    AAB_CLIENTE (~15.000 record)
    AAB_ARTICOLO.MARCA has 1079 distinct values
    AAB_CLIENTE.TITOLO_STUDIO has 22 distinct values
    I create 2 different bitmap join index:
    CREATE BITMAP INDEX lsa.AAB_V_ARTICOLO_MARCA_IDX ON LSA.AAB_VENDUTO(MARCA)
    FROM LSA.AAB_VENDUTO vv, LSA.AAB_ARTICOLO aa WHERE vv.articolo_id=aa.articolo_id;
    CREATE BITMAP INDEX lsa.AAB_V_CLIENTE_TIT_STUDIO_IDX ON LSA.AAB_VENDUTO(TITOLO_STUDIO)
    FROM LSA.AAB_VENDUTO vv, LSA.AAB_CLIENTE cc WHERE vv.cliente_id=cc.cliente_id;(star_trasformation_enabled is TRUE)
    I run (on SQL Developer 1.5.5) these similar queries:
    SELECT DISTINCT VV.cliente_id FROM LSA.AAB_VENDUTO VV JOIN LSA.AAB_ARTICOLO AA on VV.articolo_id=AA.articolo_id
    WHERE (MARCA='ALGIDA' OR MARCA='SAMMONTANTA');
    SELECT DISTINCT VV.cliente_id FROM LSA.AAB_VENDUTO VV JOIN LSA.AAB_CLIENTE CC  on VV.cliente_id=CC.cliente_id  
    WHERE (titolo_studio='LAUREA BREVE' OR titolo_studio='MAGISTRALE');The first one use correctly the bitmap join index, this is the access plan:
    !http://bitlgs.altervista.org/_altervista_ht/marca.png!
    but the second query...
    !http://bitlgs.altervista.org/_altervista_ht/titolo_studio.png!
    why the second query doesn't use the bitmap index?
    problem #2:
    I create another bitmap index:
    CREATE BITMAP INDEX LSA.AAB_V_CLIENTE_SESSO_IDX ON LSA.AAB_VENDUTO(SESSO)
    FROM LSA.AAB_VENDUTO vv, LSA.AAB_CLIENTE cc WHERE vv.cliente_id=cc.cliente_id;and I run this query:
    SELECT VV.cliente_id, COUNT(*) FROM LSA.AAB_VENDUTO VV JOIN LSA.AAB_CLIENTE CC on VV.cliente_id=CC.cliente_id
    WHERE sesso='Donna' and (titolo_studio='LAUREA BREVE' or titolo_studio='MAGISTRALE') GROUP BY VV.cliente_id;this is the access plan:
    !http://bitlgs.altervista.org/_altervista_ht/terzo.png!
    In my opinion, the part that I have marked as 'A' is superfluous...
    why it make a join with AAB_CLIENTE table? Why it filter again the titolo_studio and sesso field?
    Edited by: Nirpol on 4-set-2009 13.25

    Nirpol wrote:
    I create 2 different bitmap join index:
    CREATE BITMAP INDEX lsa.AAB_V_ARTICOLO_MARCA_IDX ON LSA.AAB_VENDUTO(MARCA)
    FROM LSA.AAB_VENDUTO vv, LSA.AAB_ARTICOLO aa WHERE vv.articolo_id=aa.articolo_id;
    CREATE BITMAP INDEX lsa.AAB_V_CLIENTE_TIT_STUDIO_IDX ON LSA.AAB_VENDUTO(TITOLO_STUDIO)
    FROM LSA.AAB_VENDUTO vv, LSA.AAB_CLIENTE cc WHERE vv.cliente_id=cc.cliente_id;
    What happens if you just create two plain bitmap indexes without the join?
    CREATE BITMAP INDEX lsa.AAB_V_ARTICOLO_MARCA_IDX ON LSA.AAB_VENDUTO(MARCA);
    CREATE BITMAP INDEX lsa.AAB_V_CLIENTE_TIT_STUDIO_IDX ON LSA.AAB_VENDUTO(TITOLO_STUDIO) ;You can also go with normal indexes on the FK rows (cliente_id) and the optimizer can do a bitmap conversion from normal index to bitmap index if needed. Are the column values evenly distributed? If not you might need to go for some column histogram. but I don't have the impression that this is really useful in your case.

  • How to use text based index

    Hi,
    I want to use a text based index. The problem statement was i have to delete all those records which have column
    'ABC%'
    means data can be ABC1, ABC2, ABCl, ABCn
    so i thought i would do like
    delete from tab1
    where col1 like 'ABC%'.
    There are millions of records.
    so i thought of optimizing the Query by using text based index. If my approach is right can you suggest how i can implement it and Is there any other way around?
    Thanks
    _vinod                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Are you saying that simple b tree index would be used in a qurey where i have used LIKE operator? Yes. Not "would" but certainly "could", as long as wildcard is trailing.
    Now whether it "would" depends on whether it's estimated to be the cheapest access path.

Maybe you are looking for

  • Grouping Display Issue

    Post Author: alex.belt CA Forum: General I'm fairly new to Crystal Reports, but after searching around the less than helpful help documentation, the net and this forum, I haven't found an answer to my issue.  I have a report with multiple groups.  Us

  • How to return multipart HTTP response containing image data as well as xml data

    Hi, My web service accepts request as string and returns response as string. Being new to ASP.Net, please clarify my below doubts. a)  How can i provide multipart response of the below format while returning response in string format.. How to impleme

  • N97 Copy & Past missing?

    How can I copy urls from the browser, or past passwords into my wlan configuration? On my N95, there was a dedicated key for copy&past but this key has been stripped by Nokia on the N97. I could live with that, if there would be a key combination equ

  • JBuilder 8 Forms

    In JBuilder 3 I can enter data on a form which is then saved as a .dat file and can be accessed and updated through the form. Linked forms show different data sets. I've tried to do the same in JBuilder 8, but without success. I get the following err

  • Global change of paragraph tags

    I need to change like a hundred heading2s into heading3s, and heading3s into heading4s. I could do a find for each para tag and manually change it to a different heading tag, but I am hoping there is an easier way. Is there a way to select say 50 pag