코드 저장소

공부에는 끝이 없다!

DB 5

DATEPART와 spt_values를 이용한 날짜 계층구조 만들기

대시보드를 만들다가 차트에 날짜 기준을 잡을 일이 생겼다. PowerBI같은 곳에선 계층 구조로 전체 날짜에 대해서 계층 구조로 분기, 반기, 주차등 여러 정보들을 제공해 주는데 대시보드에서 비슷한 기능을 만들기 위해서 쿼리를 이용해서 전체 날짜에 대한 계층 구조를 만들 필요성이 생겼다. 날짜 다듬는거야 크게 어려운 것이 아니니 한번 만들어 봤는데 DATEPART와 spt_values를 처음으로 이용하게 되어 정리해보고자 한다. spt_values SQL Server의 master DB에는 spt_values라는 테이블이 존재한다. 이 테이블에는 특정 종류의 작업에 사용되는 많은 행이 포함되어 있다. 예를 들어 Type이 'P'인 것으로 검색해보면 0~2047의 숫자가 검색되는 것을 확인할 수 있다. 따..

DB/MSSQL 2023.12.21

MSSQL Suspect 모드 복구하기

팀 내부 프로젝트 도중 DB가 Suspect모드로 들어가는 현상을 보게 되었다. 인터넷에 검색을 해보니 드물게 나오는 상태라고 하는데 H/W 또는 O/S 상에서 실수로 인해 발생하는 현상이라고 한다. 내 경우는 트랜젝션 도중에 워크스테이션 전원이 나갔는데 그게 원인이 아닌가 싶다. Suspect 모드의 발생 예시 해당 시스템이 지정된 파일을 찾을 수 없는 경우 데이터 또는 로그가 존재하는 장치를 열 수 없는 경우 SQL 서버가 트렌젝션 중에 다운되거나 재시작 되었을때, 트렌젝션 로그가 손상된 경우 안티바이러스 프로그램 등으로 인해 SQL 서버가 특정 데이터나 로그파일에 접근할 수 없을 때 결론적으로 SQL서버가 데이터에 접근이 되지 않는 경우 발생하는 모드라고 생각하면 되겠다. 문제가 발생하면 처음에는 ..

DB/MSSQL 2023.12.19

SQL Developer를 이용한 Oracle DB Export

이전에 마이그레이션 해두었던 DB를 다른 서버로 옮길 일이 생겼다. 어떻게 할까 하다가 그냥 DB를 통째로 Export해서 다른 서버로 옮기는게 제일 편할것 같아서 Export를 하는 방법을 찾게 되었다. MSSQL은 여러번 작업을 해보았지만 Oracle에서는 처음 해보는터라 정리도 할겸 기록을 남긴다. DB Export와 Import 일반적으로 DB를 주기적으로 백업하거나 다른 서버로 이관할 경우 백업 및 복구 명령어로 사용되는것이 Oracle Export, Import이다. 오라클에서는 2가지 레밸의 방법이 존재하는데, 오라클 DB 전체를 백업하고 복구하는 Full Level과 사용자 단위의 DB를 백업하고 복구하는 User Level이 있다. 1. 전체 백업(Full Level) 오라클의 DB 전체..

DB/Oracle 2023.11.17

(ORACLE) Global Temporary Table과 계층 구조 만들기

MSSQL을 Oracle로 옮기는 작업 중 메뉴에 대한 계층 쿼리를 수정해야 하는 상황이 발생했다. 기존에 MSSQL에서는 테이블 변수를 생성해서 전체 테이블을 담고, MaxLevel을 구한 후, ParentId와 본인의 ID를 통하여 반복문을 사용하여 계층 구조를 만들거나, WITH절을 사용하여 계층 형태로 구성을 하였는데 Oracle에서는 위의 방법이 생각처럼 쉽지가 않았다. Oracle의 Global Temporary Table 오라클에서는 MSSQL의 테이블 변수처럼 사용할 수 있는 Global Temporary Table(편의상 GTT라고 부르겠다)이란 것이 있다. GTT는 쉽게 설명하면 세션 혹은 트랜잭션 수명 주기와 관련이 있는 임시 테이블이라고 생각하면 되겠다. GTT를 만드는것에는 2가지..

DB/Oracle 2023.10.30

오라클 ORA-01002 오류와 해결방법

최근 MSSQL로 만들었던 서드파티 프로그램을 고객사 요청에 따라 Oracle DB로 변환하는 작업을 하고 있다. 그냥 단순하게 Adater바꾸고 Command 바꾸고 하면 끝날줄 알았는데... 생각보다 과정이 까다롭다. 일단 제일 문제가 되는 부분은 프로시저 호출이었는데 기존에 MSSQL 사용 당시 거의 대부분을 프로시저화 해서 호출해서 사용했다. 데이터 자체는 Oracle의 Migration을 이용해서 몽땅 다 옮겼는데 변환된 프로시저 대부분이 제대로 동작하지 않는 것을 확인하였다. 그래서 프로시저를 이리저리 수정중인데... 문제가 된 프로시저는 메뉴를 만드는 프로시저인데 임시테이블에 첫행을 Insert하고 재귀하면서 계층형 구조를 만든 뒤 Sys_RefCursor로 반환하는 프로시저이다. creat..

DB/Oracle 2023.10.27