아래의 오류는 읽고자하는 행에 lock이 걸려있을 경우
발생하는 오류입니다. 즉 누군가가 UPDATE를 하고 있다는 것이죠.
인포믹스는 테이블에 3가지 형태의 lock들 지원합니다.
1. row lock
2. page lock(이것이 기본입니다.)
3. table lock
만약 테이블을 그냥 create table을 사용하여 옵션을 주지않고
만들었다면 2번의 lock mode를 사용합니다.
3번의 경우는 프로그램에서 직접 테이블에 걸경우에만
되고요.
create table test (
a integer
) lock mode row;
형태로 테이블을 생성하거나
alter table test lock mode row;
로 변경을 하면됩니다. 서로다른 row를 검색하더라도
페이지 lock의 경우 인접한 행은 lock이 걸릴수 있습니다.
그렇다고 페이지 lock이 무조건 나쁜것은 아닙니다.
서로 장단점이 있죠... page lock은 lock리소스를 적게 사용하고
검색이 빠르다는 장점이 있고, row lock은 서로간의 간섭이
적은 반면 위의 장점이 단점이되죠...
다중사용자 환경에서 인포믹스는 lock된 행또는 페이지에 대하여
3가지 형태의 action을 정의할 수 있습니다.
1. 무조건 기다린다.
2. 일정시간동안 기다리다 그래도 locking되어 있으면 오류를 반환한다.
3. 아래와 같이 오류를 반환한다.
기본적으로 3번으로 행동을 하고 이를 바꿀 수 있습니다.
명령어는
SET LOCK MODE TO WAIT [초];
뒤에 초를 주면 그만큼만 기다리고 안줄경우 영원히~~~
SET LOCK MODE TO NOWAIT;
을 주면 안기다리고 오류를 반환합니다.
주로 웹상에서 사용할 경우는
SET LOCK MODE TO WAIT 60;
정도로 설정을 하면 무난합니다. LOAD가 엄청 걸리면
시간을 더 늘려야 겠죠 ?
흠~ 도움이 되기를...
> *1: 다음과 같은 에러가 요즘 자주 발생합니다.
> *2:
> *3: Warning: Open cursor fails (E [SQLSTATE=IX 000 SQLCODE=-244]) i
> n /home/guideclu
> *4: b/html/core/review_v6
> *5: Could not do a physical-order read to fetch next row.
> *6:
> *7: 흠. 무슨 에러이죠?
> *8:
> *9: 인포믹스 사이트에 가봤더니
> *10:
> *11: 위의 에러는
> *12:
> *13: 하드웨어의 문제일 수도 있ㄷ고 하네요
> *14:
> *15: 무슨 유틸리티로 인테그래티를 체크해보라고 하ㅡㄴ데
> *16:
> *17: 어떻게 해야 하는지 알아야죠 -.-
> *18:
> *19: 회사에서는 왜 인포믹스를 서러리 -.-
> *20:
> *21: 혹시 같은 문제를 해결하신 분 계시면 좀 알려주세요~~~
> *22: .
>
|