본문 바로가기

프로그래밍108

[DB] DBeaver 쿼리 조회 결과창 필드명에 주석 표시하기 환경 설정방법. ​ 메뉴에서 다음 순서에 따라 진행 1. 원도우 -> 설정 을 선택하면 표시되는 창에서 2. 편집기 > 데이터편집기 > 표현방식 을 선택하면 나타나는 오른쪽 옵션에서 "Show Column description in header" 를 체크 3. Apply and Close 버튼을 클릭하여 적용 ​ ​ DBeaver 재시작한 후, 쿼리 조회한 결과창의 헤더에 주석이 같이 표시됩니다. ​ DBeaver Ver 21이상 부터 지원되는 것 같음. 2023. 3. 7.
[오라클] 실행계획 (Execution Plan) 플랜이란 무엇인가? CBO 방식에서 옵티마이저는 주어진 환경(통계정보, SQL문) 하에서 최적의 실행계획(PLAN)을 우리에게 제공한다. 옵티마이저는 우리에게 어떤 경로로 테이블을 접근하는지, 어떤 방식으로 조인하는지, 어떤 인덱스 자원을 사용하는지 등에 대한 최적화한 계획(플랜)을 알려준다. ​ 만약 옵티마이저가 제공하는 플랜이 완벽하다면 오라클은 우리에게 플랜을 제공할 필요가 없으며, 쿼리문에 힌트절을 허용할 이유도 없을 것이다. 물론 개발자들인 우리도 플랜에 대해 알아야 할 이유가 전혀 없을 것이다. 하지만 플랜은 완벽하지 않다. 오히려 간혹 잘못된 정보를 주곤 한다. ​ 체스 챔피언과의 시합에서는 수많은 기보에 대한 충분한 분석이 이루어져서 우승하였지만, 수많은 개발자들이 작성한 무수히 많은 쿼리.. 2023. 3. 7.
[오라클] 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.
반응형