본문 바로가기

프로그래밍/데이터베이스32

[MSSQL] 실행 쿼리 이력 조회 admin 계정으로 실행. SELECT TOP 1000 DB_NAME(ST.DBID) DBNAME , OBJECT_SCHEMA_NAME(OBJECTID, ST.DBID) SCHEMANAME , OBJECT_NAME(OBJECTID, ST.DBID) SPNAME , TEXT , QS.last_worker_time , QS.execution_count , CREATION_TIME , LAST_EXECUTION_TIME , QS.max_worker_time , QS.min_worker_time , QS.total_worker_time , QS.TOTAL_ELAPSED_TIME FROM SYS.DM_EXEC_QUERY_STATS QS CROSS APPLY SYS.DM_EXEC_SQL_TEXT(QS.plan_ha.. 2023. 7. 5.
[MSSQL] 테이블 정보 조회 SELECT A.TABLE_NAME AS 테이블명 , C.VALUE AS 테이블코멘트 , A.COLUMN_NAME AS 컬럼ID , A.COLUMN_NAME AS 컬럼명 , A.DATA_TYPE AS 데이터타입 , CASE A.DATA_TYPE WHEN 'varchar' THEN CONVERT(VARCHAR(10), A.CHARACTER_MAXIMUM_LENGTH) WHEN 'numeric' THEN CONVERT(VARCHAR(10), A.NUMERIC_PRECISION) + ',' + CONVERT(VARCHAR(10), A.NUMERIC_SCALE) END 길이 , CASE WHEN A.COLUMN_NAME = ISNULL(E.COLUMN_NAME, '') AND D.CONSTRAINT_TYPE =.. 2023. 3. 10.
[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.
반응형