728x90
728x90
%_HINTS MSSQLNT 'TABLE &TABLE& INDEX([VBAK~0]), FORCESEEK' SAP ABAP & MS SQL 에서의 Index Seek 힌트인 FORCESEEK 적용 예시 How to integrate SQL Server specific hints in ABAP - Microsoft Community Hub How to integrate SQL Server specific hints in ABAP First published on MSDN on Aug 31, 2011 Working on a few Proof of Concepts this year where customers moved their SAP landscapes from Oracle or DB2 to SQL Serv..
내용 특정 구문을 데이터베이스, 테이블을 변경해가면서 수행하고자 할때 사용합니다. sp_MSforeachdb 구문 exec sp_MSforeachdb 'use [?] select * from sys.database_files' 결과 예시 sp_MSforeachtable 구문 exec sp_MSforeachtable 'select count(*) from ?' 결과예시
내용 데이터베이스 운영을 하면서 lock을 발생시키는 프로세스와 이로 인해 대기하는 프로세스를 확인하고자 하는 경우가 생깁니다. 해당 프로세스에 해당하는 쿼리 또한 정보를 보고 싶어서 한번에 조회가 되도록 쿼리를 작성하여 사용하고 있습니다. 쿼리 create proc [dbo].[sp_mon_blocking] as set nocount on --기초 테이블 생성 create table #a(blocking_spid int,blocking_hostprocess int , blocking_sql varchar(8000) ,blockedby_spid int,blockedby_hostprocess int ,blockedby_sql varchar(8000),waittime bigint, waittype varbi..
내용 exec sp_who2 'active' 를 활용하여 현재 실행되고 있는 프로세스의 정보를 조회하는 용도입니다. 구문 CREATE proc [dbo].[sp_active_spid] as set nocount on create table #sp_who2(spid int,Status varchar(100), Login varchar(100), HostName varchar(200),BlkBy varchar(5) ,DBName varchar(50) , Command varchar(500), CPUTime bigint, DiskIO bigint, LastBatch varchar(100), ProgramName varchar(500), spid2 int, REQUESTID int) --현재 active spi..
FORCESEEK 인덱스를 사용할 때 Index Scan이 아닌, Index Seek 만 사용하도록 강제화 할 수 있습니다. 테이블 힌트(Transact-SQL) - SQL Server | Microsoft Learn 테이블 힌트(Transact-SQL) - SQL Server 테이블 힌트는 DML 작업 중에 쿼리 최적화 프로그램의 기본 동작을 재정의합니다. learn.microsoft.com 사례 통계 정보의 최신화 유무에 따라 Index Scan vs Index Seek 가 빈번하게 변할 경우 Index Seek가 무조건 유리하다고 생각한다면 Index Seek를 강제화 해야합니다.
내용 현재 활성화된 세션의 정보를 찾기 위한 구문입니다. 구문 SELECT a.sid, -- SID a.serial#, -- 시리얼번호 a.status, -- 상태정보 a.process, -- 프로세스정보 a.username, -- 유저 a.osuser, -- 접속자의 OS 사용자 정보 b.sql_text, -- sql c.program -- 접속 프로그램 FROM v$session a, v$sqlarea b, v$process c WHERE a.sql_hash_value=b.hash_value AND a.sql_address=b.address AND a.paddr=c.addr AND a.status='ACTIVE'; 결과
환경 Microsoft SQL Server 2016 (SP2) Copyright (c) Microsoft Corporation Enterprise Edition 설명 대용량 데이터베이스를 운영시에 alter index rebuild 구문을 이용하여 데이터 압축을 하는 경우가 발생을 합니다. 기존에는 sys.partitions에 Online Index를 생성하는 동안 rows를 확인하여 진행할 수 있었으나 MS SQL 2016 이상에서는 조회되지 않습니다. 그래서 아래의 방법으로 Alter Index에 대한 진행을 모니터링 하려고 합니다. 사전 설정 SET STATISTICS PROFILE ON 해당 세션에서 ALTER INDEX [인덱스이름] ON [테이블이름] REBUILD WITH ( DATA_COM..
파티셔닝 관련 유용한 쿼리 해당 테이블의 파티션 정보 확인 SELECT * FROM M_TABLE_PARTITIONS WHERE TABLE_NAME='테이블명' HASH 파티션 하기 alter table SAPHANADB.PRCD_ELEMENTS PARTITION BY HASH (KNUMV) PARTITIONS 12; alter table SAPHANADB.MBEWH PARTITION BY HASH (MATNR) PARTITIONS 12; alter table SAPHANADB.ACCTCR PARTITION BY HASH (AWREF) PARTITIONS 12; 소요시간 Statement 'alter table SAPHANADB.PRCD_ELEMENTS PARTITION BY HASH (KNUMV) PA..
환경 OS : Windows 2012 R2 DBMS : MS SQL 2012 Standard Edition 이중화 : MSCS Passive Node 업그레이드는 Passive Node 부터 진행을 합니다. Installation에서 "Upgrade from a previous version of SQL Server"를 선택하여 업그레이드를 진행합니다. Product Key는 회사 또는 개인이 구매한 Product Key를 입력합니다. 업그레이드를 하고자 하는 Instance를 선택합니다. 서버 한대에 Instance가 하나이면 "MSSQLSERVER"가 기본이며 2개 이상의 Instance가 설치되어 있다고 하면 업그레이드를 할 Instance를 선택하여야 합니다. 선택된 Instance의 versio..
원격 컴퓨터 재시작 방법 명령프롬포트 (커맨드라인, 도스창)에서 아래와 같은 형태로 shutdown 명령을 실행하여 원격 컴퓨터를 재시작 할 수 있습니다. shutdown -r -f -m 원격컴퓨터이름/ip - t 00 shutdown -r -f -m 원격컴퓨터이름/IP -t 00 -m 원격컴퓨터이름/IP : 역슬래쉬 뒷부분에 종료하려는 대상 컴퓨터의 네트워크 이름이나 IP 주소를 넣습니다. -r 컴퓨터를 재시작 하라는 의미를 가진 옵션 스위치 입니다. -f 실행중인 모든 프로그램을 종료하도록 강제합니다. -t 00 몇 초 뒤에 컴퓨터가 재시작/종료되게 할지 지정합니다.
사전 필수 사항 CREATE VIRTUAL TABLE 권한 설명 원격 테이블의 메타데이터를 변경해도 해당 가상 테이블(Virtual Table)에 자동으로 반영되지 않습니다. 변경 사항을 반영하려면 가상 테이블을 수동으로 업데이트해야 합니다. 수행방법 ALTER VIRTUAL TABLE [.]"" REFRESH DEFINITION;
설명 현재 데이터베이스에 대해서 Login하는 사용자별로 부여된 권한을 추출하고자 하는데 사용이 됩니다. Object 별로 주어지는 권한은 별도의 쿼리로 조회를 해야 합니다. 아래의 쿼리로 추출되는 결과는 DBRole을 부여받은 DB User에 대한 정보입니다. DB에서 DBUser에 대해 부여된 권한만 조회할 경우 Server 기준의 Login과 DB User간 매핑 정보가 누락되기 때문에 Login이 가능하지 않은 사용자도 권한이 부여된 것처럼 보이게 되어서 궁극적으로 Login이 가능한 사용자 기준으로 부여된 권한을 조회하기 위해서는 아래의 쿼리를 사용해야 합니다. 수행방법 SELECT DB_NAME() as DB_Name, Login_Name = ul.[name], User_Type = CASE ..
Identity Jump 1000 테이블의 속성 중 Identity (1,1)으로 컬럼을 만드는 경우가 많습니다. 1에서 시작하여 1씩 증가하도록 만들어 데이터가 쌓이는 순서대로 채번을 하는 경우입니다. 이렇게 설정된 테이블의 정보를 보면 Seed 1 , Increment 1 로 되어 있습니다. 그런데 MS SQL 2012 이상부터는 SQL Service가 재시작 되는 경우 이 컬럼의 번호가 1000 씩 건너뛰는 경우를 보실 수 있습니다. 아래 그림을 보시면 208, 209, 210, 211, 212 였으나 갑자기 1195, 1196으로 번호가 증가하는 것을 확인할 수 있습니다. Jump 1000 현상이 문제인가? SQL Service가 재시작 되는 경우 Identity 값이 1000 씩 jump 하는 ..
서비스 확인하기 SELECT * FROM "M_SERVICES" Tenant DB에 접속하여 서비스 정보를 확인합니다. 제거하고자 하는 서비스 이름과 서비스 Port를 확인합니다. 서비스 제거 ALTER SYSTEM ALTER CONFIGURATION ('topology.ini', 'system') UNSET ('/host/Host명/서비스명','서비스포트') WITH RECONFIGURE Host 및 서비스명과 서비스 포트를 넣고 서비스를 제거합니다. 아래 포스팅에서 내용이 자세히 설명되어 있습니다. 참고하시면 될것 같습니다. https://sapbasisworld.com/sap-hana-service-inconsistencies/ SAP HANA Service Inconsistencies - SAP ..
SAP HANA Log Volumes Each log volume contains the file logsegment__directory.dat and one or more log segment files (logsegment__.dat). Currently only one log partition is supported for each service, so the default file names are logsegment_000_directory.dat and logsegment_000_00000000.dat, logsegment_000_00000001.dat, logsegment_000_00000002.dat and so on. Log segment files are cyclically overwr..