Background Image

FORUM

조회 수 14626 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID를 사용해 보시기 바랍니다!!! file admin 2019.07.31 383
133 CCI API로 DB Insert 구현 시 JDBC 구현에 비해 속도가 떨어지는 문제 2 nimbus89 2012.08.17 7923
132 CCI API가 Thread Safe 한가요? 3 nimbus89 2012.09.04 7249
131 CCI API 에서 LNK 2019문제가 계속 발생합니다 1 poipoi 2014.05.22 10551
130 CCI API 에서 IRowset 기능 1 David Kang 2009.08.24 8067
129 CCI API 에서 #pragma pack(push,1) 오류 2 David Kang 2009.08.25 10507
128 C/C++ 지원하는 Connection Pool API 는 없나요? 2 tekkal 2009.02.03 20853
127 C-API 접속 관련 CUBRID 2008 R4.3 버전에서 변경사항이 있는지 질문입니다. 2 Psionic 2012.12.12 7385
126 C-API 매뉴얼 위치요? 1 그래너 2010.01.11 9834
125 C++(MFC 아님)에서 프로그래밍 작성을 하려면 어떤것을 사용해야 하나요? 6 나동호 2009.03.24 19923
124 C++ Embedded SQL에서 호스트 변수로 클래스 데이터 선언 가능 여부 문의 1 리겔 2012.04.20 9905
123 C#에서 한글컬럼명이 깨지는 증상 4 미르 2013.11.05 19168
122 C#에서 ODBC연결시 에러 1 용이 2009.11.15 31632
121 C# ole db 연동 오류 어떻게 해야 할지 조언 부탁 드립니다. 4 배나와사마 2013.02.28 14900
120 C# WPF Dataset 연결시 외래키 자동 연결 안됨. 1 moon 2014.07.11 9814
119 C# ADO.NET 이용했을떄 문제 1 보람이 2017.04.14 8032
118 Broker 에러가 자주 납니다. 1 아르게네스 2010.11.17 7287
117 Broker log 에 start 만 찍히는건 어떤 현상인가요 3 노스 2010.08.24 9076
» BeginTrans 상태에서 검색 시 응답없음 발생 7 까망이 2011.04.22 14626
115 BLOB에 대한 자바 타입변환 문제.. 1 file ㅇㅇ 2013.01.28 9898
114 BLOB 타입 이미지를 JSP로 웹에 뿌려주려면 어떻게 해야하나요? 1 아워나 2014.07.07 14048
Board Pagination Prev 1 ... 143 144 145 146 147 148 149 150 151 152 ... 154 Next
/ 154

Contact Cubrid

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