creating index Impdp and parallel

This can be a very basic question for most of you, but...

Can someone explain that under with parallel impdp = n will lead to creating treats 1 index both with n PX (suppose I have n dump files)? Or it will create index n at the same time each process n PX? Issue DDL (1 parallel) parallel impdp = n option should not be indexed?

How the result is different if I have only 1 file dump? Impdp will use n processes to read the dump file 1?

I want to talk about 11 GR 2 EA.

Indexes are created in series, but built using parallel slaves.

Let's say you have foo index that was created like this

create indexes on foo_tab foo (a) parallel 1;

If you have run with parallel impdp = 5 Data Pump will do this:

create indexes on foo_tab foo (a) parallel 5;
ALTER index foo parallel 1

Thus, the index will be created using parallel slaves until 5. When the build is finished, the parallel value is reset to the original value.

Dean

Tags: Database

Similar Questions

  • Events of waiting "log file parallel write" / "log file sync", in CREATE INDEX

    Hello guys,.
    my current project I'm running a few tests of performance for oracle data guard. The question is "How LGWR SYNC transfer influence the performance of the system?"
    For the performance of the values, that I can compare I just built a normal oracle database in the first step.

    Now I perform various tests such as creating index 'broad', massive parallel inserts/validations, etc to get the marks.

    My database is an oracle 10.2.0.4 with multiplexed on AIX log files.

    I create an index on a table of "normal"... I have run "dbms_workload_repository.create_snapshot ()" before and after the CREATE INDEX for an equivalent period for the AWR report.
    Once the index is built (round about 9 GB), I made an awrrpt.sql for the AWR report.

    And now take a look at these values of the AWR
                                                                       Avg
                                                 %Time  Total Wait    wait     Waits
    Event                                 Waits  -outs    Time (s)    (ms)      /txn
    ---------------------------- -------------- ------ ----------- ------- ---------
    ......
    ......
    log file parallel write              10,019     .0         132      13      33.5
    log file sync                           293     .7           4      15       1.0
    ......
    ......
    How can it be possible?

    With regard to the documentation

    -> synchronization of log file: http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/waitevents003.htm#sthref3120
    Wait Time: The wait time includes the writing of the log buffer and the post.
    -> log file parallel write: http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/waitevents003.htm#sthref3104
    Wait Time: Time it takes for the I/Os to complete. Even though redo records are written in parallel, the parallel write is not complete until the last I/O is on disk.
    This was also my understanding... "log file sync" wait time should be higher than the 'parallel log writing' timeout, because of, it includes the e/s and the response time for the user's session.
    I could accept it, if the values are near each other (perhaps around 1 second about altogether)... but the difference between 132 and 4 seconds is too visible.

    Is the behavior of the log file sync/write different when you do a DOF as CREATE INDEX (maybe async... like you can influence it with COMMIT_WRITE initialization parameter?)?
    You have no idea how these values born?


    Ideas/thoughts are welcome.

    Thanks and greetings
  • alternative to delete and re-create indexes

    Hi all

    We use Oracle 11.2.0.2. We have a script where we fall before the full update of a table, the indexes and re-create indexes to improve performance.

    Rather than a drop and recreate indexes, I wanted to know if there's another approach better to achieve performance gains.

    I thought make unusable index and rebuild later. Would it not be better to drop and re-create the index.

    Thanks for your time.

    >
    I thought make unusable index and rebuild later. Would it not be better to drop and re-create the index.
    >
    This is exactly the right strategy to use. He does need to get the benefit of the performance, and there is no danger of inadvertently re-create the index with the wrong settings or in the wrong table space.

    See understanding when to use unusable index or Invisible in the DBA Guide
    http://docs.Oracle.com/CD/E11882_01/server.112/e25494/indexes002.htm#CIHJIDJG
    >
    Unusable index

    An unusable index is ignored by the optimizer, and is not maintained by DML. One of the reasons to make an unusable index are to improve the performance of loading in bulk. (Loads in bulk, go faster if the database is not required to manage the index when inserting rows.) Instead of letting fall the index and later re-creation, requiring you to remember the exact parameters of the CREATE INDEX statement, you can make the index unusable and then rebuild.

  • to delete and re-create indexes

    Hello.

    You get the following error reported for work seek to purge the CC:
    ORA-08102

    According to the note of the Oracle, he must drop and re-create the index FND_CONCURRENT_REQUEST_N1.

    Can someone please advise the best way to to do? Is there a standard way to do this? (Should we stop managers cc? Database? EBS together?) What are the commands?

    Thank you all.

    Oracle 10.2.0.4
    Windows 2008
    EBS 11.5.10.2

    DA

    1. Get FND_CONCURRENT_REQUEST_N1 DDL
    THE VALUE OF 10000 LONG
    SELECT dbms_metadata.get_ddl ('INDEX', 'FND_CONCURRENT_REQUEST_N1') FROM dual;

    (2) delete the index.
    DROP INDEX FND_CONCURRENT_REQUEST_N1

    3. run the DDL
    CREATE INDEXES FND_CONCURRENT_REQUEST_N1...

    Nothing else is necessary.

  • Creating indexes and a default tablespace

    Hi Experts,

    Need your help to understand a basic tablespace clause when creating any object.
    I have a table owned by the user and reside on tuberculosis tablspace, table A has two indices i1 and i2, index i1 A user-owned and created by error index i2 belonging to user B.
    index i1 resides on the tb_index tablespace, i2 index created by mistake lies also on same tablespace tb_index.
    I have a question above given the scenario

    I2 index that was created by mistake lies in tablespace tb_index, despite mentioning any tablespace clause. How it can be created on the tb_index tablespace when the developer did not mention the tablespace.
    tablespace tb_index is neither database tablspace default is default not storage for user B.

    No idea about this help me a lot.

    Thank you

    Maybe something like that happening?

    SQL> conn / as sysdba
    Connected.
    SQL> conn test/test
    Connected.
    SQL> select * from user_indexes;
    
    no rows selected
    
    SQL> select table_name, tablespace_name from user_tables;
    
    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    TAB1                           USERS
    
    SQL> conn / as sysdba
    Connected.
    SQL> grant create any index to system;
    
    Grant succeeded.
    
    SQL> conn system/oracle
    ERROR:
    ORA-28002: the password will expire within 7 days
    
    Connected.
    SQL> conn test/test
    Connected.
    
    SQL> revoke index on tab1 from system;
    
    Revoke succeeded.
    
    SQL> conn system/oracle
    ERROR:
    ORA-28002: the password will expire within 7 days
    
    Connected.
    SQL> create index tidx on test.tab1(a);
    
    Index created.
    
    SQL> set pagesize 9999
    SQL> select index_name, table_name, tablespace_name, owner from all_indexes where table_name='TAB1'
      2  ;
    
    INDEX_NAME                     TABLE_NAME
    ------------------------------ ------------------------------
    TABLESPACE_NAME                OWNER
    ------------------------------ ------------------------------
    TIDX                           TAB1
    SYSTEM                         SYSTEM
    

    HTH
    Aman...

  • create indexes and internal error

    Hi, I run

    CREATE INDEX idx_nu_account_id_ ON archost
    (
    acc_id ASC
    )
    tablespace ts_idx
    /
    so happen "ORA-00600: internal error code, arguments: [ksuloget2], [0xFDD1F948], 'this message; '

    Also I during the exec select * archost then if record is going to get all the return even error why?

    What version of Oracle?
    What platform (OS)?

    I found two problem reports to Oracle on this error. The two refer to an LMS > 1 and are Windows specific. If you are under Windows see Oracle support documents: 564784.1 and 5935415.

    You can open a SR if the adjustment to see if there was a patch created. Otherwise, you can try using a smaller CMS framework.

    HTH - Mark D Powell.

  • How to create indexes on columns all - the flames begin

    Yes read you it correctly.

    Is it possible to create a procedure that will create an index on each column in a table without specifying the column names?

    index_all_cols exec ('xxx', 'parallel');

    You ask why? There is no reason that I can give you that will quench the flames coming my way. But, finally, it's because (1) I am tired of using excel to generate create statements of the index and (2) I want the speed at the expense of everything else, (3) I do not use a mouse... I know, I would hate first.

    Jason

    Oracle 10g

    ... at least I didn't to index every column in every table in my diagram!

    Had, it works!

    CREATE OR REPLACE PROCEDURE index_all_cols (pTABLENAME IN varchar2)

    IS

    CURSOR c1 IS SELECT distinct COLUMN_NAME FROM USER_TAB_COLS WHERE TABLE_NAME = pTABLENAME;

    BEGIN

    FOR c IN c1 LOOP

    BEGIN EXECUTE IMMEDIATE 'create index X_ "| c.COLUMN_NAME |' WE ' | pTABLENAME | ' ('| c.COLUMN_NAME |') parallel logging ";

    -EXCEPTION WHILE some other THEN NULL;

    END;

    END LOOP;

    COMMIT;

    END index_all_cols;

    /

    ... and not even a flame

  • Inactive workers in IMPDP with parallel option

    Hello gurus,

    I took an export datapump to a partitioned table 29GB with the following parameters and was extremely quick (< 10 minutes):

    parallel = 4
    = 500MB file size
    Directory = PUMP_DIR
    estimate statistics =
    dumpfile=exp%U.dmp
    REUSE_DUMPFILES = y
    logfile = export.log
    tables = user1.t1

    Export product 4 parallel workers who were active all the time, so why the high speed.

    However when I tried to take an import datapump on the same database on an empty table (different schema), the performance was very poor (55 minutes):

    parallel = 4
    Directory = PUMP_DIR
    dumpfile=exp%U.dmp
    logfile = Import.log
    tables = user1.t1
    remap_schema = user1:user2
    TABLE_EXISTS_ACTION = add

    I noticed that parallel workers have been slowed down all the time (not applicable the degree of parallelism, I used) and importation of all was serialized.

    Can someone give me an idea why parallel workers were slowed during the IMPDP?


    [r00tb0x | http://www.r00tb0x.com]

    You see, I'll assume that you do a single importation of the data, or at the very least, your tables already exist and you import partitioned tables. If that's true, then you hit a situation that we know. Here's what happens:

    This is true for tables partitioned and sous-partitionnee and only if the Data Pump task that loads the data have not also created the table. The last part of the previous sentence is what makes this real. If you run a Data Pump task that simply creates the tables, and then run another task import which loads the data, even when they come from the same dumpfile, you will hit this situation. The situation is:

    When the task Data Pump that load data into a table partitioned or sous-partitionnée has not created the table, and then Data Pump cannot be sure
    the partitioning key is the same. For this reason, when loading the Data Pump data, it comes out a table lock and it blocks any other parallel to load in this table workers. If the task Data Pump created the table, then only a lock partition or subpartition is underwritten and other workers are free to subscribe locks on different partitions/subpartitions in the same table.

    I suppose that you see, is that all workers are trying to load data into the same table, but different partitions and workers holds the table lock. This may block other workers.

    There is a 'fix' for this, but there is a minimum difficulty. Data pump sill cannot load into several partitions, remember to remove the table lock, but instead, only 1 partitoin/subpartitoin will be set to 1. You will not see the parallel max used in these cases, but you will not see other workers waiting for an exclusive lock on the same table.

    I do not remember the number of patch and I do not remember what version it went in, but Oracle Support should be able to help with that.

    If the same Data Pump task creates the tables, or if these tables are not partitioned/sous-partitionnée, then I have not heard of this issue.

    Thank you

    Dean

  • Analyze tables after creating indexes

    Hi all

    I created new clues on the production environment, we must analyze tables after creating indexes. Why and what analysis do?

    Thanks for the help.
    Select * from V$version;
    
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    "CORE     10.2.0.4.0     Production"
    TNS for HPUX: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production

    There are so many different options and you'll certainly want to tweak your stats based on your system.
    The best thing to do is to read about dbms_stats:
    http://download.Oracle.com/docs/CD/B19306_01/server.102/b14211/stats.htm#PFGRF30102
    http://download.Oracle.com/docs/CD/B19306_01/AppDev.102/b14258/d_stats.htm#CIHEHDFB

    Here are a few examples to give you an idea of what they look like and how to perform:

    BEGIN
      DBMS_STATS.GATHER_TABLE_STATS(OWNNAME          => 'schema_name',
                                    TABNAME          => 'table_name',
                                    ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE, --> For really big tables oracle can just do a specific percent
                                    METHOD_OPT       => 'for all columns size 1', --> Defines Histograms, size one disables histograms
                                    DEGREE           => 12, --> The degree of parallelism so you'll see 12 parallel threads gathering stats
                                    CASCADE          => TRUE); --> gather stats on the table's indexes also
    END; 
    
    BEGIN
      DBMS_STATS.GATHER_INDEX_STATS(OWNNAME          => 'schema_name',
                                    INDNAME          => 'index_name',
                                    ESTIMATE_PERCENT => 50,
                                    DEGREE           => 4);
    END; 
    

    You can also do

    DBMS_STATS.gather_schema_stats
    DBMS_STATS.gather_database_stats

    and much more...

    I really want to focus on the need to do your homework on them,
    read the docs I linked and adjust your statistical parameters to fit your db objects and how they are accessed/used.
    Having accurate and meaningful statistics are very important to the performance of the database.

  • ALTER INDEX REBUILD and large waste area

    Hello world.

    Concerns the RDBMS EE 10.2.0.2 on a box with 16CPUs. Non-standard initialization parameters:

    db_16k_cache_size = 3G
    pga_aggregate_target = 3G
    SGA_MAX_SIZE = 12G
    SGA_TARGET = 5G
    workarea_size_policy = AUTO

    I have a large table partitioned on a monthly basis with a local couple of bitmap index on this subject. Table and index are stored in different areas of storage. The index tablespace is

    EXTENT MANAGEMENT UNIFORM LOCAL 1 M SIZE
    16K BLOCKSIZE
    SEGMENT SPACE MANAGEMENT AUTO

    Nightly batch processing allows a few partitions index unusable then inserts/adds one part of the data and rebuilds the index with

    ALTER INDEX... REBUILD PARTITION... NOLOGGING PARALLEL

    When you are finished, query on DBA_IND_PARTITIONS shows that, for all the index, partition value SCOPES is much greater than the value of used BYTES, for example one of the partitions has 106 DEGREES (1 MB each so he made 106 MB space) while only 15 MB for the BYTES.

    I understand that during the reconstruction of the parallel process slave create segments in the tablespace of the index of destination so that spend a lot more space than this segment takes finally. But it also means that the space is not released. (Deallocation/shrinkage will not help). Same thing can be demonstrated by the queries on DBA_SEGMENTS and DBA_FREE_SPACE. Because of this behavior, I have huge waste of space in the tablespace to index.

    Can someone help, please?
    Przemek

    Allocate space for parallel process slave is documented in the book 'Data warehousing database Oracle 10 g 2', chapter 25 "run in parallel to assistance.

    user2038804 wrote:
    Concerns the RDBMS EE 10.2.0.2 on a box with 16CPUs. Non-standard initialization parameters:

    When you are finished, query on DBA_IND_PARTITIONS shows that, for all the index, partition value SCOPES is much greater than the value of used BYTES, for example one of the partitions has 106 DEGREES (1 MB each so he made 106 MB space) while only 15 MB for the BYTES.

    Przemek,

    I can confirm that there is a bug in 10.2.0.2 leading to inconsistent information related to size in DBA_SEGMENTS / DBA_EXTENTS after an index rebuild in parallel to a big clue, maybe a bug 4771672 in 10.2.0.3. If I remember correctly the information of MEASUREMENT is correct and the information provided in DBA_SEGMENTS is misleading.

    The Metalink note suggests to use DBMS_SPACE_ADMIN Procedure TABLESPACE_FIX_SEGMENT_EXTBLKS to correct erroneous information in the dictionary, but I don't know if it was the one we used when encountering the problem.

    Kind regards
    Randolf

    Oracle related blog stuff:
    http://Oracle-Randolf.blogspot.com/

    SQLTools ++ for Oracle (Open source Oracle GUI for Windows):
    http://www.sqltools-plusplus.org:7676 /.
    http://sourceforge.NET/projects/SQLT-pp/

  • How can I insert a number to a specific index (row and column) to a table

    I had the most with function 'insert into array' problem because of its counter-intuitiveness. I want to insert a number I got inside a loop IN a table. The ROW and COLUMN of this table I want enter the number is specified by the number of loops of two loops FOR. It did not work.

    So, I have isolated and tested this function further. Frankly, I initialized a table 2D with ZEROS and plugged into the "insert into array" function (on top of entry). I then put the number '1' for the index (line) and the number "2" for the index (column) and then put the entry number "6" for the "new item/sub-table. Then, I hung a picture of 2-D (indicator) output to the output of the function "insert into array. When I did all that, it means I want to just put the number '6' in line '1' and the column '2'... This isn't letting me do it.

    How can I do this SIMPLE?

    Hi Darrell h...,

    Looks like you can use the function "autoindexing. Take your value and connect it to your loop, it will be a default autoindexing. Right-click on the last tunnel of output and select Create indicator, the result is your table.

    It will be useful.

    Mike

  • Creating indexes for the table

    can someone help me how to create indexes in the table. I m creating own table... I need to select a particular field in the table. So I need to calculate the index position. I use my code like this,

    This will returnthe number of columns in the table.

    Class array

    {

    private int Table_Index()
    {
    for (int x = 0; x)<>
    {
    table_index = x;
    }
    Return table_index;
    }

    }

    MainClass can I get this length of Index

    Table T1;

    int t1 is T1. Table_Index();

    This property returns my length (4) of table column

    Using this index (t1) I HAV to see what position I'm at table now...

    someone help me...

    You can use a listfield, he supports methods to get the selected row and its contents.

  • CREATE INDEXES online is waiting for the TX = 4 mode

    Hello

    I have a strange blocking problem where an INDEX CREATE LINE is waiting for a transaction that did only inserted a line in the parent table.

    Wait is mode TX = 4 (not TM locks) and I currently have it reproduced only on 11.2.0.3 and 11.2.0.4

    Easy to replicate the schema SCOTT:

    Session 1:

    SQL > set time on

    14:54:58 SQL > insert into SCOTT. Dept (DEPTNO, dname) values (50, 'test');

    1 line of creation.

    Session 2;

    14:55:24 SQL > create index test on SCOTT. EMP (ename) online;

    It's waiting ' enq: TX - line lock conflict ":"

    SQL > select sid, chain_signature from v$ wait_chains where blocker_is_valid = 'TRUE '.

    SID CHAIN_SIGNATURE

    ---------- ----------------------------------------------------------------------

    603 ' SQL * Net client message' < ='enq: TX - line lock conflict '

    While waiting to acquire the lock of transaction in mode 4:

    SQL > select * lock gv$ where sid = 603

    INST_ID SELECT ADDR KADDR SID TYPE ID1 ID2 LMODE CTIME BLOCK REQUEST

    ---------- ---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------

    1 00000006CDA05EB8 00000006CDA05F10 603 352577 0 4 0 348 2 AE

    1 00000006CDA06078 00000006CDA060D0 603 DL 779505 0 3 0 308 2

    1 00000006CD9FABE0 00000006CD9FAC38 603 DL 779505 0 3 0 308 2

    1 00007F28001F5028 00007F28001F5088 603 779505 0 2 0 308 2 TM

    1 00007F28001F5028 00007F28001F5088 603 779510 0 4 0 308 2 TM

    1 00000006CD9FA240 00000006CD9FA298 603 779505 0 4 0 308 2 OD

    1 00000006B4F26790 00000006B4F26808 589847 711499 6 0 308 2 TX 603

    1 00000006CDA0ED68 00000006CDA0EDC0 655377 996169 0 4 308 TX 603 0

    I've traced 10046 and 10704:

    broadcast message = obj 29231196672 #= 779514 tim = 1447251053634045

    ksqgtl * mode TX-000f001e-000ad97c = 4 flags = 0 x 10001 timeout = 21474836 *.

    ksqgtl: xcb = 0x6bb322528, ktcdix = 2147483647, topxcb = 0x6bb322528

    ktcipt (topxcb) = 0 x 0

    ksucti: init logon has of txn DID:

    ksqgtl:

    ksqlkdid: 0001-003F-0000AFC4

    ksudidTrace: ksqgtl

    ktcmydid(): 0001-003F-0000AFC4

    ksusesdi: 0001-003F-0000AFC3

    ksusetxn: 0001-003F-0000AFC4

    ksqcmi: TX, f001e, ad97c mode = 4 timeout = 21474836

    2015-11-11 15:11:36.566

    WAITING #140700792578680: nam ='enq: TX - line lock conflict ' ela 42932082 name = | mode = 1415053316 usn < < 16 | location = sequence 983070 = obj 711036 #= 779514 tim = 1447251096566283

    And there is nothing in V$ SESSION leader/block/line current. class obj # is EMP. current sql_id is the CREATE INDEX.

    If anyone has an idea on:

    -Why creating an index in line must wait for transactions that modified only parent table

    -How to continue the investigation

    -can or cannot reproduce in other versions

    Thanks in advance,

    Franck.

    I guess you have a constraint foreign key between emp and Dept.

    It's expected behaviours: since 11.1 any DML at one end of a referential integrity constraint translates into a mode lock 3 taken at the other end, and your phenomenon resembles a side effect of this.

    When you try to create the index online that your session must assume that the other session (holding mode 3 on the emp and dept) may have changed the emp and dept, so it must wait for the session to the commit or rollback.

    (I guess that in principle, he could walk the cancellation of the transaction see if EMP had in fact been changed - but maybe who was considered too complicated to be worth the risk to implement)

    Concerning

    Jonathan Lewis

    Updated - I just did a quick check to reproduce the effect on 11.1.0.7

    For reference - here are a few notes on modes of locking and how the application has changed over time: https://jonathanlewis.wordpress.com/2010/06/21/locks/

  • Why I can't create indexes on the table of RDF data

    When I tried to create indexes on the table of RDF data, it always say the table or view does not exist. I created the RDF model using java codes:

    Oracle Oracle = new Oracle ("jdbc:oracle:thin:@localhost:1521:orcl", "system", "123");

    Chart GraphOracleSem = new GraphOracleSem (oracle, "test2");


    And used the following commands in sqlplus to create indexes:

    SQL >

    SELECT THE SEPARATE OWNER, OBJECT_NAME

    FROM DBA_OBJECTS

    WHERE TYPE_OBJET = 'TABLE '.

    4. AND OBJECT_NAME like ' % TEST2;

    OWNER

    --------------------------------------------------------------------------------

    OBJECT_NAME

    --------------------------------------------------------------------------------

    SYSTEM

    TEST2_NS

    SYSTEM

    RDFB_TEST2

    SYSTEM

    TEST2_TPL

    OWNER

    --------------------------------------------------------------------------------

    OBJECT_NAME

    --------------------------------------------------------------------------------

    SYSTEM

    RDFC_TEST2


    SQL > connect as sysdba

    Enter the password:

    Connected.

    SQL >

    SQL >

    SQL > select * from TEST2_TPL;

    Select * from TEST2_TPL

    *

    ERROR on line 1:

    ORA-00942: table or view does not exist

    SQL > CREATE INDEX test2_sub_idx ON TEST2_TPL (triple. GET_SUBJECT());

    CREATE INDEX test2_sub_idx ON TEST2_TPL (triple. GET_SUBJECT())

    *

    ERROR on line 1:

    ORA-00942: table or view does not exist

    Hi Shifu,

    It is not recommended to use the SYS or SYSTEM to store/manage schema graph RDF data.

    Can you please try the following in a SQL * more terminal?

    SQL > conn system/eu1

    Connected.

    SQL >

    SQL >

    SQL > create user graphuser identified by graphuser;

    Created by the user.

    SQL > grant connect, resources, unlimited tablespace to graphuser;

    Grant succeeded.

    SQL > conn graphuser/graphuser

    Connected.

    SQL > create table graph_tpl (triple sdo_rdf_triple_s) compress;

    Table created.

    SQL > sem_apis.create_sem_model exec ('graphic', 'graph_tpl', 'three');

    PL/SQL procedure successfully completed.

    SQL > insert into graph_tpl values (sdo_rdf_triple_s ('graph', '', '', ''));

    1 line of creation.

    SQL > select count (1) in the mdsys.rdfm_graph;

    1

    You see the same result?

    Thank you

    Zhe Wu

  • create indexes on the upper part of the column - reminders function is not deterministic

    Hi all

    I'm having a problem on a database. When you create an index on an existing table on the upper part of a column, Oracle triggers an ORA-30553. I've done this 40 index other databases, with the same and different versions, without problem. When you create the index on a copy of the table, it is created with success...

    Here is the code:

    SQL > select * from v version $;

    BANNER

    --------------------------------------------------------------------------------

    Oracle Database 11 g Release 11.2.0.3.0 - 64 bit Production

    PL/SQL Release 11.2.0.3.0 - Production

    CORE Production 11.2.0.3.0

    AMT for 64-bit Windows: Version 11.2.0.3.0 - Production

    NLSRTL Version 11.2.0.3.0 - Production

    SQL > CREATE INDEX IDX_SRE_E_MAIL_UPPER on fsynrelatie (upper (sre_e_mail)) tablespace idx;

    CREATE the INDEX IDX_SRE_E_MAIL_UPPER on idx tablespace fsynrelatie (upper (sre_e_mail))

    *

    ERROR on line 1:

    ORA-30553: the function is not deterministic

    SQL > create table fsynrelatie2 in select * from fsynrelatie;

    Table created.

    SQL > CREATE INDEX IDX_SRE_E_MAIL_UPPER on fsynrelatie2 (upper (sre_e_mail)) tablespace idx;

    The index is created.

    SQL > drop table fsynrelatie2;

    Deleted table.

    SQL > show parameter query_rewrite_enabled

    VALUE OF TYPE NAME

    ------------------------------------ ----------- ------------------------------

    query_rewrite_enabled string TRUE

    Hi all

    Thank you for the answers. I found the problem:

    On the table, there are 54 index:

    Select index_type, uniqueness, count (*) from user_indexes where table_name = 'FSYNRELATIE '.

    Index_type group, uniqueness

    INDEX_TYPE SINGLE CHARACTER COUNT (*)
    FIELD ARE NOT UNIQUE 1
    BASED ON A NORMAL FUNCTION ARE NOT UNIQUE 4
    NORMAL UNIQUE 3
    NORMAL ARE NOT UNIQUE 46

    3 unique indexes are the primary key and 2 another witch number field contains unique identifiers for rows in other systems. The domain index is an index of Oracle text on a couple of fields. There are 3 indices of function based on a high on a field and 1 on an individual function. This last clue has caused the problem. Apparently, on the creation, this function is deterministic, but when rolling a new version of the software. It became a non-deterministic function. When I delete the index, my original index on upper (sre_e_mail) has been created successfully! Now, I did the deterministic function again and could recreate the function without problem.

    Thanks for your comments!

Maybe you are looking for

  • Should what phone I buy

    I intend to buy a new phone from Firefox OS finally. My only question is if I have to wait until the operating system software is more mature. I know there are currently two phones from Firefox OS available in the United States (open flame and ZTE C)

  • Bookmarks on the left disappeared

    The list of the sites which are normally on the left of the screen disappeared. Please describe how to display the same.

  • Headphone Jack does not not on my Portege S100

    I have a strange problem with my S100 (XP). Sound is played through the speakers of the laptop without problem, but as soon as I plug in headphones then I hear nothing. Seems to be in good state that the speakers of the laptop automatically put on mu

  • Pairing Bluetooth or transfer of work between iPhone 6s and Macbook Pro 2014

    Of course I have my MacBook on El Capitan, and the transfer enabled on both devices... Trying to pair of Mac, he normally asks me if the code is correct on iPhone... I click Yes then it says connected on Mac for 10 seconds approximately, but on the i

  • To put it in a FOR loop

    Dear all, I wrote a code that allows to calculate the averages for 26 different groups. Attached to the code example in the file .txt for reference. I would like to put it in a loop TO avoid writing a code of lenghthier to calculate the averages for