database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 2003 게시물 읽기
No. 2003
numeric identity 자동증가 값이너무 커졌습니다.
작성자
500조
작성일
2007-08-01 15:57
조회수
7,115

게시글을 찾아보니 저와 비슷한 경험으로 질문하신분이 있더군요..

저도 그분과 비슷하게 전 500조가 되는 넘버로 점프를 뛰었더군요..

서버상황도 비슷하게 퇴근했다가 출근하니 리스타트 되어있더군요.(리스타튼지.. 걍 죽었다 살은건지..)

답글을 보니 테이블생성시 gab을 준다고 하셨는대.. 이미 만들어져있는 테이블에서 증가값을 낮출 방법은 없나요?

해당 질문이 2004년도에 올라온 질문이었고 지금쯤 버전업이되서 해결방법이 혹시 생기지 않았을까해서 질문해 봅니다..

ASE12.5버전입니다.

이 글에 대한 댓글이 총 4건 있습니다.

해결 방법을 없고요...



그냥 bcp out/in하심이 젤 빠를것 같은데요ㅕ

지연님이 2007-08-02 10:47에 작성한 댓글입니다. Edit

매번 답변 감사합니다..

500조님이 2007-08-02 14:16에 작성한 댓글입니다. Edit
sp_chgattribute 테이블명, 'identity_burn_max', 0, 숫자
영빈~(backfish)님이 2007-08-02 15:35에 작성한 댓글입니다.

Identiy Burning 발생 이유

=============================================================================================


다중의 동시사용자 를 위한 high-performance 를 위한 메카니즘 때문

identity column counter 값이 Memory에서 관리되며 

ASE가 정상종료시 identity column counter 의 값을 해당 Table의 OAM Page에 기록하는 메카니즘.


따라서 ASE가 비정상 종료된다면 identity column counter 값을 해당 Table OAM Page에 기록하지

못한다.(정상 종료인 경우는 identity column counter 값을 해당 Table OAM Page에 기록함) 

비정상 종료후 ASE 재시작시 해당 Table의 OAM Page에 기록되어있는 identity column counter 값은

burnning 된 (ASE 가 시작시 다음 burnning 될값을 해당 Table의 OAM Page에 기록한다.)

 identity column counter값을 가지고 시작된다.


============================================================================================

현재 burnning 된 identity 값을 수정하는 방법


pre-12.5.0.3 : sybase가 권고하는 방법은 없음 (그러나 복잡하지만 할수는 있음)



단계1 .이미 burnning 된 identity column 값을 수정 (12.5.0.3+  에서 가능)


                   set identity_update table명 on

                   update table명

                   set identity컬럼명 = 원하는값

                   where identity컬럼명 = burnning된값

                   set identity_update table명 off


단계2 .identity column counter값을 조정  (12.5.1+ 에서가능)


         예: 현재 identity column counter가 500조 이고 위의 set identity_update 명령으로 

              burning 된 identity column을 수정완료후 다음부여될 identity column counter가 100 이라면

          

               sp_chgattribute 테이블명, 'identity_burn_max', 0, '100' 


           주의사항 : 100이 숫자값이지만 sp_chgattribute 명령어로 지정시 위의 예처럼 '100'로 해야함.

                          지정하려는 숫자값보다 큰 identity 값이 Table에 존재하지 않아야함 (당근)

                         가능하면 해당 Table에 exclusive Table lock 건후 작업할것 (작업중 해당 Table에insert 하면 단계1부터 다시해야 하므로)


=============================================================================================

향후 burnning 현상이 발생하지 않도록 조정 방법


                  sp_chgattribute 테이블명,'identity_gap',1


                  (identity column counter 가 변경될때마다 해당 Table의 OAM page에 identity column counter 값을 기록함 -- ASE에 추가적인 overhead발생)



             

대복님이 2007-08-03 15:40에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
2006(ASE,IQ) 유저별 테이블, 인덱스 현황 파악하려면... [2]
corba
2007-08-07
7859
2005디비import에 관해 [2]
디비
2007-08-02
5738
2004데이타베이스파일 import에 관해 [1]
사베
2007-08-02
5758
2003numeric identity 자동증가 값이너무 커졌습니다. [4]
500조
2007-08-01
7115
2002ASE 최신버전 .rmp 으로 된거.... [1]
초보
2007-08-01
5654
2001사이베이스 db파일 import에 관해서.. [2]
사베
2007-07-31
5973
2000데이터 갯수구하기 [1]
초짜
2007-07-31
5691
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다