Background Image

FORUM

조회 수 14738 추천 수 0 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

다름아니라 BeginTrans 상태에서 해당테이블이 검색이 안되는 증상을 발견했습니다.

 

VB6으로 Microsoft ActiveX Data Object 2.8 Library를 참조해서 CUBRID를 검색하는 실행파일(Serch.exe)과,

 

등록하는 실행파일(Insert.exe)을 만들었습니다.

 

등록화면에 BeginTrans  걸어놓고 1초마다 하나의 데이터를 등록하게 해 놓고 총 100개의 데이터를 입력한뒤 CommitTrans 하게 코딩했습니다.

 

문제는 BeginTrans 중에는 검색이 안됩니다. (응답없음)

 

CommitTrans 한 후에는 검색이 됩니다.

 

하지만 CUBRID Manager 에서는 트렌젝션 걸려있는 상태에서 검색이 되요~

 

혹시 몰라 CUBRID말고도 다른 것도 그런가 하고 Access MDB파일로도 실험을 해본결과 정상작동합니다.

 

왠지 락걸린거같아요!

 

이 문제좀 살펴주세요.

 

업체에 나간 프로그램은 파일 전송이 완료되면 Commit 하게 되있거든요.

등록하는 도중에 검색하면 프로그램이 다운된다고 합니다.

 

  • ?
    남재우 2011.04.27 23:11

    안녕하세요. 답변이 늦어서 죄송합니다.

    데이터 입력 상황에 대하여 락 문제로 생각됩니다만, 정확한 내용은 몇가지 로그를 확인해봐야 할 것 같습니다.

    일단 CUBRID home 디렉토리 아래 log/broker/sql_log 아래의 내용을 모두 다른 디렉토리로 잠시 옮겨놓은 후,

    상황을 발생시키고 cubrid lockdb -o lockdb.log <DB명> 을 수행하여 lockdb.log 화일을 올려주시고요, 또한 위 sql_log 디렉토리에 생성된 *.sql.log 화일을 같이 올려주시면 원인을 파악해 보도록 하겠습니다.

    비밀글로 올려주셔도 됩니다.

  • ?
    ggamangy 2011.04.28 00:50 SECRET

    "비밀글입니다."

  • ?
    남재우 2011.04.28 19:52

    ma_usrm 테이블에 대한 update 작업으로 인하여 write lock 이 선점되어 검색시 대기하는 상황입니다. 지금 보니 락레벨을 올리셔서 발생하는 문제이고 기본 레벨로 하시면 해당 문제는 발생하지 않습니다.

  • ?
    ggamangy 2011.04.29 19:16 Files첨부 (1)

    락레벨은 어디에서 설정하나요?

    isolation_level="TRAN_REP_CLASS_UNCOMMIT_INSTANCE" 으로 하면 되는건지요

     

    <제가 참고하고 있는 메뉴얼 항목>

    http://cubrid.org/manual/ko/8.4.4/admin/config.html#lock-parameters

     

    위 항목의 기본값으로 했음에도 안됨니다.

    PC1

    PC2

    AdeConn.BeginTrans

    검색가능

    SQL = UPDATE 및 INSERT 쿼리

    AdeConn.Excute SQL

    검색안됨

    AdeConn.CommitTrans

    검색가능

  • ?
    남재우 2011.04.30 06:42

    lockdb 결과를 보면 lockdb level 이 올라가 있습니다. 응용프로그램에서 관련 api 를 통해 lock level 이 설정되는 것으로 보입니다.

    소스상에서 트랜잭션 처리시 lock level 설정 관련 조정이 되는지 확인해 보시는 것이 좋겠습니다.

  • ?

    별도로 Lock관련해서 넣은건 없습니다.

    아래는 제가 테스트해본 VB6 소스입니다.

     

    '[검색단 ]

    Option Explicit
    Private AdoSevCon                As ADODB.Connection         'AdoConnection 서버

     

    Private Sub Command1_Click()
    Dim sSql As String
    Dim rs As ADODB.Recordset

    sSql = " select * from history "
    Set rs = New ADODB.Recordset
    rs.Open sSql, AdoSevCon, adOpenKeyset, adLockReadOnly   '// 응답없음

    MsgBox rs.RecordCount

    End Sub

     

    Private Sub Form_Load()
    On Error Resume Next
    Const sDB_DATA As String = "demodb"
    Const sDB_IP As String = "LocalHost"
    Const sDB_ID As String = "dba"
    Const sDB_PW As String = ""
    Const sDB_PORT As String = "33000"

    Dim sCon As String
    sCon = "Provider = CUBRIDProvider;" & _
           "Data Source =" & sDB_DATA & ";" & _
           "Location =" & sDB_IP & ";" & _
           "User ID =" & sDB_ID & ";" & _
           "Password =" & sDB_PW & ";" & _
           "Port =" & sDB_PORT & ";" & _
           "Fetch Size =100;"
          
    Set AdoSevCon = New ADODB.Connection
    AdoSevCon.Open (sCon)


    If AdoSevCon.State <> adStateOpen Then
        Set AdoSevCon = Nothing
        MsgBox "DB 연결 실패", vbOKOnly, "프로그램 종료함"
        End
    End If
    End Sub

     

    Private Sub Form_Unload(Cancel As Integer)
    If Not (AdoSevCon Is Nothing) Then
        AdoSevCon.Close
        Set AdoSevCon = Nothing
    End If
    End Sub


     

    '[수정 및 입력단 ]

    Option Explicit
    Private AdoSevCon                As ADODB.Connection         'AdoConnection 서버

     

    Private Sub Command1_Click()
    Dim sSql As String

                 sSql = " Update history "
    sSql = sSql & " Set unit = 'time' "
    sSql = sSql & " Where event_code = 20263 "
    sSql = sSql & " And athlete = 'Phelps Michael' "

    '// 트랜잭션 시작

    AdoSevCon.BeginTrans
    AdoSevCon.Execute sSql
    Debug.print "이부분에 디버그를 걸어놓고 검색을 시도함"

    AdoSevCon.CommitTrans

    End Sub

     

    Private Sub Form_Load()
    On Error Resume Next
    Const sDB_DATA As String = "demodb"
    Const sDB_IP As String = "LocalHost"
    Const sDB_ID As String = "dba"
    Const sDB_PW As String = ""
    Const sDB_PORT As String = "33000"

    Dim sCon As String
    sCon = "Provider = CUBRIDProvider;" & _
           "Data Source =" & sDB_DATA & ";" & _
           "Location =" & sDB_IP & ";" & _
           "User ID =" & sDB_ID & ";" & _
           "Password =" & sDB_PW & ";" & _
           "Port =" & sDB_PORT & ";" & _
           "Fetch Size =100;"
          
    Set AdoSevCon = New ADODB.Connection
    AdoSevCon.Open (sCon)


    If AdoSevCon.State <> adStateOpen Then
        Set AdoSevCon = Nothing
        MsgBox "DB 연결 실패", vbOKOnly, "프로그램 종료함"
        End
    End If
    End Sub

     

    Private Sub Form_Unload(Cancel As Integer)
    If Not (AdoSevCon Is Nothing) Then
        AdoSevCon.Close
        Set AdoSevCon = Nothing
    End If
    End Sub

  • ?
    까망이 2011.05.09 20:01

    이거 해결할 수 없나요?


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 47
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1054 윈도우10에서 cubrid명령어 입력시 cubrid.exe 실행 1 킁미 2019.09.23 288
1053 윈도우7+iis(7.5)+php5+cubrid에 xe 설치 후에 초기하면에 빨간색 글들. 1 Hyuk-kwony 2009.12.26 20651
1052 윈도우7일때 로컬엔진으로 접속하면 에러납니다. 1 secret 어려운큐브 2014.07.17 9
1051 윈도우에 관리모드 localhost 접속 안 됩니다. 2 file 나무친구 2016.02.24 9463
1050 윈도우에 등록되는 서비스명 변경이 가능한가요? ^^ 2 노스 2010.11.08 10744
1049 윈도우에서 백업받은 DB를 리눅스 환경에서 복구 할수 있나요? 1 newbie 2009.10.03 12632
1048 윈도우용 PHP 7에서 사용할 수 있는 큐브리드 드라이버 제공 시점 문의 1 차오이 2015.12.06 8191
1047 윈도우용 python 드라이버 설치 오류 1 리치타이거 2023.01.18 82
1046 윈도우용 큐브리드 문의 1 zino 2012.03.13 6355
1045 유니크한 값 얻어오기 있나요? 2 이승훈 2009.03.19 13138
1044 유저생성 함수 반복 실행 시, fatal error발생 2 f0081 2023.11.09 105
1043 유져 권한에 대해 2 가루구 2010.11.16 8418
1042 윤년의 날짜 계산부분의 오류? 3 라면 2016.03.24 9856
1041 응답없음 현상 2 까망이 2011.01.24 9749
1040 이거... 뭐가 문제 일까요? 2 안지민 2011.11.18 27661
1039 이관데이터 CharSet문제 6 ITMan 2016.01.07 7049
1038 이관중 에러가 나왔는데 질문좀 드릴께요 1 덴드로비움 2017.07.06 413
1037 이기종간 DB Link 문의 드립니다. 6 kikiki767 2023.09.26 104
1036 이러한 오류가 뜨는 이유가 뭔가요? 1 UK 2020.11.13 151
1035 이런 형태의 테이블에는 데이터를 어떻게 삽입합니까? 1 푸훗 2012.06.25 5827
Board Pagination Prev 1 ... 143 144 145 146 147 148 149 150 151 152 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales