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 2621 게시물 읽기
No. 2621
syslogs질문드려요~
작성자
지나가던
작성일
2009-06-03 20:15ⓒ
2009-06-03 22:16ⓜ
조회수
8,331

안녕하세요~ 


궁금한점이 있어 질문 올립니다...... 


BCP로 백업 받은 데이터를 BCP IN 작업을 하는데요.... 


5G log생성했었구요.... BCP IN 했더니 syslogs full나더라구요.. 


그래서 총 log 15GB 맹글어 주고 지금 돌리고 있습니다... 


근데 row수가 29867529 되는데[용량은 약5.5G정도됨]...... syslogs이렇게 많이 쓰이는게 맞나요?



잘 모르는 초보 인데... 궁금해서 올려 봅니다.. 혹시 뭔가 잘못되어 있는지... 


답변 부탁 드려요~ 




* 참고:  DAT 는 35G 이구요 LOG 는 15G


-------------------------------------------------------------------------------


BCP IN 돌린것 확인 했는데 또 syslogs full 났네요.... 음.. LOG를 15G나 해줬는데..... 


왜그럴까요.... 이것보다 작은건 잘 돌아갔는데.. 

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

BCP 동작 모드는 2가지가 있습니다.

 

SLOW : 인덱스와 트리거가 Active 상태에서 BCP in 이 되는 경우

FAST : 인덱스(Pkey constraint 포함)가 없고,

트리거가 Active 상태가 아니거나 없는 상태에서 BCP in경우

 

FAST 모드로 동작할 때는 syslog 공간을 거의 사용하지 않습니다.

 

아무래도 SLOW 모드로 BCP 작업을 하셨던것 같네요.

 

굳이 SLOW BCP로 시간이 오래걸리긴 하지만, 밀어 붙이신다면,

DB에 truncate log on checkpoint 옵션을 걸어 주시고,

BCP in 스크립트에 -b rowcount 를 추가하면 rowcount 만큼 입력될 때마다 commit을 수행하여 강제적으로 checkpoint가 발생됩니다.

 

 

예를 들어 10000건 데이타를 테이블에 넣는다고 가정할 때,

1) -b 옵션이 없거나 -b 가 있어도 rowcount 가 명시되어 있지 않으면

단일 트랜잭션으로 처리가 되어 SLOW BCP로 동작할 때에는 10000건에 대한 insert 내역이 syslogs에 남게 됩니다.

 

2) -b 1000 이라고 하면, 1000건 입력하고 commit. 다음 1000건 입력하고 commit. 이런식으로 중간중간에 commit을 강제적으로 일으켜서,

1000 row 씩 10개의 트랜잭션으로 나눠서 처리하도록 해줍니다.

 

 

채연파파님이 2009-06-04 09:56에 작성한 댓글입니다.
이 댓글은 2009-06-04 09:57에 마지막으로 수정되었습니다. Edit

답변감사 함니다.... ^^


아~ 그리고 BCP IN 하는 Table은 새로 만든것으로 안에 아무것도 없는 곳에 넣구 있습니다.



확인해 보았는데요.. 옵션 Truncate log on checkpoint 는 되어 있구용... 



음.. Log 가 10G 였을때두... 


Row수가 총 29867529 인데 29867000에 걸렸었어요... syslogs full이라공..



근데 15G 증설 후에두.. 오늘 와서 확인 해보니 row  29867000 에 똑같이 그렇게 에러가 났더라구요.. 


같은 테이블인데..... 혹시 다른 문제가 있는걸까요..... ~.,~


BCP IN 되다가 이렇게... 나와용.

Server Message: GENE - Msg 7412, Level 10, State 2:

Space available in the log segment has fallen critically low in database 'xxx_DB'.  All future modifications to this database will be aborted until the log is successfully dumped and space becomes available.

Server Message: GENE - Msg 1105, Level 17, State 4:

Can't allocate space for object 'syslogs' in database 'xxx_DB' because 'logsegment' segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE to increase the size of the segment.



지나가던님이 2009-06-04 10:59에 작성한 댓글입니다.
이 댓글은 2009-06-04 11:20에 마지막으로 수정되었습니다. Edit

BCP IN 할 때 로그 Full 이발생한다는 건

테이블이 비어 있던 비어있지 않던간에

index 나 트리거가 있다는 얘기구요.

 

index 나 트리거가 있다면,

-b 옵션을 써보시는게 좋을 것 같네요.

 

에러 로그 상으로의 다른 문제점은 없어 보입니다.

 

 

채연파파님이 2009-06-04 19:10에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
2650Sybase Server Name ODBC 연결 !? [1]
송경훈
2009-06-05
11971
2633isolation 관련 질문 한개 더 올려봅니다. [1]
전현욱
2009-06-04
7745
2623isolation level 설정에 관한 질문입니다. [1]
전현욱
2009-06-04
7878
2621syslogs질문드려요~ [3]
지나가던
2009-06-03
8331
2553DB 오픈이 안돼네요 고수님들 도와 주세요 <<급>>
박현수
2009-05-28
6925
2481질문있습니다~ number(*) over(partition by ***) 관련
브미
2009-05-14
9278
2480Sybase Msg 953에 관하여 문의 드립니다. [1]
조상훈
2009-05-13
7172
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.053초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다