Re: Sequences CYCLEing -- was RE: How do you genrate primary

2003-11-10 Thread Jared . Still

I created such a beast a few years ago.

The 'customer' gave me no choice. The unique ID for a record
had to be the current date+Id, and the idea had to start over every
day at midnight.  That was an interesting bit of code.  It certainly
wouldn't scale, but this was very low volume OLTP, so we could
live with it.

And I certainly didn't use this value as the PK.

Jared








Hemant K Chitale [EMAIL PROTECTED]
Sent by: [EMAIL PROTECTED]
11/09/2003 07:04 AM
Please respond to ORACLE-L


To:Multiple recipients of list ORACLE-L [EMAIL PROTECTED]
cc:
Subject:Re: Sequences CYCLEing -- was RE: How do you genrate primary



So, let's start another thread.

How many of you have actually seen Sequences implemented in the manner I 
described
and Mladen demonstrated below ?

Hemant

At 08:24 AM 08-11-03 -0800, you wrote:
Being sort of DBA Doubting Tom, I have a bad habit of trying and testing
stuff. Here is what happens with sequences:

SQL create sequence test1 start with 1 maxvalue 4 cycle nocache;

Sequence created.

SQL select test1.nextval from dual
 2 /

  NEXTVAL
--
 1

SQL /

  NEXTVAL
--
 2

SQL /

  NEXTVAL
--
 3

SQL /

  NEXTVAL
--
 4

SQL /

  NEXTVAL
--
 1

SQL /

  NEXTVAL
--
 2

SQL

On 2003.11.08 10:54, Hemant K Chitale wrote:
Ah yes. The exception case when sequence numbers are not unique.
Believe me, I've seen Sequences with low MAXVALUE [the guy decided that the
the number would never exceed 4 digits and didn't want to waste resources
and space].
And I do vaguely remember that I HAVE seen a Sequence CYCLE over and
restart. Can't remember the details, though  this was many years ago.
It takes all kinds of developers and database designers to make Oracle
interesting.
Hemant
At 03:29 PM 05-11-03 -0800, you wrote:
In theory I suppose it's possible to have overlaps, but this has nothing to
do with OPS/RAC. If you create the sequence to CYCLE (not the default) AND
set MAXVALUE to something less than reasonable (the default is NOMAXVALUE
which IIRC means 10 to the power 27) AND don't create a unique index on the
column storing the sequence, then maybe you can end up with multiple rows
having the same value? Never heard of anyone doing that, of course, but in
theory ...
Pete
Controlling developers is like herding cats.
Kevin Loney, Oracle DBA Handbook
Oh no, it's not. It's much harder than that!
Bruce Pihlamae, long-term Oracle DBA

-Original Message-
Millsap
Sent: Thursday, November 06, 2003 7:34 AM
To: Multiple recipients of list ORACLE-L

I've never heard of an Oracle sequence not generating unique id's, OPS/RAC
or not. Gaps, yes. Overlaps, never.

Cary Millsap
Hotsos Enterprises, Ltd.
http://www.hotsos.com
Upcoming events:
- Performance Diagnosis 101: 11/19 Sydney
- SQL Optimization 101: 12/8-12 Dallas
- Hotsos Symposium 2004: March 7-10 Dallas
- Visit www.hotsos.com for schedule details...

-Original Message-
Todd Boss
Sent: Wednesday, November 05, 2003 1:09 PM
To: Multiple recipients of list ORACLE-L
There's six very good reasons listed below to NOT use SSN as your unique
PK,
and honestly I can't believe this is STILL an issue for any dba
who deals w/ SSNs. These arguments are YEARS old. Isn't this Data
Modelling 101? I know for sure this exact case is in every text i've read.
How to deal with Natural keys:
- Create a surrogate PK that the user never sees but guarantees uniqueness.
- Create a separate (unique if you can) index on your natural key.
- Go on with life.
I'm a bit more concerned about what i'm hearing about Sequences. Is it true
that sequences are NOT guaranteed to be unique?? After all
this time listening to Oracle people scoff at the Sybase/Ms Sql identity
feature and its inadequacies as compared to Sequences for generating
sequential surrogate keys  they're NOT guaranteed to be unique if
you're
working in a parallel processing environment??
Is this really true? Do Oracle developers have to depend on
circa 1990 techniques to generate something as BASIC as a surrogate key by
designing their own little lookup table systems? Or am I just reading this
thread incorrectly?
Todd

 
  I'm fully convinced. SSN should not be used as a PK.
 
  Can we also conclude that natural keys in general are only good if you
sit in
  an ivory tower and do unrealistic lab test?
 
  Yong Huang
 
  --- Bellow, Bambi [EMAIL PROTECTED] wrote:
   Having worked for the government in a situation where we were
actually
   tracking information BY Social Security Number, let me tell you the
problems
   with it.
  
   1) Social Security Numbers ARE NOT GUARANTEED TO BE UNIQUE
   2) Individuals ARE NOT GUARANTEED TO HAVE ONE AND ONLY ONE Social
Security
   Number
   3) Not all Social Security Numbers are numeric
   4) Not all Social Security Numbers which ARE numeric are 9
characters in
   length
   5) Social Security Numbers can be changed by the holder
   6) It is illegal to use the Social

Re: Sequences CYCLEing -- was RE: How do you genrate primary

2003-11-10 Thread Ron Rogers
In my past experiences we had a PK created from a source location name
ie: BOST,followed by the julian date,followed by a sequence number with
a max value . The maximun for the pk was 12 characters. Ho would
have more than 1 entries in a day from one location. The complete
testing of the application with 10001 records proved there could be a pk
problem. We silved the problem by converting the sequence to hex and
then the max was .
Ron

 [EMAIL PROTECTED] 11/10/2003 3:19:42 PM 
I created such a beast a few years ago.

The 'customer' gave me no choice.  The unique ID for a record
had to be the current date+Id, and the idea had to start over every
day at midnight.That was an interesting bit of code.It
certainly
wouldn't scale, but this was very low volume OLTP, so we could
live with it.

And I certainly didn't use this value as the PK.

Jared






Hemant K Chitale [EMAIL PROTECTED]
Sent by: [EMAIL PROTECTED] 
 11/09/2003 07:04 AM
 Please respond to ORACLE-L

 
To: Multiple recipients of list ORACLE-L
[EMAIL PROTECTED]
cc: 
Subject:Re: Sequences CYCLEing  -- was RE: How do you
genrate primary



So, let's start another thread.

How many of you have actually seen Sequences implemented in the manner
I 
described
and Mladen demonstrated below ?

Hemant

At 08:24 AM 08-11-03 -0800, you wrote:
Being sort of DBA Doubting Tom, I have a bad habit of trying and
testing
stuff.  Here is what happens with sequences:

SQL create sequence test1 start with 1 maxvalue 4 cycle nocache;

Sequence created.

SQL select test1.nextval from dual
  2  /

   NEXTVAL
--
 1

SQL /

   NEXTVAL
--
 2

SQL /

   NEXTVAL
--
 3

SQL /

   NEXTVAL
--
 4

SQL /

   NEXTVAL
--
 1

SQL /

   NEXTVAL
--
 2

SQL

On 2003.11.08 10:54, Hemant K Chitale wrote:
Ah yes.  The exception case when sequence numbers are not unique.
Believe me, I've seen Sequences with low MAXVALUE [the guy decided
that 
the
the number would never exceed 4 digits and didn't want to waste 
resources
and space].
And I do vaguely remember that I HAVE seen a Sequence CYCLE over and
restart.  Can't remember the details, though  this was many years

ago.
It takes all kinds of developers and database designers to make
Oracle
interesting.
Hemant
At 03:29 PM 05-11-03 -0800, you wrote:
In theory I suppose it's possible to have overlaps, but this has 
nothing to
do with OPS/RAC.  If you create the sequence to CYCLE (not the
default) 
AND
set MAXVALUE to something less than reasonable (the default is 
NOMAXVALUE
which IIRC means 10 to the power 27) AND don't create a unique index
on 
the
column storing the sequence, then maybe you can end up with multiple

rows
having the same value?  Never heard of anyone doing that, of course,

but in
theory ...
Pete
Controlling developers is like herding cats.
Kevin Loney, Oracle DBA Handbook
Oh no, it's not.  It's much harder than that!
Bruce Pihlamae, long-term Oracle DBA

-Original Message-
Millsap
Sent: Thursday, November 06, 2003 7:34 AM
To: Multiple recipients of list ORACLE-L

I've never heard of an Oracle sequence not generating unique id's, 
OPS/RAC
or not. Gaps, yes. Overlaps, never.

Cary Millsap
Hotsos Enterprises, Ltd.
http://www.hotsos.com 
Upcoming events:
- Performance Diagnosis 101: 11/19 Sydney
- SQL Optimization 101: 12/8-12 Dallas
- Hotsos Symposium 2004: March 7-10 Dallas
- Visit www.hotsos.com for schedule details...

-Original Message-
Todd Boss
Sent: Wednesday, November 05, 2003 1:09 PM
To: Multiple recipients of list ORACLE-L
There's six very good reasons listed below to NOT use SSN as your 
unique
PK,
and honestly I can't believe this is STILL an issue for any dba
who deals w/ SSNs.  These arguments are YEARS old.  Isn't this Data
Modelling 101?  I know for sure this exact case is in every text
i've 
read.
How to deal with Natural keys:
- Create a surrogate PK that the user never sees but guarantees 
uniqueness.
- Create a separate (unique if you can) index on your natural
key.
- Go on with life.
I'm a bit more concerned about what i'm hearing about Sequences. Is
it 
true
that sequences are NOT guaranteed to be unique??  After all
this time listening to Oracle people scoff at the Sybase/Ms Sql 
identity
feature and its inadequacies as compared to Sequences for
generating
sequential surrogate keys  they're NOT guaranteed to be unique
if
you're
working in a parallel processing environment??
Is this really true?  Do Oracle developers have to depend on
circa 1990 techniques to generate something as BASIC as a surrogate
key 
by
designing their own little lookup table systems?  Or am I just
reading 
this
thread incorrectly?
Todd

 
  I'm fully convinced. SSN should not be used as a PK.
 
  Can we also conclude that natural keys in general are only good
if 
you
sit in
  an ivory tower and do unrealistic lab test?
 
  Yong Huang
 
  --- Bellow, Bambi [EMAIL

Re: Sequences CYCLEing -- was RE: How do you genrate primary

2003-11-09 Thread Hemant K Chitale
So, let's start another thread.

How many of you have actually seen Sequences implemented in the manner I 
described
and Mladen demonstrated below ?

Hemant

At 08:24 AM 08-11-03 -0800, you wrote:
Being sort of DBA Doubting Tom, I have a bad habit of trying and testing
stuff.  Here is what happens with sequences:
SQL create sequence test1 start with 1 maxvalue 4 cycle nocache;

Sequence created.

SQL select test1.nextval from dual
 2  /
  NEXTVAL
--
1
SQL /

  NEXTVAL
--
2
SQL /

  NEXTVAL
--
3
SQL /

  NEXTVAL
--
4
SQL /

  NEXTVAL
--
1
SQL /

  NEXTVAL
--
2
SQL

On 2003.11.08 10:54, Hemant K Chitale wrote:
Ah yes.  The exception case when sequence numbers are not unique.
Believe me, I've seen Sequences with low MAXVALUE [the guy decided that the
the number would never exceed 4 digits and didn't want to waste resources
and space].
And I do vaguely remember that I HAVE seen a Sequence CYCLE over and
restart.  Can't remember the details, though  this was many years ago.
It takes all kinds of developers and database designers to make Oracle
interesting.
Hemant
At 03:29 PM 05-11-03 -0800, you wrote:
In theory I suppose it's possible to have overlaps, but this has nothing to
do with OPS/RAC.  If you create the sequence to CYCLE (not the default) AND
set MAXVALUE to something less than reasonable (the default is NOMAXVALUE
which IIRC means 10 to the power 27) AND don't create a unique index on the
column storing the sequence, then maybe you can end up with multiple rows
having the same value?  Never heard of anyone doing that, of course, but in
theory ...
Pete
Controlling developers is like herding cats.
Kevin Loney, Oracle DBA Handbook
Oh no, it's not.  It's much harder than that!
Bruce Pihlamae, long-term Oracle DBA
-Original Message-
Millsap
Sent: Thursday, November 06, 2003 7:34 AM
To: Multiple recipients of list ORACLE-L
I've never heard of an Oracle sequence not generating unique id's, OPS/RAC
or not. Gaps, yes. Overlaps, never.
Cary Millsap
Hotsos Enterprises, Ltd.
http://www.hotsos.com
Upcoming events:
- Performance Diagnosis 101: 11/19 Sydney
- SQL Optimization 101: 12/8-12 Dallas
- Hotsos Symposium 2004: March 7-10 Dallas
- Visit www.hotsos.com for schedule details...
-Original Message-
Todd Boss
Sent: Wednesday, November 05, 2003 1:09 PM
To: Multiple recipients of list ORACLE-L
There's six very good reasons listed below to NOT use SSN as your unique
PK,
and honestly I can't believe this is STILL an issue for any dba
who deals w/ SSNs.  These arguments are YEARS old.  Isn't this Data
Modelling 101?  I know for sure this exact case is in every text i've read.
How to deal with Natural keys:
- Create a surrogate PK that the user never sees but guarantees uniqueness.
- Create a separate (unique if you can) index on your natural key.
- Go on with life.
I'm a bit more concerned about what i'm hearing about Sequences. Is it true
that sequences are NOT guaranteed to be unique??  After all
this time listening to Oracle people scoff at the Sybase/Ms Sql identity
feature and its inadequacies as compared to Sequences for generating
sequential surrogate keys  they're NOT guaranteed to be unique if
you're
working in a parallel processing environment??
Is this really true?  Do Oracle developers have to depend on
circa 1990 techniques to generate something as BASIC as a surrogate key by
designing their own little lookup table systems?  Or am I just reading this
thread incorrectly?
Todd

 I'm fully convinced. SSN should not be used as a PK.

 Can we also conclude that natural keys in general are only good if you
sit in
 an ivory tower and do unrealistic lab test?

 Yong Huang

 --- Bellow, Bambi [EMAIL PROTECTED] wrote:
  Having worked for the government in a situation where we were
actually
  tracking information BY Social Security Number, let me tell you the
problems
  with it.
 
  1)  Social Security Numbers ARE NOT GUARANTEED TO BE UNIQUE
  2)  Individuals ARE NOT GUARANTEED TO HAVE ONE AND ONLY ONE Social
Security
  Number
  3)  Not all Social Security Numbers are numeric
  4)  Not all Social Security Numbers which ARE numeric are 9
characters in
  length
  5)  Social Security Numbers can be changed by the holder
  6)  It is illegal to use the Social Security Number for any purpose
other
  than that which the government specifically uses Social Security
Numbers for
  (ie., the distribution of benefits).  I'll bet *that* one is
strictly
  enforced.
 
  HTH,
  Bambi.
 
  -Original Message-
  Sent: Wednesday, November 05, 2003 8:00 AM
  To: Multiple recipients of list ORACLE-L
 
 
  Tom,
 
  I think using a natural key such as Soc. Sec. # as the primary key
is a good
  idea. You don't need to maintain the sequence so there's no
performance
  issue
  associated with sequences. There's no issue of gaps. No index root
block
  contention. It doesn't seem to be industry common practice though.
 

Re: Sequences CYCLEing -- was RE: How do you genrate primary

2003-11-09 Thread Stephane Faroult
Hemant K Chitale wrote:
 
 So, let's start another thread.
 
 How many of you have actually seen Sequences implemented in the manner I
 described
 and Mladen demonstrated below ?
 
 Hemant
 

What I have seen used are non-cycling sequences which are forced to
cycle - the idea is to restart the numbering from 1 everyday. So,
everyday at midnight the sequences are ALTERed so that their maximum is
today's maximum, and they are forced to return to 1 - before making them
NOCYCLE again. The big advantage on dropping and recreating them is that
existing privileges stay in place and you don't have to GRANT SELECT to
everybody ...

-- 
Regards,

Stephane Faroult
Oriole Software
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Stephane Faroult
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).


Re: Sequences CYCLEing -- was RE: How do you genrate primary

2003-11-09 Thread Carel-Jan Engel


I've seen several of them on projects I worked on: People converted older
data-models - if model is the right name ;-) - and stuck to the
small key-fields they had.
One particlaur example got a nice :-( algorithm replaced by this nice
lick Oracle feature called 'sequence'. Of course increasing marketing
success caused an increasing need for unique keys, causing exact the
cycling problem described. 
Lesson learned: make a calculation in advance: Most of the time 9 digits
will do the job: it will let you generate 1 key per second, 86400 seconds
a day, 11574 days. This is approx. 31 years and 8 months, and that migh
be sufficient. If not, simply add some extra digits. Just get some proof
that your choise is right!
Of course this will not work out when you insert 6000 rows per second,
all day long, but then you might have other problems ;-).
It's amazing how people (calling themself programmers) are putting
together some code, without any idea of some future behaviour of their
code!
(I remember some Y2K problem a few years ago. I hate to say this, but all
my code, as from where I started working in IT back in 1982) was Y2K
proof. However, I must admit, my older C-code won't survive the next
'millenium'-problem, when the unix-date-format can't follow the 'seconds
+ 01-01-1970' format. Maybe 64-bit compilers will resolve that
problem. But, mark my words ;-) there will be some concern,
dataconversion and other familiar stuff which will us, elderly and bitter
software veterans give some deja-vu feelings right then!

Carel-Jan

At 07:04 9-11-03 -0800, you wrote:
So, let's start another
thread.
How many of you have actually seen Sequences implemented in the manner I
described
and Mladen demonstrated below ?
Hemant



DBA!ert,
Independent Oracle Consultancy 
Kastanjelaan 61C
2743 BX Waddinxveen
The Netherlands
tel. +31 (0) 182 640 428
fax +31 (0) 182 640 429
mobile+31 (0) 653 911 950
e-mail [EMAIL PROTECTED]





Re[2]: Sequences CYCLEing -- was RE: How do you genrate primary

2003-11-09 Thread Jonathan Gennick
Sunday, November 9, 2003, 10:44:25 AM, Stephane Faroult ([EMAIL PROTECTED]) wrote:
SF The big advantage on dropping and recreating them is that
SF existing privileges stay in place and you don't have to GRANT SELECT to
SF everybody ...

Yeah, I wrote a script one to let me adjust sequences in the
manner you've just described. I should try and dig that up,
though I think it's long-lost.

Best regards,

Jonathan Gennick --- Brighten the corner where you are
http://Gennick.com * 906.387.1698 * mailto:[EMAIL PROTECTED]

Join the Oracle-article list and receive one
article on Oracle technologies per month by 
email. To join, visit http://four.pairlist.net/mailman/listinfo/oracle-article, 
or send email to [EMAIL PROTECTED] and 
include the word subscribe in either the subject or body.

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Jonathan Gennick
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).


Sequences CYCLEing -- was RE: How do you genrate primary keys?

2003-11-08 Thread Hemant K Chitale
Ah yes.  The exception case when sequence numbers are not unique.

Believe me, I've seen Sequences with low MAXVALUE [the guy decided that the
the number would never exceed 4 digits and didn't want to waste resources 
and space].

And I do vaguely remember that I HAVE seen a Sequence CYCLE over and
restart.  Can't remember the details, though  this was many years ago.
It takes all kinds of developers and database designers to make Oracle 
interesting.

Hemant
At 03:29 PM 05-11-03 -0800, you wrote:
In theory I suppose it's possible to have overlaps, but this has nothing to
do with OPS/RAC.  If you create the sequence to CYCLE (not the default) AND
set MAXVALUE to something less than reasonable (the default is NOMAXVALUE
which IIRC means 10 to the power 27) AND don't create a unique index on the
column storing the sequence, then maybe you can end up with multiple rows
having the same value?  Never heard of anyone doing that, of course, but in
theory ...
Pete
Controlling developers is like herding cats.
Kevin Loney, Oracle DBA Handbook
Oh no, it's not.  It's much harder than that!
Bruce Pihlamae, long-term Oracle DBA


-Original Message-
Millsap
Sent: Thursday, November 06, 2003 7:34 AM
To: Multiple recipients of list ORACLE-L
I've never heard of an Oracle sequence not generating unique id's, OPS/RAC
or not. Gaps, yes. Overlaps, never.
Cary Millsap
Hotsos Enterprises, Ltd.
http://www.hotsos.com
Upcoming events:
- Performance Diagnosis 101: 11/19 Sydney
- SQL Optimization 101: 12/8-12 Dallas
- Hotsos Symposium 2004: March 7-10 Dallas
- Visit www.hotsos.com for schedule details...
-Original Message-
Todd Boss
Sent: Wednesday, November 05, 2003 1:09 PM
To: Multiple recipients of list ORACLE-L
There's six very good reasons listed below to NOT use SSN as your unique PK,
and honestly I can't believe this is STILL an issue for any dba
who deals w/ SSNs.  These arguments are YEARS old.  Isn't this Data
Modelling 101?  I know for sure this exact case is in every text i've read.
How to deal with Natural keys:
- Create a surrogate PK that the user never sees but guarantees uniqueness.
- Create a separate (unique if you can) index on your natural key.
- Go on with life.
I'm a bit more concerned about what i'm hearing about Sequences. Is it true
that sequences are NOT guaranteed to be unique??  After all
this time listening to Oracle people scoff at the Sybase/Ms Sql identity
feature and its inadequacies as compared to Sequences for generating
sequential surrogate keys  they're NOT guaranteed to be unique if you're
working in a parallel processing environment??
Is this really true?  Do Oracle developers have to depend on
circa 1990 techniques to generate something as BASIC as a surrogate key by
designing their own little lookup table systems?  Or am I just reading this
thread incorrectly?
Todd


 I'm fully convinced. SSN should not be used as a PK.

 Can we also conclude that natural keys in general are only good if you
sit in
 an ivory tower and do unrealistic lab test?

 Yong Huang

 --- Bellow, Bambi [EMAIL PROTECTED] wrote:
  Having worked for the government in a situation where we were
actually
  tracking information BY Social Security Number, let me tell you the
problems
  with it.
 
  1)  Social Security Numbers ARE NOT GUARANTEED TO BE UNIQUE
  2)  Individuals ARE NOT GUARANTEED TO HAVE ONE AND ONLY ONE Social
Security
  Number
  3)  Not all Social Security Numbers are numeric
  4)  Not all Social Security Numbers which ARE numeric are 9
characters in
  length
  5)  Social Security Numbers can be changed by the holder
  6)  It is illegal to use the Social Security Number for any purpose
other
  than that which the government specifically uses Social Security
Numbers for
  (ie., the distribution of benefits).  I'll bet *that* one is
strictly
  enforced.
 
  HTH,
  Bambi.
 
  -Original Message-
  Sent: Wednesday, November 05, 2003 8:00 AM
  To: Multiple recipients of list ORACLE-L
 
 
  Tom,
 
  I think using a natural key such as Soc. Sec. # as the primary key
is a good
  idea. You don't need to maintain the sequence so there's no
performance
  issue
  associated with sequences. There's no issue of gaps. No index root
block
  contention. It doesn't seem to be industry common practice though.
 
  In your college student case, changing primary keys is rare so it's
not a
  big
  problem.
 
  Yong Huang
 
  --- Mercadante, Thomas F [EMAIL PROTECTED] wrote:
   Jonathan,
  
   I think your idea of a paper is a good one.  But I think we need
to back
  th
   question up to what the requirements are.
  
   First, to me, a primary key should not be something that a user
would ever
   see or use.  So the Soc. Sec. # is out. (A side issue - I used to
work at
  a
   college.  Want to know how many times we had to change the Soc.
for an
   individual student because the parent filled the form out and used
their
   soc, or the kid used the wrong one?).  Any id entered by a user is
subject
   to 

Re: Sequences CYCLEing -- was RE: How do you genrate primary keys?

2003-11-08 Thread Mladen Gogala
Being sort of DBA Doubting Tom, I have a bad habit of trying and testing  
stuff.  Here is what happens with sequences:

SQL create sequence test1 start with 1 maxvalue 4 cycle nocache;

Sequence created.

SQL select test1.nextval from dual
 2  /
  NEXTVAL
--
1
SQL /

  NEXTVAL
--
2
SQL /

  NEXTVAL
--
3
SQL /

  NEXTVAL
--
4
SQL /

  NEXTVAL
--
1
SQL /

  NEXTVAL
--
2
SQL

On 2003.11.08 10:54, Hemant K Chitale wrote:
Ah yes.  The exception case when sequence numbers are not unique.

Believe me, I've seen Sequences with low MAXVALUE [the guy decided that the
the number would never exceed 4 digits and didn't want to waste resources  
and space].

And I do vaguely remember that I HAVE seen a Sequence CYCLE over and
restart.  Can't remember the details, though  this was many years ago.
It takes all kinds of developers and database designers to make Oracle  
interesting.

Hemant
At 03:29 PM 05-11-03 -0800, you wrote:
In theory I suppose it's possible to have overlaps, but this has nothing to
do with OPS/RAC.  If you create the sequence to CYCLE (not the default) AND
set MAXVALUE to something less than reasonable (the default is NOMAXVALUE
which IIRC means 10 to the power 27) AND don't create a unique index on the
column storing the sequence, then maybe you can end up with multiple rows
having the same value?  Never heard of anyone doing that, of course, but in
theory ...
Pete
Controlling developers is like herding cats.
Kevin Loney, Oracle DBA Handbook
Oh no, it's not.  It's much harder than that!
Bruce Pihlamae, long-term Oracle DBA


-Original Message-
Millsap
Sent: Thursday, November 06, 2003 7:34 AM
To: Multiple recipients of list ORACLE-L
I've never heard of an Oracle sequence not generating unique id's, OPS/RAC
or not. Gaps, yes. Overlaps, never.
Cary Millsap
Hotsos Enterprises, Ltd.
http://www.hotsos.com
Upcoming events:
- Performance Diagnosis 101: 11/19 Sydney
- SQL Optimization 101: 12/8-12 Dallas
- Hotsos Symposium 2004: March 7-10 Dallas
- Visit www.hotsos.com for schedule details...
-Original Message-
Todd Boss
Sent: Wednesday, November 05, 2003 1:09 PM
To: Multiple recipients of list ORACLE-L
There's six very good reasons listed below to NOT use SSN as your unique  
PK,
and honestly I can't believe this is STILL an issue for any dba
who deals w/ SSNs.  These arguments are YEARS old.  Isn't this Data
Modelling 101?  I know for sure this exact case is in every text i've read.

How to deal with Natural keys:
- Create a surrogate PK that the user never sees but guarantees uniqueness.
- Create a separate (unique if you can) index on your natural key.
- Go on with life.
I'm a bit more concerned about what i'm hearing about Sequences. Is it true
that sequences are NOT guaranteed to be unique??  After all
this time listening to Oracle people scoff at the Sybase/Ms Sql identity
feature and its inadequacies as compared to Sequences for generating
sequential surrogate keys  they're NOT guaranteed to be unique if  
you're
working in a parallel processing environment??

Is this really true?  Do Oracle developers have to depend on
circa 1990 techniques to generate something as BASIC as a surrogate key by
designing their own little lookup table systems?  Or am I just reading this
thread incorrectly?
Todd


 I'm fully convinced. SSN should not be used as a PK.

 Can we also conclude that natural keys in general are only good if you
sit in
 an ivory tower and do unrealistic lab test?

 Yong Huang

 --- Bellow, Bambi [EMAIL PROTECTED] wrote:
  Having worked for the government in a situation where we were
actually
  tracking information BY Social Security Number, let me tell you the
problems
  with it.
 
  1)  Social Security Numbers ARE NOT GUARANTEED TO BE UNIQUE
  2)  Individuals ARE NOT GUARANTEED TO HAVE ONE AND ONLY ONE Social
Security
  Number
  3)  Not all Social Security Numbers are numeric
  4)  Not all Social Security Numbers which ARE numeric are 9
characters in
  length
  5)  Social Security Numbers can be changed by the holder
  6)  It is illegal to use the Social Security Number for any purpose
other
  than that which the government specifically uses Social Security
Numbers for
  (ie., the distribution of benefits).  I'll bet *that* one is
strictly
  enforced.
 
  HTH,
  Bambi.
 
  -Original Message-
  Sent: Wednesday, November 05, 2003 8:00 AM
  To: Multiple recipients of list ORACLE-L
 
 
  Tom,
 
  I think using a natural key such as Soc. Sec. # as the primary key
is a good
  idea. You don't need to maintain the sequence so there's no
performance
  issue
  associated with sequences. There's no issue of gaps. No index root
block
  contention. It doesn't seem to be industry common practice though.
 
  In your college student case, changing primary keys is rare so it's
not a
  big
  problem.
 
  Yong Huang
 
  --- Mercadante, Thomas F [EMAIL PROTECTED] wrote:
   Jonathan,