Sequence generating duplicate numbers

Hi guys,
this might be more of a DBA question type... we had a situation where we copied data (once full schema and other time only tables ) from one database to another but ended up having sequence problem because new sequence was generating numbers which were lower than previousley generated one !
I wonder if anyone had similar problem or know what could be causing it.
when we copy full schema this happens to random table/sequences.
Thanks for reading.
Ali

The sequence skipping behaviour is seen when cached sequences are exported.
From the Oracle utilities manual
>
If transactions continue to access sequence numbers during an export, sequence numbers might be skipped. The best way to ensure that sequence numbers are not skipped is to ensure that the sequences are not accessed during the export.
Sequence numbers can be skipped only when cached sequence numbers are in use. When a cache of sequence numbers has been allocated, they are available for use in the current database. The exported value is the next sequence number (after the cached values). Sequence numbers that are cached, but unused, are lost when the sequence is imported.
>
Hope this helps
Varad

Similar Messages

  • Can a sequence generate negative numbers?

    Hi
    Thank you for reading my post
    i think my sequence generate negative numbers , is it possible ?or somewhere in my application is incorrect ?
      CREATE SEQUENCE  "HR"."GLOB_SEQ"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 5 NOCACHE  ORDER  NOCYCLE ;is there anything that i made wrong which caused the negative numbers in my edit box ?
    type of my category_ID is number.
    Thanks

    Generally speaking yes you can generate negative numbers:
    SQL> create sequence seq1 increment by -1;
    Sequence created.
    SQL> select seq1.nextval from dual;
    NEXTVAL
    -1
    SQL> /
    NEXTVAL
    -2
    But if you have defined minvalue as 1 it is impossible because:
    SQL> create sequence seq1 increment by -1 minvalue 1 maxvalue 1000000 start with 1;
    Sequence created.
    SQL> select seq1.nextval from dual;
    NEXTVAL
    1
    SQL> /
    select seq1.nextval from dual
    ERROR at line 1:
    ORA-08004: sequence SEQ1.NEXTVAL goes below MINVALUE and cannot be instantiated
    SQL>
    So most probably someone simply inserted a row with negative values knowing that they'll never be in conflict with sequence generated values, or your code is buggy :)
    Generally for surrogate keys (assuming this is your case) you don't care what values they have.
    Gints Plivna
    http://www.gplivna.eu

  • Issues with Sequence Generator

    I'm having trouble with Sequence generator not generating continuous numbers starting from 1, each time I run the mapping.
    I want the Sequence to start from 1, each time the mapping is run. For this to happen, I'm using a pre-mapping operator which uses an oracle procedure to reset the sequence.
    But, the sequence generates the numbers from some weird number, say 3508 and then jumps to 5006 and so on. I'm not able to track what's wrong with the sequence. I have stopped the caching in Sequence but still it hasn't helped. I'm sure and have verified that the procedure being used to reset the sequence is running fine.
    Please suggest some additional parameters/properties at OWB level to be checked for the sequence, if any OR any thoughts on why the sequence is not starting from 1. Thanks in advance.
    Thanks,
    Sachin
    Edited by: 850549 on Apr 23, 2011 11:43 AM
    Edited by: 850549 on Apr 23, 2011 11:44 AM

    Could you check whether the sequence you use has a cache value greater than 1 defined in the database. This way if your database regularly should be stoped, e.g for offline backup, you'll loose the sequence values that were unused in memory at that time. That way the gaps in your surrogate ids would be explainable.

  • CMP PK Sequence generated by Bean Self Cache !!

    Hi All,
    In WL6.1, one can mention the name of the sequence and the DB in the cmp-rdbms-jar.xml
    to use the sequence generated number to use as a primary key.
    Though my work is being done by the WL server but still WL server is hitting the
    DB for each insert.
    There are a couple of discussions listed on theserverside.com, but most of them
    fail for a clustered environment.
    Can anyone please suggest me a solution where the WL server would cache the keys
    instead of hitting the DB for each insert ?
    Thanks in advance for your help !!
    Regards
    -Rais

    Hi,
    I performed a test and ran 3 scenarios(inserting 1000 records).
    1. SEQUENCE INCREMENT BY 10 And key-cache-size = 1.
    Time taken = 13 seconds
    Records were inserted as 1,11,21,31.....
    2. SEQUENCE INCREMENTED BY 10 And key-cache-size = 10
    Records were inserted as 1,2,3,4,5...
    Time = 8 seconds
    3. SEQUENCE INCREMENTED BY 1 And key-cache-size = 10
    I got the duplicate primary key problem.
    The behaviour in case 2 is ambiguous to me...I was expecting the records to be
    inserted as 1,11,21,31.....
    Can anyone please clarify ??
    Thanks
    -Rais
    "Rais" <[email protected]> wrote:
    >
    Hi Rob,
    The weblogic Docs and the DTD says that "key-cache-size" should be equal
    to the
    INCREMENT VALUE of the Sequence in DB.Lemme point out what I have interpreted
    from that.Please correct me if I am wrong.
    lets say my sequence is
    CREATE SEQUENCE TEMP_SEQ INCREMENT BY 2.
    And my key-cache-size value is also 2.
    I believe that by keeping these two values equal,records would be inserted
    into
    the DB as 1,3,5,7......
    But in a clustered environment,each CMP would still be hitting the DB
    to get the
    sequence number.
    What I mean to say is key-cache-size is actually not meant for caching
    the sequence
    numbers.
    Even if it is ,how would the servers in the cluster maintain the same
    state of
    their individual cache same ??
    Regards
    -Rais
    Rob Woollen <[email protected]> wrote:
    Did you set a key-cache-size in your CMP deployment descriptor?
    -- Rob
    Rais wrote:
    Hi All,
    In WL6.1, one can mention the name of the sequence and the DB in thecmp-rdbms-jar.xml
    to use the sequence generated number to use as a primary key.
    Though my work is being done by the WL server but still WL server
    is
    hitting the
    DB for each insert.
    There are a couple of discussions listed on theserverside.com, butmost of them
    fail for a clustered environment.
    Can anyone please suggest me a solution where the WL server would
    cache
    the keys
    instead of hitting the DB for each insert ?
    Thanks in advance for your help !!
    Regards
    -Rais

  • What is the best approach to generate control numbers from bpel?

    1. If we want to control ISA/GS/ST control numbers from bpel, what is the best approach to do that?
    2.  how to generate these control numbers and where to store them to get a sequence out of it?
    Thanks,
    Kathar

    Internally Oracle B2B uses DB sequence for generating the control numbers. It is the best approach but at the same time it is not very straight forward, specially in case of clustered database. So you may carefully implement same with BPEL.
    Hi Anuj,
    If we let B2B to generate control numbers in the clustered environment, is there any settings we have to do?
    So you may carefully implement same with BPEL. BTW, what is the use case behind this?
    We were thinking about using this to send out duplicate messages to two TPs but we decided to go with java callout as you suggested in another thread.
    Thanks!
    Kathar

  • How to generate unique numbers

    hi all,
    I want to generate unique numbers always starting from 1 using a single sql query and I dont want to use a sequence and i dont think rownum will be helpful for generating unique numbers in all cases . how to do this ?
    thanks & regards,
    kumar.

    If two users get the MAX from temp, they would be updating with the same value for two different rows.If TEMP is a genuine temporary table, this is not an issue, because the data in a temporary table is only visible within a session.
    The big problem with this approach is the mutating table one: we cannot issue the requisite select statement from a BEFORE INSERT trigger. So this solution is only going to work with a view and an INSTEAD OF INSERT trigger.
    Another, more workable, solution is to use a code control table. This can be (should be) another temporary table, with one row holding one column - next value for TEMP.ID. Normally we would rule out such a solution because it serializes access to the inserted table, but as this is only on a per session basis, it doesn't matter.
    CREATE OR REPLACE TRIGGER tmp_bir BEFORE INSERT ON temp1 FOR EACH ROW
    DECLARE
      ln NUMBER;
    BEGIN
      SELECT nvl(code1.next_id,1) INTO ln
      FROM code1;
      :NEW.id := ln;
      UPDATE code1
      SET    next_id := ln+1;
    END;Beware: coded freehand, so may need debugging.
    Cheers, APC

  • Clarification on the limitation of sequence generator in T-SQL

    Hi, I found this limitation of sequence numbers for T-SQL:
    "If there are multiple instances of the NEXT
    VALUE FOR function specifying the same sequence generator within a single Transact-SQL statement, all those instances
    return the same value for a given row processed by that Transact-SQL statement. This behavior is consistent with the ANSI standard."
    From this link:  http://technet.microsoft.com/en-us/library/ff878058.aspx
    Does this mean that if we want to have different value generated then we can't use it in multi-threading environment whereby multiple instances / processes are calling the same T-SQL code that generate the sequence numbers using the
    NEXT VALUE FOR function?
    My understanding of the above might not be correct, any sample example to illustrate this limitation? 
    Thanks

    Hi
    This is the meaning of the comment in the article.
    If you are using in a single t-sql
    statement several times (NEXT VALUE FOR) then it will act as you use the same value. This is in-design :-)
    try this for example:
    select (NEXT VALUE FOR MySequenceName),(NEXT VALUE FOR MySequenceName),(NEXT VALUE FOR MySequenceName) -- same value several times
    But you can use (NEXT VALUE FOR) several time like this:
    DECLARE @QQ_01 int, @QQ_02 int, @QQ_03 int, @QQ_04 int
    SET @QQ_01 = NEXT VALUE FOR MySequenceName;
    SET @QQ_02 = NEXT VALUE FOR MySequenceName;
    SET @QQ_03 = NEXT VALUE FOR MySequenceName;
    SET @QQ_04 = NEXT VALUE FOR MySequenceName;
    SELECT @QQ_01,@QQ_02,@QQ_03,@QQ_04 -- different valus
    Hope this clarify things :-)
    [Personal Site] [Blog] [Facebook]

  • Sequence Generator problem in OWB Mapping

    Hi,
    I am using a Sequence Generator in my Dimension mapping. And OWB implements the mapping via an Oracle MERGE statement.
    However when I execute the mapping my sequence number value gets incremented even when there are only updates and no inserts taking place during the execution.
    I am using the sequence number only for inserts and not for updates in the mapping.
    Is there a way to avoid this situation or a work around to this problem? This is very urgent and any help in this area would be greatly appreciated.
    Thanks

    Hi
    I also have the same problem as I loose the seq numbers when there are updates only and I do not want to loose thousands of seq numbers. I tried with bulk size =1 as well as row based only execution but no result.
    The thing which solved this problem is to have outer join with source and target, then use splitter to find out new and updated records (by looking the join key as null on target table side), then use a fuction to generate seq number when the key is not null. But doing all this does not seem to be elegant performance point of you. I do not want to join source and target due to performance issues.
    Could you pl clrify your apprach. Are you using , Source minus target and Source Intersect Target . What you will do if there is no one to one matching between source and the target.
    Thanks

  • Knowing the Primary Key Sequence Generator of a table

    Hello All,
    I'm working on an application that uses Oracle toplinks/JPA for persistence. The entity classes in the application have primary key fields with annotations @Id and @GeneratedValue(strategy = GenerationType.AUTO). Per our understanding, this means the primary key generation is done by JPA/Top-links. When we see our database, we notice only one SEQUENCE table available and that table has only one row, while in the application, we are getting different sequence numbers for the primary key of each entity. So, not clear on how this sequence number is generated. Could anybody share information on where the sequence number is stored for each entity/table? Really appreciate your help here. Our database is MSSQL.
    Thank you,
    Venkatesh

    EclipseLink/TopLink uses Table sequencing for GenerationType.AUTO because it is more portable between databases. My understanding of your issue is from
    http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Table_sequencing
    Each row in the table represents one sequence generator, and your entities are all using the same default sequence generator and so all use the same row.
    To use multiple rows I believe you need to define multiple TableGenerators.
    Best Regards,
    Chris

  • Generating batch numbers

    Hi All,
    I have a requirement to generate batch numbers for every 200-item records of source file.
    I have to populate to the target filed with generated batch number + the item sequence number (both are not available in file).
    Thanks,
    venu.

    Hi Venu,
    You can go with the option of Number Range objects in the ABAP . So from the mapping you can call this lookup table and generate the new number . For this you need to use JCO call . It is a kind of RFC lookup
    This number range object you can maintain in the XI integrtaion Server(ABAP stack ) itself. To avoid overheads of call to the SAP r/3 systems. And also, while transporting, it is not required to change the IP address etc in the JCO call. 
    And one more option is maintaining Java Tables. with property files etc..
    Hope this helps,
    REgards,
    Moorthy
    Message was edited by: Krishna Moorthy P

  • PAP2t EU Problem - Dialing Duplicate Numbers

    Hello,
    Guys, i have PAP2T EU which creating the problem like dialing the duplicate numbers. For example I dial 025023456 (typical brussels number) it will dial 022550002344555 somthing like that. What to do with it?
    Please help me out to sort out this problem. 
    Regards
    Salman Ahmad

    Hello,
    the problem may also be incompatibility in the impedance between the attached phone and FXS port impedance setup.
    Also, the phone may generate tones on the edge of norm / out of norm / and PAP2T may realy "hear" every tone twice.
    So please check with another phone, check the impedance, and - last but not least - make sure you only use 2wire cable
    (inner 2 wires only) between PAP2T LINE1 socket and your phone - certain SPA-2102 and PAP2T models has both lines
    wired on LINE1 socket and it may cause incompatibility with the attached phone if 4 wire cable is used.

  • How to generate random numbers that doesnt contain characters?

    How do we generate random numbers in ESB ROuting Service/ XSL transformation that does not contain characters. I have been using "orcl:generate-guid()" , but it contains some characters, so, I substring it to get only numbers. I dont want to take this risk and in future, my substring itself may contain characters.
    Has anybdy tried this before?
    Thanks,

    If the goal is to have a pseudo random number then consider using the translate function to replace the occurances of the A - E characters with another digit. For example:
    translate(orcl:generate-guid(),'0123456789ABCDEF','0123456789123456')
    This will produce a 1 for A, 2 for B, etc. While not a valid hex to decimal conversion of the GUID value, it does get around the hex issue and might be sufficient for your purposes.
    I would perform a large sample test to see just how unique the values end up being.
    As for why hex is used, well GUID's are most commonly written in text as a sequence of hexadecimal digits such as: 3F2504E0-4F89-11D3-9A0C-0305E82C3301. i.e. 128 bits represented in 32 characters formatted into 5 sections.
    Hope this helps,
    Peter

  • Java persistence: sequence generator not working in expected way.

    Hi,
    I just played around with java persistence api and found that sequence generator annotations for making new primary key value not working correctly in my code. following is part of my code related to this problem.
    in entity class:
    @SequenceGenerator(name="mySeq", sequenceName="MY_SEQ_IN_DB")
    @Id
    @GeneratedValue(strategy=SEQUENCE, generator="mySeq")
    @Column(name = "UPLOAD_ID", nullable = false)
    private Integer uploadId;
    I have a sequence called MY_SEQ_IN_DB in my oracle 9i testing db. When I ran the code to save a new entity instance to database I found that the new upload id is not the one that should be created from the MY_SEQ_IN_DB sequence, while the sequence was not increased either. It's instead something starting from 97 (in my pc), and increased just like a sequence, but every time I reran my code the sequence restarted itself again beginning with 97(of course the insert failed with primary key conflict). the behavior just looks like it's a sequence created and managed totally by the persistence api or toplink itself (I guess).
    So, my question is, is this a designed behavior or have I done something wrong to make it not using the correct sequence in the db?
    I used hibernate before, and assigning new primary key from sequence in this way works fine.
    Thanks
    JC.L

    There are some things in Java which can't be serialized. When contained within a higher-level class such as Buttons. A button can be associated with an Action Listener. Now, you can serialize a button; however you can't serialize an action listener - for what should be to you obvious reasons. This is NOT an error and so there is no need to throw an exception when serializing the button.
    Basically: Applet sends servlet button, but not listener.

  • How do you create a column of sequenced dates in Numbers

    How do you create a column of sequenced dates in Numbers without typing in each date? For example: 01/05/15, 01/12/15, 01/19/15, 01/26/15, 02/02/15, etc.

    Hi Cha Ling,
    Another way,
    Enter your first two dates that show the desired interval- i.e. 01/05/15 and 01/12/15.
    Select both cells and choose fill from the contextual menu.
    Drag down to fill your column.
    quinn

  • JPA: Oracle Sequence Generator not up to date

    Hi,
    I'm using the JPA Oracle Sequence Generator in one of my JPA classes:
    @Entity
    @Table(name = "DACC_COST_TYPE")
    public class JPACostType implements Serializable {
    @SequenceGenerator(name = "CostTypeGenerator", sequenceName = "DACC_COST_TYPE_SEQ")
        @Column(name = "ID_COST_TYPE")
        @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CostTypeGenerator")
        private Integer idCostType;
    In order to persist a new object I perform the following code:
    @PersistenceContext
    private EntityManager em;
    JPACostType myJPA = new JPACostType();
    myJPA.setIdCostType = null;
    em.merge(myJPA);
    em.flush();
    Normally this works fine. But after deploying the app there sometimes happens an error:
    Caused by: javax.persistence.PersistenceException: SQLException while inserting entity {com.karmann.dacc.ejb.busilog.jpa.JPACostType(idCostType=4)}.
    at com.sap.engine.services.orpersistence.core.PersistenceContextImpl.flush(PersistenceContextImpl.java:278)
    at com.sap.engine.services.orpersistence.core.PersistenceContextImpl.beforeCompletion(PersistenceContextImpl.java:565)
    at com.sap.engine.services.orpersistence.entitymanager.EntityManagerImpl.beforeCompletion(EntityManagerImpl.java:410)
    at com.sap.engine.services.orpersistence.environment.AppJTAEnvironmentManager.beforeCompletion(AppJTAEnvironmentManager.java:197)
    at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:232)
    ... 52 more
    Caused by: java.sql.SQLException: ORA-00001: unique constraint (AEMA.DACC_COST_TYPE_PK) violated
    Obviously JPA does not fetch the new key by accessing the Oracle sequence. This documents "next value = 5". Does JPA fetch the new key from its cache? Is there any possibility to avoid this?
    Thanks for each hint,
    Christoph

    Hello Christoph Schäfer  ,
    I am stuck with a similar issue. I was able to save mutiple entries and there has not been much change to my JPA. I added new entities and new sequences.
    Now, I get the error Caused by: javax.persistence.PersistenceException: java.sql.SQLException: ORA-02289: Sequence ist nicht vorhanden.
    I have checked the name of sequence and sequence next val on the DB. It works on DB but when i execute it from ejb, it gives me thsi error. Now, it gives the error for all previously working JPA entities.
    I have also provided allocationSize = 1 for all entities.
    Please let me know, possible cause/solution to this issue.
    thank you.
    Regards,
    Sharath

Maybe you are looking for