-
to find last number generated for sequence object
hi , how to find last number generated for a sequence object,
without generating 'nextval'
is it last_number column of user_sequences?
but it is showing wrong value!!
-
Last edited by simply_dba; 01-02-2007 at 01:35 AM.
There are three kinds of lies: Lies, damned lies, and benchmarks...
Unix is user friendly. It's just very particular about who it's friends are.
Oracle DBA
-
You have to check if your sequence is cached. The "CACHE_SIZE" field on user|all|dba|sequences show if it is and the "CACHE_SIZE" field show the cache size. If your database just hung you will lost any cache sequence number.
Regards
Carlos Duarte
Oracle Applications DBA
-
Use SEQUENCE_NAME.CURRVAL.
SQL> select tamil_seq.nextval from dual;
NEXTVAL
----------
2
SQL> select tamil_seq.currval from dual;
CURRVAL
----------
2
CURRVAL will work only after you executed nextval, oherwise you will get an error:
SQL> select tamil_seq.currval from dual;
select tamil_seq.currval from dual
*
ERROR at line 1:
ORA-08002: sequence TAMIL_SEQ.CURRVAL is not yet defined in this session
Tamil
Last edited by tamilselvan; 01-02-2007 at 11:45 AM.
-
One can use v$_sequences , as said by HJR in http://www.dizwell.com/prod/node/59
Regards,
Chiappa
-
Originally Posted by JChiappa
Which column in v$_sequences will tell you the last value the sequence generated?
Tamil
-
Regards,
Carlos Duarte
Oracle Applications DBA
-
Originally Posted by chduarte
Try to check HIGHWATER.
HIGHWATER with cache option will not tell you the last number generated.
Tamil
-
That's what I said. I think not possible to get current value if your sequence is cached.
Regards,
Carlos Duarte
Oracle Applications DBA
-
For performance efficiency, Oracle uses caching with a default cache value
of 20. That means that when you enter a transaction, 20 numbers are read
into memory. The next time someone wants a number from the sequence, Oracle
reads memory for the next number. It doesn't have to perform a disk I/O to
read the next number from the sequence.
That means that when memory is cleared after you commit a transaction and
exit the form, numbers left in the cache are lost. That's why you get
gaps in the number sequence between 1 and 20.
You can avoid the problem by changing the sequences as follows:
ALTER SEQUENCE XXX NOCACHE;
Regards,
Carlos Duarte
Oracle Applications DBA
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|