일단 질문 본문 싸지르기전에 어떤 툴인지 설명좀 할게


작년에 어디 프로젝트를 나갔는데


해당 프로젝트 내에선 오라클을 쓰고있고 본사 유지보수 해줘야될 서버는 MS-SQL이고


프로젝트 내에서 PDA를 사용해서 연동을 하는데 PDA는 MDB를 쓰는데


이걸 씨발 SQL 매니져먼트랑 토드랑 MS ACCESS랑 다켜두고 하려니 미치겠는거야



존나 화딱지 나서 이걸 한방에 다 쓰는 툴은 없을까?



하다가 씨발 좆같은데 없으면 만들어서 쓰지 뭐 하면서 툴을 하나 만들었어


PDA개발할때 졸라 유용하게 쓰다가 필요할때마다 기능을 하나씩 추가해서 쓰고 있거든


추가된 기능이 일단

1. 기본 쿼리 수행 / 결과 보여주기

관리툴이니 이건 기본중에 기능인거고

2. 디비 골라 쓰기 / 현재 지원하는게 오라클은 9i이하까지만이고 SQLITE랑 MS-SQL은 버전에 관계없이 다되고 MDB까진 구현해뒀는데 쓰질 않아서 잘 돌아가는진 몰겠다. 현재는 하나만 로그인해서 쓰게 막아뒀어
오라클 10g 이상은 써글 구해놓은 DLL이 라이센스를 요구하는 코드가 있더라 뜯어서 제거하고 구현하던가 다른 DLL 참조해서 구현할 예정이야

3. 전체 사용자 대상으로 특정테이블을 검색해서 그 테이블에 특정 쿼리를 가하는것

(뭐 컬럼 추가나 삭제나 혹은 전체 사용자 대상으로 특정테이블 드롭이나 등등)

작년 연말정산 프로그램 짜는데 모든 사용자들의 테이블에 컬럼을 추가해줘야 되는데 씨발 업체가 500개가 넘는거야


그걸 언제 디비마다 로그인하거나 쿼리수정해서 사용자명 찾고 매핑해서 컬럼을 추가해? 아오 짱나 하다가 걍 만들자 해서 만들었더니


2시간만에 끝나더라구, 그래서 추가했던 기능이고


4.테이블 복제

이건 만들다 말았는데

특정업체는 오라클인데 이걸 다른 ms-sql서버에 똑같이 테이블이랑 데이터를 만들어줘야해

흔히 실제 쓰고있는 디비 데이터를 다른 디비로 옮기는 데이터 컨버전 작업중 하나인데

왜 개발자한테 이걸 시켰는지 짜증나서리....참 어쨌든 만들어야겠구나 했어


헐? 씨발 그런데 특정 테이블은 다 옮기는것도 아니고 웨어절 쓴것처럼 특정 데이터만 옮기라네?


아놔 좆 되따...했는데 걍 만드니까 만들던 툴이 생각나서 걍 기능 추가했어, 되드라


동시에 2개의 디비 로그인해서 한쪽 디비불러오고 원하는 데이터 선택하거나 쿼리로 웨어절 주고 이동시키고 커밋시키면 적용 되는 형식이야


그런데 이것도 현재 한번쓰고 막아둔 기능이야


여튼 뭐 이런저런 기능들을 달고있는데

여기서 질문 2가지



특정 디비에 있는 모든 테이블중에 특정 컬럼이 몇개나 존재 하는지와

그 컬럼에 특정데이터가 몇개나 들어있는지 알아내는 탭을 구현하려고 해

실제로 구현했고 정상 동작되는걸 확인했어

예를들어 ms-sql 특정 서버에 테이블 뭐 이름 이것저것 있는게 천개가량 되는데

갑자기 전체테이블 상대로 특정 컬럼명에 특정값이 있는걸 전부 찾아야 된다는거야


그래서 기능을 구현햇지

검색할 디비를 지정하고 검색할 컬럼명을 입력하고 검색을 누르면 조회를 싹 해서 쿼리편집기 창에 어느테이블에 어떤 컬럼이 존재하는지 알려주고

거기에 조건을 값 입력해주면 그 컬럼에 몇개나 해당값을 가지고있는지 보여줘

그런데 오라클 내가 뭔가 로직을 잘못 썼는지

이게 전체 테이블 전체 컬럼 대상으로 검색하면서 데이터리스트를 뽑아내다 말고 데드락에 걸리는경우가 있더라구

전체 테이블 대상이니까 인덱스 라던가 그런거에 따라서 그런 문제가 발생할 가능성은 있는데 유력한 가능성을 생각하자면

혹시 디비 트렌젝션이 동시에 여러번 걸리는것 때문에 문제가 발생하지 않을까 하는 생각을 하게됬어

그래서 디비 연결메소드가 있는 코어 부분을 수정했지

중간에 뻑날경우 혹시 모르니 입셉션 부분에 롤백트렌젝션 걸어주고

정상적으로 다 돌고나서 커밋을 때리게 해뒀어

셀렉트만 하는게 아니라 ALTER를 쓰는경우도 할수 있게

이러니까 매번 루프 돌면서 테이블 검색하는것보다 몇배는 빨라졌는데 데드락은 한두번 하다보면 여전히 걸리더라

뭔가 해결책 없을까?











두번째로

너네가 디비툴을 만든다면 여기에 어떤기능이 더 추가되면 좋을까?

존나 심플하지 질문?