본문 바로가기

분류 전체보기377

[오라클] Protocol Violation 1 / 2 출처 : http://blog.naver.com/PostView.nhn?blogId=gaggaii&logNo=140010526179 ​ 프로토콜 바이올레이션에 대한 자료가 별로 없어 자바 서비스넷의 글들과 제가 올린 답변을 한데 묶어 문서화합니다. ​ 발생원인 JDBC Thin 연결방식에서 많이 발생됩니다. 크게 3가지로 나눌수 있습니다. ​ ​ 첫째, Oracle JDBC Driver의 버젼 오라클 DBMS 버젼이 8.1.X 라면 오라클 JDBC Driver 버젼은 8.1.7.1 을 쓸 것을 권장합니다. 메이저 버젼은 일치시키고 마이너 버젼을 제일 최신의 것을 써주면 좋습니다. 무턱대고 Thin-Driver 9.0.1.0 버젼을 가져다 쓰면 안됩니다. ​ 둘째, JDBC Coding에 있어서.. 2023. 3. 7.
[MSSQL] DB LOCK 관련 SQL Server나 DB2의 경우는 Locking이 주요한 issue중의 한가지 입니다. 오라클은 Rollback Segment를 통해서 Before Image를 보여줄 수 있기 때문에 타 사용자가 해당 데이타를 DML 작업하고 있어도 SELECT lock이 필요없지만 타 DBMS(DB2, SQL Server)에서는 이전 image를 보여주지 못하므로 locking 상태로 대기하거나 현재 수정되고 있는 데이타를 uncommit 상태로 보여줄 수 밖에 없습니다. 물론 이는 transaction isolation level에 따라 결정됩니다. ​ SQL Server는 4가지 Transaction isolation level이 존재합니다. 이를 간단하게 설명드리면 READ UNCOMMITTED, READ C.. 2023. 3. 7.
[MSSQL] 특정 컬럼이 포함된 테이블 찾는 쿼리 SELECT T.name AS table_name, C.name AS column_name FROM sys.tables AS T INNER JOIN sys.columns AS C ON T.object_id = C.object_id WHERE C.name = '찾을컬럼명' ; ​ ​ 전체 컬럼 확인 쿼리 SELECT T.name AS table_name, C.name AS column_name FROM sys.tables AS T INNER JOIN sys.columns AS C ON T.object_id = C.object_id ; 2023. 3. 7.
[오라클] 스키마 내의 모든 테이블의 데이터 건수 조회 개발 완료 후, 운영 DB 서버로 데이터를 이관하는 경우, 데이터가 정상적으로 이관 되었는지 검증하기 위한 하나의 방법. [참고용] ​ 테이블명과 데이터 건수가 리스트 형태로 출력됨. ​ SELECT TABLE_NAME, TO_NUMBER( EXTRACTVALUE( XMLTYPE( DBMS_XMLGEN.GETXML( 'SELECT COUNT(*) C FROM '||TABLE_NAME)), '/ROWSET/ROW/C')) ROW_CNT FROM USER_TABLES ORDER BY TABLE_NAME; 2023. 3. 7.
[DB] 테이블 스키마 컬럼 정보 조회 쿼리 1. MSSQL 테이블 스키마 주요 정보 쿼리 SELECT A.TABLE_NAME AS 테이블명 , C.VALUE AS TABLE_COMMENT , A.COLUMN_NAME AS 컬럼명 , A.IS_NULLABLE AS 널여부 , A.DATA_TYPE AS 데이터타입 , A.CHARACTER_MAXIMUM_LENGTH AS 길이 , A.NUMERIC_PRECISION AS 숫자전체길이 , A.NUMERIC_SCALE AS 소수점이하길이 , A.COLUMN_DEFAULT , B.VALUE AS COLUM_COMMENT FROM INFORMATION_SCHEMA.COLUMNS A LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES B ON B.major_id = object_id(A.TA.. 2023. 3. 7.
[오라클] 락 정보 조회 쿼리 및 락 세션 KILL 1. 락 정보 조회 쿼리 1.1 SQL 정보 제외 SELECT VLO.OBJECT_ID , VLO.SESSION_ID , VS.SERIAL# , VLO.SESSION_ID || ',' || VS.SERIAL# AS LOCK_ID , VLO.ORACLE_USERNAME , VLO.OS_USER_NAME , DO.OBJECT_NAME , VS.PROGRAM , VS.STATE , VS.STATIS , DO.OBJECT_TYPE , DECODE(VLO.LOCKED_MODE, 1,'NULL', 2,'ROW-SHARE', 3,'ROW-EXCLUSIVE', 4,'SHARE', 5,'SHARE-ROW-EXCLU', 6,'EXCLU') AS LOCK_MODE , VS.SQL_ID FROM V$LOCKED_OBJECT .. 2023. 3. 7.
[SQLite] SQLite 의 모든 것 (1부) - 소개 및 FAQ 소개 http://sqlite.com - SQLite 는 독립적이고, 서버가 필요 없으며, 특별한 설정을 할 필요도 없는, 트렌젝션이 가능한 SQL 데이타베이스 엔진으로 꾸준히 개발중인 Library 입니다. SQLite 의 코드는 공개되어 있고, 상업적이든 개인적이든, 어떤 용도로도 무료로 사용하실 수 있습니다. 현재 SQLite 는 꽤 유명한 프로젝트를 포함하여, 생각하는 것 이상으로 많은 프로그램에서 사용하고 있습니다. [Adebe] - Photoshop Lightroom 제품에서 파일 포맷으로 SQLite 를 사용하고 있습니다. 그리고 Adebe Integrated Runtime(AIR) 에서도 SQLite 는 표준으로 사용됩니다. 또한 Acrobat Reader 에서도 SQLite 를 사용하는 .. 2023. 3. 7.
[MARIADB] 쿼리 프로파일링 MySQL은 프로파일링(Profiling)기능이 있습니다. 프로파일링은 런타임시 병목구간을 찾아내는 행위를 의미합니다. MySQL의 프로파일링은 만든 질의문을 실행할 때, 진행별 상황별 걸리는 시간을 체크해줍니다. 이것이 가능한 이유는 information_schema에 PROFILING 테이블이 존재해서 SET PROFILING = 1;로만 지정하면 그 이후로 실행되는 모든 질의문을 프로파일링하여 이 테이블에 로깅합니다. 프로파일링으로 실제 질의문이 실행하는데 걸리는 시간, 테이블에 접근하는 시간, CPU점유율, Memory 점유율등 다양하게 해석할 수 있습니다. SHOW PROFILES; 를 통해 이전에 실행한 질의문들의 Query_id를 알수 있고, information_schema.profilin.. 2023. 3. 7.
[MARIADB] 테이블 및 컬럼 정보 조회 쿼리 #테이블정보 조회 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = SCHEMA(); #컬럼정보 전체 조회 SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = SCHEMA() AND TABLE_NAME = '테이블명' ORDER BY ORDINAL_POSITION; #컬럼정보 간단 조회 SELECT TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION AS NO, COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT AS `DEFAULT`, IS_NULLABLE, COLUMN_KEY AS `KEY`, COLUMN_COMMENT FROM INFOR.. 2023. 3. 7.
[데이터베이스] 다양한 DB에서의 validation Query Database validationQuery notes hsqldb - select 1 from INFORMATION_SCHEMA.SYSTEM_USERS Oracle - select 1 from dual DB2 - select 1 from sysibm.sysdummy1 mysql - select 1 microsoft SQL Server - select 1 (tested on SQL-Server 9.0, 10.5 [2008]) postgresql - select 1 ingres - select 1 derby - values 1 H2 - select 1 Firebird - select 1 from rdb$database 2023. 3. 7.