Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 39879
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T14:56:04+00:00 2026-05-10T14:56:04+00:00

I have a distributed Java application running on 5 application servers. The servers all

  • 0

I have a distributed Java application running on 5 application servers. The servers all use the same Oracle 9i database running on a 6th machine.

The application need to prefetch a batch of 100 IDs from a sequence. It’s relatively easy to do in a single-threaded, non-distributed environment, you can just issue these queries:

SELECT seq.nextval FROM dual; ALTER SEQUENCE seq INCREMENT BY 100; SELECT seq.nextval FROM dual; 

The first select fetches the first sequence ID that the application can use, the second select returns the last one that can be used.

Things get way more interesting in a multithreaded environment. You can’t be sure that before the second select another thread doesn’t increase the sequence by 100 again. This issue can be solved by synchronizing the access on the Java side – you only let one thread begin fetching the IDs at one time.

The situation becomes really hard when you can’t synchronize because parts of the application doesn’t run on the same JVM, not even on the same physical machine. I found some references on forums that others have problems with solving this problem too, but none of the answers are really working not to mention being reasonable.

Can the community provide a solution for this problem?

Some more information:

  • I can’t really play with the transaction isolation levels. I use JPA and the change would affect the entire application, not only the prefetching queries and that’s not acceptable for me.
  • On PostgreSQL I could do the following: SELECT setval('seq', NEXTVAL('seq') + n - 1)

  • The solution by Matthew works when you can use a fixed increment value (which is perfectly acceptable in my case). However is there a solution when you don’t want to fix the size of the increment, but want to adjust it dynamically?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T14:56:05+00:00Added an answer on May 10, 2026 at 2:56 pm

    Why not just have the sequence as increment by 100 all the time? each ‘nextval’ gives you 100 sequence numbers to work with

    SQL> create sequence so_test start with 100 increment by 100 nocache;  Sequence created.  SQL> select so_test.nextval - 99 as first_seq, so_test.currval as last_seq from dual;   FIRST_SEQ   LAST_SEQ ---------- ----------          1        100  SQL> /   FIRST_SEQ   LAST_SEQ ---------- ----------        101        200  SQL> /   FIRST_SEQ   LAST_SEQ ---------- ----------        201        300  SQL>  

    A note on your example.. Watch out for DDL.. It will produce an implicit commit

    Example of commit produced by DDL

    SQL> select * from xx;  no rows selected  SQL> insert into xx values ('x');  1 row created.  SQL> alter sequence so_test increment by 100;  Sequence altered.  SQL> rollback;  Rollback complete.  SQL> select * from xx;  Y ----- x  SQL>  
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 220k
  • Answers 220k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Check out Enhanced Commentify: I think this does what you… May 12, 2026 at 11:55 pm
  • Editorial Team
    Editorial Team added an answer Have a look at basename() $path = 'public/images/portfolio/i-vis/1.jpg' $name =… May 12, 2026 at 11:55 pm
  • Editorial Team
    Editorial Team added an answer string is in the std namespace, so you either need… May 12, 2026 at 11:55 pm

Related Questions

We have a Java EE-based web application running on a Glassfish app server cluster.
This Paper ( When the CRC and TCP checksum disagree ) suggests that since
Hi everybody: let me do a bit of concept mining here: I am involved
Let's say I have an existing application written in Java which I wish to

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.