Using an index that is located on a column in OBIEE expression

Hi all

We have an ORDERS table that has a column on it is called ORDER_TIMESTAMP. On the table at the physical level, there is a hint of TRUNC (ORDER_TIMESTAMP). However, when I select on this ORDER_TIMESTAMP by using a filter, its does not use the index.

How can I use the index on this table? I tried to use the 'Advanced' and 'convert filter SQL.

Can someone advise?

Thank you

In your BMM layer, map the timestamp field command in the source of the logical table to TRUNC (ORDER_TIMESTAMP) against the source table.
Only try.
Rgrds
Alastair

Tags: Business Intelligence

Similar Questions

  • When I try to use the Windows Update link for my XP computer I get a message indicating that the location where the Windows Update stores data has changed and it needs to be repaired. How can I solve this problem?

    When I try to use the Windows Update link for my XP computer and after using Windows Mr. Fix - It, I get a message indicating that the location where the Windows Update stores data has changed and must be repaired. How can I solve this problem?

    I'm not that computer literate and do not understand what needs to be fixed.

    This problem just started a few weeks when I noticed that I had any recent download automatic update that I regularly get. So I tried to do it manually through access via my control panel.

    I use ESET Antivirus Node32 software.

    Hello

    1. What is the error message or an exact error code?

    2 have you made changes on the computer before this problem?

    3. you try to check the updates?

    I would suggest trying the following methods and check if it helps.

    Method 1:

    Reset Windows Update components and then try to download the updates.

    How to reset the Windows Update components?

    http://support.Microsoft.com/kb/971058

    Warning: Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems can occur if you modify the registry incorrectly. Therefore, make sure that you proceed with caution. For added protection, back up the registry before you edit it. Then you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click on the number below to view the article in the Microsoft Knowledge Base: http://support.microsoft.com/kb/322756

     

    Method 2:

    File system scan tool checker and then try to press Ctrl + Alt + Delete and check.

    Description of Windows XP and Windows Server 2003 System File Checker (Sfc.exe):

    http://support.Microsoft.com/kb/310747

    Please respond with more information so that we could help you more.

  • Error message: "Check that the location is a valid Microsoft sharepoint foundation picture library", when you use Picture Manager

    original title: Picture Manager

    I try to use windows picture manager on parallels, but this message: "Verify that the location is a picture library Microsoft sharepoint foundation valid, that the path to the folder is correct, and then try again." How can I fix it to make it work again.

    -all images are jpg images
    -using the Microsoft Office 2010
    -during the parallel execution on a Mac

    Hello

    As you use Windows in a virtual machine on the Mac using Parallels, you will need to check with the help of Parallels.

    http://www.parallels.com/support/home/

  • Creating a batch file. How to open an Excel doc that is located on a network share?

    batch file that can access a file on a network share

    I'm making a batch file that starts several EXE as an excel spreadsheet that is located on a network share.

    exe start perfectly, however when I try to open the excel document, because it is on a network share, windows tells me that the CMD does not support UNC paths use... y at - there a way around this?

    the command I used was:

    CD "\\server\folder.
    Start "excel document.

    The way around this is to map the network folder to a disc and use the drive letter.
    In your case, it would look like this:

    NET use M: \\server\folder / persistent: no
    M:
    Start "excel document.

    When you are finished, you can unmount the drive:

    C:
    NET use M:/delete

    HTH,
    JW

  • File compressed using a codec that is not supported by the player

    I use Director of windows. I can't import audio my cd or i tunes = reason "file compressed using a codec that is not supported by the player", how to fix this? What are the options?

    Thanks for your help.

    Hello

    To check the file type, follow the steps below:

    (a) access the location where the file is stored

    (b) right click on the file

    (c) click Properties in the drop-down list

    (d) under the general tab check the listed file type.

    File types supported by Windows Media Player 12 and Windows Media Center

    http://Windows.Microsoft.com/en-us/Windows-Vista/file-types-supported-by-Windows-Media-Center

    For more information about iTunes contact Apple support in the below given link.

    http://www.Apple.com/support/iTunes/

    Windows Media Player cannot play the file. The player might not support the file type or does not support the codec used to compress the file. You may encounter this error message for the following reasons:

    1. the file type is supported by the drive, but the file was compressed by using a codec that is not supported by the player.

    2. the file might have been encoded with a codec that is not supported by Windows Media Player. If this is the case, Windows Media Player cannot play the file.

    Hope the helps of information. Please post back and we do know.

  • I have only 300 GB, I discovered that 32 of the tokk games up to 3.32 GB. Can I burn it to a DVD and use them like that?

    I have only 300 GB, like I had more but don't know how to do in this regard. I win a lot of Bigfish games, I discovered that 32 of the tokk games up to 3.32 GB. I have more than a hundred of their games I bought so I hate to remove them. Can I burn it to a DVD and use them like that?

    I may be possible. There are several factors that can stop the games run from a DVD.
    A better option for success would be to use a USB stick, but I'll be referring to DVD.
    The kind of games that you download big fish are more likely to be able to run from a DVD a lot of games. The best way to know is to burn on a DVD, but the process will be a little tricky when you burn the game to the DVD it will change the installation path (from C:\ to the drive letter of your DVD eg - E:\).
    You can try the following-
    -Copy the folder of games on DVD

    -Rename the folder the game is installed on the HARD drive. Just add a few letters before the name of the game, for example, Bejeweled to aaa Bejeweled.
    If the experiment fails, simply remove you the extra letters and plays the game.
    (a) - If you do this, you go back to the original name to uninstall the game if you want to later, and the Launcher of Big Fish (or what is called the Big Fish program) may have a problem when you rename the Games folder as well, so don't try to run the game from the Big Fish app to use a shortcut.

    -Make a new shortcut to the games .exe in the folder that you copied to the DVD. and see if the game will be launched from there.
    (a) you must always change the path on the new shortcut if it still reads
    the original location of the game is installed.
    To do this, you change the drive letter in the properties (R\Click on the shortcut)
    in the original example - C:\.  There are two places you need to do this-
    'Target' and ' start in '. If the name of the games is long, it may be easier to copy the
    'Target' in Notepad to reveal the path drive. You can change the path of the reader here and then copy and passed to the 'target' box in the properties of the shortcut.
    Do the same with "start in" if necessary.

    If you have a lot of video or music, then they would be more suitable for playing from a DVD.
    If you are running low on HARD disk space the best option is to install a second drive HARD a 500 GB HARD disk is cheap, better value for money than a USB key and easy to install.  There are many tutorials on the i-net for installation
    a HARD drive.

    .

  • SDO_NN cannot be assessed without using the index when put inside subquery

    Hi all

    I met a problem when you use the function sdo_nn to find the nearest neighbor. Here is my scenario:

    _ I have 2 customer and store tables.

    Customer table _ a client_ID and a 2D sdo_geom point

    _ Store table has store_ID and a 2D polygon sdo_geom.

    In the beginning, I have this query to find the nearest store to each customer as below:

    Select s.STORE_ID, c.CLIENT_ID

    store customer, s c

    where sdo_nn (s.MYPOLYGON, c.MYPOINT, 'sdo_num_res = 1', 1) = "TRUE";

    _It works as expected when it returns a table showing the nearest store each customer.

    _Now I want to count the number of customers who have the same nearest store:

    Select / * + INDEX (store store_spatial_idx, client_spatial_idx client) * / count (nearest_store. CLIENT_ID)
    from (select s.STORE_ID, c.CLIENT_ID
    store customer, s c
    where sdo_nn (s.MYPOLYGON, c.MYPOINT, 'sdo_num_res = 1', 1) = "TRUE") nearest_store
    Group of nearest_store. STORE_ID;

    This query generates the following error:

    Error report-
    SQL error: ORA-13249: SDO_NN cannot be assessed without using the index
    ORA-06512: at the 'MDSYS. MD", line 1723
    ORA-06512: at the 'MDSYS. MDERR", line 17
    ORA-06512: at the 'MDSYS. PRVT_IDX', line 9
    13249 00000 - '%s '.

    I'm pretty new to spatial databases and hope get help to go further. Thank you in advance!

    Hello Pinball,

    Oracle space tends to be a quite complex with many variables and moving parts.  We chatted about the group to a sort of FAQ or guidelines to help people like you submit questions that actually answers.  First of all, you really have to tell us the version of Oracle you are using.  Particularly the problems involving the optimizer, version down to the exact defined patch number is a good idea.  Secondly, you took the time to submit the question so I guess you want a response.  If you really want to see the answer and then providing an example is one of the most important things that you can do.  I'm going to do here for you, but in general people on this forum come and go and are often pushed into lurkitude, so if you want the coax to provide you with an example of work is the key.

    DROP TABLE store1 PURGE;
    CREATE TABLE store1(
        store_id INTEGER NOT NULL
       ,shape    MDSYS.SDO_GEOMETRY
       ,PRIMARY KEY(store_id)
    );
    
    DROP TABLE client2 PURGE;
    CREATE TABLE client2(
        client_id INTEGER NOT NULL
       ,shape    MDSYS.SDO_GEOMETRY
       ,PRIMARY KEY(client_id)
    );
    
    CREATE OR REPLACE PROCEDURE seeder(
        p_client_count IN NUMBER
       ,p_store_count IN NUMBER
    )
    AS
      sdo_foo MDSYS.SDO_GEOMETRY;
      int_counter NUMBER;
      FUNCTION random_point
      RETURN MDSYS.SDO_GEOMETRY
      AS
          num_x1 NUMBER;
          num_y1 NUMBER;
    
      BEGIN
          num_x1 := dbms_random.value(-179,179);
          num_y1 := dbms_random.value(-89,89);
    
          RETURN MDSYS.SDO_GEOMETRY(
              2001
             ,8265
             ,MDSYS.SDO_POINT_TYPE(
                  num_x1
                 ,num_y1
                 ,NULL
              )
             ,NULL
             ,NULL
          );
    
      END random_point;
    
    BEGIN
      int_counter := 1;
      FOR i IN 1 .. p_client_count
      LOOP
          -- Create a client point
          sdo_foo := random_point();
          INSERT INTO client2
          VALUES (
              int_counter
             ,sdo_foo
          );
          int_counter := int_counter + 1;
    
      END LOOP;
    
      int_counter := 1;
      FOR i IN 1 .. p_store_count
      LOOP
          -- Create a store polygon of some kind
          sdo_foo := MDSYS.SDO_GEOM.SDO_ARC_DENSIFY(
              MDSYS.SDO_GEOM.SDO_BUFFER(
                  random_point()
                 ,5000
                 ,0.05
              )
             ,0.05
             ,'arc_tolerance=0.05'
          );
          INSERT INTO store1
          VALUES (
              int_counter
             ,sdo_foo
          );
          int_counter := int_counter + 1;
    
      END LOOP;
    
      COMMIT;
    
    END seeder;
    /
    
    BEGIN
      seeder(10000,200);
    END;
    /
    
    BEGIN
      INSERT INTO user_sdo_geom_metadata(
          table_name
         ,column_name
         ,diminfo
         ,srid
      ) VALUES (
          'STORE1'
         ,'SHAPE'
         ,MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,.05),MDSYS.SDO_DIM_ELEMENT('Y',-90,90,.05))
         ,8265
      );
    
      COMMIT;
    
    EXCEPTION
      WHEN OTHERS
      THEN
          NULL;
    
    END;
    /
    
    BEGIN
      INSERT INTO user_sdo_geom_metadata(
          table_name
         ,column_name
         ,diminfo
         ,srid
      ) VALUES (
          'CLIENT2'
         ,'SHAPE'
         ,MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,.05),MDSYS.SDO_DIM_ELEMENT('Y',-90,90,.05))
         ,8265
      );
    
      COMMIT;
    
    EXCEPTION
      WHEN OTHERS
      THEN
         NULL;
    
    END;
    /
    
    CREATE INDEX store1_spx ON store1
    (shape)
    INDEXTYPE IS MDSYS.SPATIAL_INDEX
    NOPARALLEL;
    
    CREATE INDEX client2_spx ON client2
    (shape)
    INDEXTYPE IS MDSYS.SPATIAL_INDEX
    NOPARALLEL;
    
    /* Works as expected */
    SELECT
    s.store_id
    ,c.client_id
    ,MDSYS.SDO_NN_DISTANCE(1)
    FROM
    store1 s
    ,client2 c
    WHERE
    MDSYS.SDO_NN(
        s.shape
       ,c.shape
       ,'sdo_num_res=1'
       ,1
    ) = 'TRUE';
    
    /* No worky? Works for me */
    SELECT
    ns.store_id
    ,COUNT(ns.client_id)
    FROM (
       SELECT
        s.store_id
       ,c.client_id
       FROM
        store1 s
       ,client2 c
       WHERE
       MDSYS.SDO_NN(
           s.shape
          ,c.shape
          ,'sdo_num_res=1'
          ,1
       ) = 'TRUE'
    ) ns
    GROUP BY
    ns.store_id
    ORDER BY
    ns.store_id;
    

    So I wrote this about 12 c (12.1.0.2.0) and everything works fine for me.  Then I moved back from 11 GR 2 (11.2.0.4.0) and of course, there are questions.  So I guess that you don't use flavor of 11g.  So at this point we can look at the docs and see for 11g, have you often need to specify which table is the head and that is the one that has the spatial index to use.
    http://docs.Oracle.com/CD/E11882_01/AppDev.112/e11830/sdo_operat.htm#SPATL1032

    Its rather interesting that the optimizer of 12 c knows what you want, when I had to squint myself at your request and to play a little with the refining.  Note that SDO_NN is sensitive, because the geometry of the main table should come second in the operator.  I did not know that on the top of my head.

    
    SELECT
    /*+ LEADING(c) INDEX(s store1_spx)  */
     s.store_id
    ,c.client_id
    ,MDSYS.SDO_NN_DISTANCE(1)
    FROM
     store1 s
    ,client2 c
    WHERE
    MDSYS.SDO_NN(
        s.shape
       ,c.shape
       ,'sdo_num_res=1'
       ,1
    ) = 'TRUE';
    
    SELECT
     ns.store_id
    ,COUNT(ns.client_id)
    FROM (
       SELECT
       /*+ LEADING(c) INDEX(s store1_spx)  */
        s.store_id
       ,c.client_id
       ,MDSYS.SDO_NN_DISTANCE(1)
       FROM
        store1 s
       ,client2 c
       WHERE
       MDSYS.SDO_NN(
           s.shape
          ,c.shape
          ,'sdo_num_res=1'
          ,1
       ) = 'TRUE'
    ) ns
    GROUP BY
    ns.store_id
    ORDER BY
    ns.store_id;
    

    So I think that is your answer.  Give it a shot and see if this fits the Bill.  Of course, moving to 12 c would be useful for such things.  It would be interesting to collect more examples of this kind of space thing where 12 c is the answer. Also, would be nice if we could mark somehow this discussion as applying only to 11g and earlier versions.

    See you soon,.

    Paul

  • Is it possible for an index that includes the condition 'GOLD '?

    Hello, I have a few questions.

    The test was conducted in the following procedure.

    ################################
    create table test
    (
    VARCHAR2 (10) C1.
    C2 varchar2 (10),
    key (c1) elementary school

    );

    create index test_idx1 on test (c2);

    Command > explain select * test where c1 = 'JOHN' or c2 = "JOHN";

    Query optimizer plan:

    STEP: 1
    LEVEL: 1
    OPERATION: RowLkRangeScan
    TABLENAME: TEST
    IXNAME: TEST
    CONDITION INDEX: < NULL >
    NOT INDEXED: TEST. C2 = 'JOHN' OR TEST. C1 = 'LUCY '.

    Command >


    Command > explain select * test where c1 = 'LUCY' and c2 = "ABDELLAH.

    Query optimizer plan:

    STEP: 1
    LEVEL: 1
    OPERATION: RowLkRangeScan
    TABLENAME: TEST
    IXNAME: TEST
    INDEXED CONDITION: TEST. C1 = 'ABDELLAH.
    NOT INDEXED: TEST. C2 = "ABDELLAH.

    Command >
    ################################

    By adding the status of "GOLD" in this test does not use the index.

    Is it possible for an index that includes the condition 'GOLD '?

    Thank you.

    GooGyum.

    A database can generally use indexes in this way for one 'or' with two different columns. However, for this example specific can easily rewrite the query using 'UNION' to use the relevant hints while still giving the same result (correct):

    Command > explain select * from t1 test where t1.c1 = 'LUCY' union select * test t2 where t2.c2 = "JOHN";

    Query optimizer plan:

    STEP: 1

    LEVEL: 1

    OPERATION: RowLkRangeScan

    TABLENAME: TEST

    IXNAME: TEST

    INDEXED CONDITION: T1. C1 = 'ABDELLAH.

    NOT INDEXED:

    STEP: 2

    LEVEL: 2

    OPERATION: RowLkRangeScan

    TABLENAME: TEST

    IXNAME: TEST_IDX2

    INDEXED CONDITION: T2. C2 = "ABDELLAH.

    NOT INDEXED:

    STEP: 3

    LEVEL: 1

    OPERATION: OrderBy

    TABLE_NAME:

    IXNAME:

    INDEXED CONDITION:

    NOT INDEXED:

    STEP: 4

    LEVEL: 2

    OPERATION: UnionMergeSort

    TABLE_NAME:

    IXNAME:

    INDEXED CONDITION:

    NOT INDEXED:

    Maybe you can apply something similar? If you know that there is no possibility of duplicate lines then you can optimize it (in terms of performance) by using UNION all.

    Chris

  • Order columns (which make up the primary key constraint) matter in where clause of DML query for use of indexing mechanism to operate.

    Version of DB: database Oracle 11 g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production


    I have a table my_table as below:
    create table my_table
    (
    my_code varchar2 (6).
    my_id varchar2 (24).
    forced pk_1 primary key (my_code, my_id)
    );


    Primary_key here's a composite key that contains columns 1 (my_code) and 2 (my_id).
    Is there that a difference in the way below queries is executed in terms of performance (use of indexing in the extraction).

    (a) select * from my_table where my_code = '123' and my_id = "456";
    (b) select * from my_table where my_id = '456' and my_code = '123';


    The understanding I have the order of the column in the where clause should be identical to the sequence in
    What primary key draws for indexing to be used by oracle in oracle other DML queries ignores indexing
    However when I used explain plain both show the same query cost with single scan with index rowid.
    so I don't know if I'm wrong in the concept that I have. Kindly help.

    Thanks in advance,
    Gerard

    Your question is answered in the Performance Tuning Guide

    Using indexes and clusters

    14.1.4 choosing composite indexes

    A composite index contains several key columns. Composite indexes can provide additional benefits compared to the index to single column:

    • Improved selectivity

      Sometimes the two or more columns or expressions, each with a low selectivity can be combined to form a composite with a high selectivity.

    • Reduced IO

      If all columns selected by a query are a composite index, then Oracle may return these values in the index without access to the table.

    A SQL statement can use a path on a composite index if the statement contains constructions that use a main part of the index.

    Note:

    This is no longer the case with the skip index scans. See "Index Skip Scans".

    A main part of an index is a set of one or more columns that have been specified first and consecutively in the list of columns in the CREATE INDEX statement that created the index.

  • How can I create a link to an image that is located on an ftp site to a Web page that is located on another.

    How can I create a link to an image that is located on an ftp site to a Web page that is located on another.

    I managed to do it with the full path of the link (file:///C|/Users/myname/Documents/familyK3/image1.jpg), but as it is quite long, I would use the relative path. To be clear, I have 1 site that spans 3 different storage locations for FTP. site1 (named familyK), that contains the page. On this page, I have an image that is in the images on training3 (named familyK3). I tried... / familyK3/images and... /... (/ familyK3/images, but I don't get to see the photo in DW (since it usually refers to an image in the same folder (root)) and not to another location).

    I use dreamweaver8.

    Stephaan

    Use an absolute URL in the field of the CBC to your properties panel.

    http://your_other_site.com/images/filename.jpg"alt ="description">

    Nancy O.

  • What is the right time to use the index with force?

    I have an EMPLOYEE table.  I join with the ROLE, and it has only about 200 distinct values on column EMPLOYEE. EMPLOYEE_TYPE_ID.

    Select / * + INDEX (an i_employee_type_id) * / b.SID as EMP_NAME, b.role_cd in the ROLE

    Of

    EMPLOYEE,

    B ROLE

    where

    a.EMPLOYEE_TYPE_ID = b.EMPLOYEE_TYPE_ID

    AND a.EFFECTIVE_END_TS > = systimestamp;

    Is it a good idea to use the index?  .. Or let the full table scan.

    SQL > select distinct EMPLOYEE_TYPE_ID of the EMPLOYEE;

    238 selected lines.

    If you don't know it will help not to use.

    Personally, I found several SQLs with index finger tips (written by programmers thinking index access is ALWAYS GOOD) end up harming performance. Oracle made a reading diluvium full table scan, single index reads as follows, according to the % of the returned array it is actually faster to do a full table scan. The optimizer did a great job to determine this.

    If you think there are cardinality estimation problems, and the optimizer expects a large number of lines when there are actually few being returned, in THIS case a suspicion was justified. Even so, in this case, I prefer that oracle manages the flag itself.

    You can do this by running the SQL tuning advisor. In fact, it will trigger the optimizer checks that the estimates are turned off and it will create a profile for you. (A profile is actually a stored set of advice that set the execution plan for you). If at the point where the underlying data changes significantly and profile ends up hurting performance, you do not need to touch the code like you would with manually added notes, you can just disable or delete the profile and let the optimizer re - analyze the statement.

    Concerning

    EDIT: In case of small tables, it is preferable to just cache the whole table in the POOL to KEEP and let oracle scan if necessary.

    Edit2: With the notable exception of index fast full scans, which are diluvium index readings. But they are only relevant when the request is quite satisfied by the index and has no need to visit the table.

  • SDO_NN giving ORA-13249: SDO_NN cannot be assessed without using the index

    Hi people,

    I do not understand why the SDO_NN gives ORA-13249 in circumstances.

    SQL > SELECT SlavaTest WHERE SDO_NN s s.title (s.geometry, SDO_GEOMETRY (2001, 4326, SDO_POINT (14.0, 49.0, NULL), null, null)) = 'TRUE' and title like '%' and rownum < 10;

    TITLE
    --------------------------------------------------------------------------------
    MultiPoint_305199
    LineString_691779
    MultiPolygon_180478
    MultiPolygon_358113
    MultiPolygon_53008
    MultiPolygon_249905
    MultiPolygon_204076
    MultiPolygon_636994
    MultiPoint_464514

    9 selected lines.

    SQL > SELECT SlavaTest WHERE SDO_NN s s.title (s.geometry, SDO_GEOMETRY (2001, 4326, SDO_POINT (14.0, 49.0, NULL), null, null)) = 'TRUE' and timestamp > = to_timestamp (January 6, 2011 ', ' dd/mm/yyyy') and rownum < 10;
    SELECT SlavaTest WHERE SDO_NN s s.title (s.geometry, SDO_GEOMETRY (2001, 4326, SDO_POINT (14.0, 49.0, NULL), null, null)) = 'TRUE' and timestamp > = to_timestamp (January 6, 2011 ', ' dd/mm/yyyy') and rownum < 10
    *
    ERROR on line 1:
    ORA-13249: SDO_NN cannot be assessed without using the index
    ORA-06512: at the 'MDSYS. MD", line 1723
    ORA-06512: at the 'MDSYS. MDERR", line 17
    ORA-06512: at the 'MDSYS. PRVT_IDX', line 49

    The spatial index is created with:
    CREATE the INDEX SlavaTest_geometry_idx_spatial ON SlavaTest (geometry) INDEXTYPE IS mdsys.spatial_index;

    'Title' and 'timestamp' columns have an index.

    Note the query comes from Hibernate and I can't change it's arbitrary.

    Slava2 wrote:
    What this means - there is a bug in Oracle?

    Well, it could probably be considered a, but [url http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_operat.htm#i78067] documentation on SDO_NN warns you:

    Documentation says:
    However, if the column in the WHERE clause predicate specifies a non-space column in the table for geometry1 with an associated index, make sure that this index is not used by specifying the NO_INDEX indicator for this index.

    See you soon,.
    Stefan

  • Use of indexes is not recorded in v$ object_usage...

    Hi all

    A few days ago, I posted a question to see if table scans / index deemed "used" index followed its use.

    Now I have a bit of the opposite question: I can't seem to get clues to "confess" v$ object_usage they been used!

    I tried this on two systems: a quarter-rack race Exadata V1 11.2.0.2 BP7 and a 11.2.0.3 (vanilla) running on AIX 5.3

    I can't make it work on either, despite the fact that I have activated it for 900 non-unique index on the Exadata machine and 300 on the AIX 5.3 database. The two are producing, so I expect high activity levels.

    That's what I did. Maybe I did something wrong. Surely that I did.

    The control of its use on the index WE - I did yesterday
    ALTER INDEX schema1.decentsizedtab_nu-idx1 MONITORING USAGE;
    Find the name of owner or table on which the index is based. When I run the present, nothing crazy is returned. It is a unique, valid, index that has not been analyzed since June 2010. It is NOT partitioned, NOT temporary and NOT invisible. Segments were created for the index.
    SELECT owner, index_name, index_type, table_owner, table_name, table_type, uniqueness, status, last_analyzed, partitioned, temporary, global_stats, visibility, segment_created
    FROM dba_indexes
    WHERE owner = 'SCHEMA1'
    AND index_name = 'DECENTSIZEDTAB_NU-IDX1';
    Determine the columns in dba_ind_columns
    SELECT index_owner, index_name, column_name, column_position
    FROM dba_ind_columns
    WHERE index_owner = 'SCHEMA1'
    AND index_name = 'DECENTSIZEDTAB_NU-IDX1';
    
    SCHEMA1 DECENTSIZEDTAB_NU-IDX1  COL_1               1
    SCHEMA1 DECENTSIZEDTAB_NU-IDX1  COL_2               2
    SCHEMA1 DECENTSIZEDTAB_NU-IDX1  COL_3               3
    SCHEMA1 DECENTSIZEDTAB_NU-IDX1  COL_4               4
    So you would think that would use the index, especially if I give this move a bit to use it...
    EXPLAIN PLAN FOR
    SELECT /*+ INDEX (schema1.decentsizedtab_nu-idx1)*/ col_1, col_2, col_3, col_4
    FROM schema1.decentsizedtab;
    The plan of the explain command shows that we use the DECENTSIZEDTAB_NU-IDX1 index.
    SELECT * FROM table(DBMS_XPLAN.DISPLAY);
    
    Plan hash value: 1798057294
    --------------------------------------------------------------------------------------------
    | Id  | Operation                    | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT             |             |   145K|  2138K|    97   (2)| 00:00:02 |
    |   1 |  INDEX STORAGE FAST FULL SCAN| DECENTSIZEDTAB_NU-IDX1|   145K|  2138K|    97   (2)| 00:00:02 |
    --------------------------------------------------------------------------------------------
    OK, so we're going to execute the statement and see if the index is used...
    SELECT /*+ INDEX (schema1.decentsizedtab_nu-idx1)*/ col_1, col_2, col_3, col_4
    FROM schema1.decentsizedtab;
    
         145721 rows selected.
    Once this is completed, we will check the object_usage view $ v to see if it has registered using the index
    SELECT * 
    FROM v$object_usage;
    
    No rows returned.
    LOL. Nope. Bitch index tracking! *

    I have not considered the fact that exadata was involved (unloading, etc.) to perform this operation somehow, but as I said, I tried this with an Oracle database restart a single instance and I see the same thing.

    Thoughts? Ideas? Critical? Personal insults?

    Mark

    marksmithusa wrote:
    I noticed that MOS Note 261756.1 gives to think you have to be connected to the schema owner to display the results.

    It is a real pain because I have 50-60 patterns in the Exadata database AND I am logged in as SYSDBA - surely, I should be able to see everything in v$ object_usage?

    Here is the definition of v$ object_usage

    select io.name, t.name,
           decode(bitand(i.flags, 65536), 0, 'NO', 'YES'),
           decode(bitand(ou.flags, 1), 0, 'NO', 'YES'),
           ou.start_monitoring,
           ou.end_monitoring
    from sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou
    where io.owner# = userenv('SCHEMAID')
      and i.obj# = ou.obj#
      and io.obj# = ou.obj#
      and t.obj# = i.bo#
    

    The predicate: io.owner # = userenv ('SCHEMAID') is that which limits the output to the current user.
    If you can connect with a login adapted, you could create another view that eliminates this predicate, perhaps adding to the selection in the io.owner list #, or even join user$ on io.owner # u.user = #, for example

    select u.name, io.name, t.name,
           decode(bitand(i.flags, 65536), 0, 'NO', 'YES'),
           decode(bitand(ou.flags, 1), 0, 'NO', 'YES'),
           ou.start_monitoring,
           ou.end_monitoring
    from sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou, sys.user$ u
    where i.obj# = ou.obj#
      and io.obj# = ou.obj#
      and t.obj# = i.bo#
      and u.user# =  io.owner#
    ;
    

    Concerning
    Jonathan Lewis

  • SELECT on a table in the INSERT statement uses the INDEX

    Hello world

    I have a strange problem with EA Oracle 10 g (64-bit) running on a Linux system. The situation is, I developed a Java program to migrate one client system to another. One of the steps in the migration fills a new table with the data from the old system. Given that the data on the old system structure is fundamentally different from that new, I have to check each time I read a line from the old system, if I have already created an entity on the new table, and if so, update certain attributes. The WHERE clause of this audit uses a key of the company indexed on the new table. The problem is now, that Oracle does not use the index on the key attribute of the company, but it makes table scans complete to select the line. As you can imagine, the lines first thousand or so go fast, but the amount increases, the program becomes slower and slower.

    If I do a "scan" when executing the migration program, Oracle change the execution plan and use the index on the attribute key and everything works fast and smooth. However, if I do the analysis on the empty table first, nothing changes (which I understand it perfectly, since there is nothing to analyze, at this point). By integrating a hint of 'INDEX' (table) in the statement SELECT does not change the full implementation plan (also table scans).

    Is it possible to change this behavior, in order to SELECT it uses the index of key business from the beginning?

    Greetings from Cologne,

    Thorsten.

    Published by: thkitz on 13.03.2012 18:27

    thkitz wrote:

    SELECT STATEMENT  ALL_ROWSCost: 2  Bytes: 76  Cardinality: 2
         7 TABLE ACCESS BY INDEX ROWID TABLE AIDATINT.PRVVSSCHADENKORRESPONDENZ Cost: 2  Bytes: 76  Cardinality: 2
              6 BITMAP CONVERSION TO ROWIDS
                   5 BITMAP OR
                        2 BITMAP CONVERSION FROM ROWIDS
                             1 INDEX RANGE SCAN INDEX AIDATINT.I_PRVVSSCHADENKORRESPONDENZ_1 Cost: 1
                        4 BITMAP CONVERSION FROM ROWIDS
                             3 INDEX RANGE SCAN INDEX AIDATINT.I_PRVVSSCHADENKORRESPONDENZ_2 Cost: 1  
    

    I would have thought that as a plan as possible. It is not a concatenation, is a btree/bitmap conversion.
    Allude to this plan you need / * + index_combine (table_alias index1 index2) * /.
    For 10g and later the index can be specified by name or by description

    I'm a bit puzzled why the plan changes after truncate - but maybe my comment about not cleared statistics is no longer true. It is easy enough to check if I'm right or wrong on your version of Oracle.

    Concerning
    Jonathan Lewis
    http://jonathanlewis.WordPress.com
    Author: core Oracle

  • query not using the index for some user

    Hello

    I have a query that is running in less than a second for sys, system, or schema owner. However, another user (test_user) take 30 seconds to run the same query.

    I certainly dba and privileges identical to test_user as schmea_user, but the result is the same.

    I checked

    Select * from V$ SYS_OPTIMIZER_ENV;

    Both are the same for both users.

    I have check the plan to explain to both users. I noticed that for sys/system/schema_owner, the query uses an index, but not the test_user.

    All have experience the issue where a user uses an index, but not the other?

    Thank you for any assistance.

    Thank you for the display of formatting output, this output is much easier to read.

    One of the first things you notice about the execution plans that is for the owner non-schema "SQL_ID, 0wcs85uywn72m, number of children 1" appears in the output of DBMS_XPLAN, while "SQL_ID 0wcs85uywn72m, child number 0" (the same SQL_ID but a different number of child) appears for the schema owner. "" Whereas the SQL_ID is the same, which indicates that the client requires exactly the same SQL statement, so it's a good start.

    Then, note that in the predicate for the nonschema owner information section the following appears (sometimes with the order of the two conditions switched in position) as a condition placed on each table that is available in the schema:

    filter(("SEAL_FLAG" IS NULL OR "SEAL_FLAG"'Y'))
    

    The above suggests the presence of the virtual private database (or a superset of private database virtual) generated the predicates. You should be able to confirm that this is the case by querying V$ VPD_POLICY using the SQL_ID which was displayed in the DBMS_XPLAN output:

    SELECT
      *
    FROM
      V$VPD_POLICY
    WHERE
      SQL_ID='0wcs85uywn72m';
    

    As a test, I made a few minor adjustments to the example on this page:
    http://Antognini.ch/2011/09/optimizer_secure_view_merging-and-VPD/
    I changed the name of T to T12 and TESTUSER table specified for the schema names. I then created the function S of this page as follows:

    CREATE OR REPLACE FUNCTION s (schema IN VARCHAR2, tab IN VARCHAR2) RETURN VARCHAR2 AS
    BEGIN
      RETURN 'ID < 10';
    END;
    /
    

    I then added a couple of lines in the T12 test table:

    INSERT INTO T12 VALUES (1,1,NULL);
    INSERT INTO T12 VALUES (4,1,NULL);
    INSERT INTO T12 VALUES (10,1,NULL);
    INSERT INTO T12 VALUES (12,1,NULL);
    
    COMMIT;
    

    With an active 10053 trace, I executed the following SQL statement:

    SELECT id, pad
      FROM t12
      WHERE
      spy(id, pad) = 1
    

    The SQL_ID (in my case, found in the 10053 trace file) was 6hqw5p9d8g8wf, so I checked V$ VPD_POLICY to this SQL_ID:

    SELECT
      *
    FROM
      V$VPD_POLICY
    WHERE
      SQL_ID='6hqw5p9d8g8wf';
    
    ADDRESS          PARADDR            SQL_HASH SQL_ID        CHILD_NUMBER OBJECT_OWNER OBJECT_NAME                    POLICY_GROUP                   POLICY                 POLICY_FUNCTION_OWNER          PREDICATE
    ---------------- ---------------- ---------- ------------- ------------ ------------ ------------------------------ ------------------------------ ---------------------- ------------------------------ ------------------------------------------------------------------------------------
    000007FFB7701608 000007FFB7743350 1518838670 6hqw5p9d8g8wf            0 TESTUSER     T12                            SYS_DEFAULT                    T_SEC                  TESTUSER                       ID < 10
    

    As noted above, the VPD test function named S added the predicate "ID".< 10"="" to="" the="" sql="">

    There are not many clues in the 10053 trace file in my test VPD generated additional predicates. Trace the following was found shortly after the beginning of the file (this is the SQL statement initially presented):

    ----- Current SQL Statement for this session (sql_id=6hqw5p9d8g8wf) -----
    SELECT id, pad
      FROM t12
      WHERE
      spy(id, pad) = 1
    

    I searched then down in the trace for final after changes query file (to be noted that this sentence could be slightly different in different versions of database Oracle). That's what I found:

    Final query after transformations: ******* UNPARSED QUERY IS *******
    SELECT "T12"."ID" "ID","T12"."PAD" "PAD" FROM "TESTUSER"."T12" "T12" WHERE "TESTUSER"."SPY"("T12"."ID","T12"."PAD")=1 AND "T12"."ID"<10
    kkoqbc: optimizing query block SEL$F5BB74E1 (#0)
    

    Note that the final query after transformation shows how the final version of the query that has been rewritten by the query optimizer before the SQL statement has been executed and this version of the query includes AND "T12". "" IDENTITY CARD ".<10. if="" i="" was="" attempting="" to="" determine="" how="" that=""><10 predicate="" was="" added="" to="" the="" sql="" statement,="" i="" would="" start="" at="" the="" "current="" sql="" statement="" for"="" line="" in="" the="" trace="" file="" and="" search="" down="" the="" trace="" file="" for=""><10* -="" in="" this="" case,="" the="" following="" is="" what="" i="" found="" as="" the="" first="" search="" result,="" very="" close="" to="" the="" "current="" sql="" statement="" for"="" line="" in="" the="" trace="">

    **************************
    Predicate Move-Around (PM)
    **************************
    PM:     PM bypassed: Outer query contains no views.
    PM:     PM bypassed: Outer query contains no views.
    query block SEL$F5BB74E1 (#0) unchanged
    FPD: Considering simple filter push in query block SEL$F5BB74E1 (#0)
    "TESTUSER"."SPY"("T12"."ID","T12"."PAD")=1 AND "T12"."ID"<10
    try to generate transitive predicate from check constraints for query block SEL$F5BB74E1 (#0)
    finally: "TESTUSER"."SPY"("T12"."ID","T12"."PAD")=1 AND "T12"."ID"<10
    

    As can be seen from the above (because the predicate again appeared before and after the line containing the word "Finally: '), the AND"T12 ". "" IDENTITY CARD ".<10 predicate="" was="" already="" added="" to="" the="" original="" sql="" statement="" by="" the="" time="" the="" predicate="" move-around="" section="" of="" the="" trace="" file="" was="" written,="" and="" that="" is="" the="" first="" mention="" of=""><10 in="" the="" trace="" file.="" in="" your="" case,="" you="" would="" search="" the="" 10053="" trace="" file="">

    "SEAL_FLAG" IS NULL
    

    If V$ VPD_POLICY revealed that there are virtual private database (VPD) generated predicates applied to the SQL statement, take a look at the following article in the Oracle documentation library:
    http://docs.Oracle.com/CD/B28359_01/network.111/B28531/VPD.htm

    This article lists the different points of view, who can be interviewed to learn more about the VPD rules which are in force in the schema. For example, with my SPV test:

    SELECT
      *
    FROM
      ALL_POLICIES;
    
    OBJECT_OWNER                   OBJECT_NAME                    POLICY_GROUP                  POLICY_NAME                    PF_OWNER                       PACKAGE                       FUNCTION                       SEL INS UPD DEL IDX CHK ENA STA POLICY_TYPE              LON
    ------------------------------ ------------------------------ ----------------------------- ------------------------------ ------------------------------ ----------------------------- ------------------------------ --- --- --- --- --- --- --- --- ------------------------ ---
    TESTUSER                       T12                            SYS_DEFAULT                   T_SEC                          TESTUSER                       S                                                            YES YES YES YES NO  NO  YES NO  DYNAMIC                  NO
    

    He knows performance issues related to the use of VPD, some of which are Oracle Database version-dependent, and some have been fixed in recent versions. Take a look at the following articles if you have access to My Oracle Support:
    MetaLink (MOS) Doc ID 728292.1 ' known performance problems when you use transparent encryption data and indexes on the encrypted columns.
    MetaLink (MOS) Doc ID 967042.1 "How to investigate Query Performance regressions Caused by VPD (FGAC) predicates?"

    You might find working through the second of the above that the problem is caused by a bug in database Oracle.

    On a side note. Execution plans you have published include the 0 value in the column starts many of the operations in the execution plan. 0 indicates that the operation never actually executed. A 0 is included in the column starts on the line that includes the FULL ACCESS of TABLE of PEOPLE_TRANSACTIONS at least to the OPC. Value 123, a full table of PEOPLE_TRANSACTIONS table scan PROPERTY_CONTAINER_ID was not actually performed.

    Charles Hooper
    http://hoopercharles.WordPress.com/
    IT Manager/Oracle DBA
    K & M-making Machine, Inc.

Maybe you are looking for

  • Adobe Photoshop Elements 14 will not install on new MacBook Pro

    Apparently, 14 PS elements is not compatible with OS X El Capitan. Everyone knows this? Older versions of components are also incompatible? I need this on my laptop... really disappointed that I can't install it. Thanks in advance.

  • App messages cannot display messages

    My Messages app on my MacBook Air suddenly stopped showing new messages. Old conversations show, but they have not been updated since a week ago. When I receive a new message, the "new message" icon appears to the left of the dock, but the message sh

  • Satellite Pro M30 - download drivers?

    Hello world I hope someone is able to help me: I tried to find the drivers for my laptop on this site here, given that my original CD with the top drivers is lost. I was able to get to the section pilots where I entered the serial number of my laptop

  • Satellite M70: What DVD supermulti drive model?

    HelloAnyone who has satellite M70 series please tell me, what is the model number of his dvd supermulti player?(for example: carpet * a dvd - ram uj-830 s!) thnx

  • IAM having problems reading my email (hotmail)

    I've been looking at different sites on the net and when I go back to my hotmail site to read my mail it just won read the particular mail