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

    이거 해결할 수 없나요?


  1. SQLGate for CUBRID 영구 무료 라이선스 제공

  2. No Image 30Mar
    by 님장사드리브큐
    2017/03/30 by 님장사드리브큐
    Views 8245  Replies 2

    Tibero -> Cubrid 마이그레이션 질문입니다.

  3. This object is in a zombie state 인 경우

  4. This object is in a zombie state 오류발생 도와주세요 ㅠㅠ

  5. This may take a long time depending on the amount of recovery works to do.?

  6. The size of data received from server is different from the expected

  7. The column name is invalid. 에러메시지 좀...

  8. Table 및 column에 대한 description은 제공을 안하나요?

  9. Table 및 Index 가 사용하고 크기를 알수 있는 방법을 알려 주세요

  10. Table 및 Column Comment 작성

  11. Table primary key잡는 중 중단 시키고, 서버 재시작하니 에러나고 시작이 안되네요.

  12. Table doesn't exist 에러..

  13. Table Drop, truncate 시 시간이 너무 오래 걸립니다.

  14. Table Drop 후 데이터 볼륨 Size 에 변동이 없네요.

  15. TO_DATETIME 함수 문의 드립니다.

  16. TO_CHAR 관련 질문입니다.

  17. TIMEZONE 질문

  18. TIMESTAMP 형 data를 insert 하는 sql문이 궁금합니다.

  19. TIME 포맷 관련 질문 입니다.

  20. System.Data.OleDb.OleDbException (0x80004005): Cannot communicate with server 오류

  21. Sum 에서 Overflow occurred in addition context 발생

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