컴퓨터일반/DB 22

[MSSQL] 대용량 데이터 페이징 처리 성능 최적화 가이드

데이터베이스의 규모가 커질수록 SELECT *로 모든 데이터를 가져오는 것은 불가능에 가깝습니다.수백만 건의 데이터 중 사용자가 보고 있는 10~20건만 효율적으로 골라내는 MSSQL 페이징 기법 3가지를 소개합니다.1. OFFSET-FETCH (SQL Server 2012 이상 권장)ANSI 표준이며 현재 MSSQL에서 가장 권장되는 방식입니다. 구문이 직관적이고 가독성이 매우 높습니다.특징: 반드시 ORDER BY 절과 함께 사용해야 합니다.장점: 코드가 간결하며 유지보수가 쉽습니다.SQL -- 11번째부터 10개의 행을 가져오는 예시 (Page 2)SELECT *FROM OrdersORDER BY OrderDate DESC, OrderID ASCOFFSET 10 ROWS FETCH NEXT 10 R..

컴퓨터일반/DB 2026.03.26

[Oracle]오라클 대용량 데이터 페이징 처리 완벽 가이드

대용량 테이블에서 단순히 SELECT를 수행하면 전체 데이터를 읽어오느라 성능이 급격히 저하됩니다.사용자가 필요한 범위만큼만 데이터를 끊어서 가져오는 효율적인 페이징 기법 3가지를 소개합니다.1. ROWNUM과 인라인 뷰를 이용한 전통적 방식 (Oracle 11g 이전)오라클 11g 이하 버전에서 가장 많이 사용되던 방식입니다.ROWNUM은 행이 추출되는 순서대로 번호를 부여하는 가상 컬럼입니다.구현 원리: 정렬된 서브쿼리(인라인 뷰)를 먼저 실행한 후, ROWNUM으로 범위를 지정합니다.특징: 반드시 2중 중첩 구조를 사용해야 합니다. WHERE ROWNUM > 10과 같은 조건은 첫 번째 행부터 체크하기 때문에 직접 사용하면 결과가 나오지 않기 때문입니다.SQL SELECT * FROM ( SE..

컴퓨터일반/DB 2026.03.26

[Oracle] 정규식(Regex)으로 문자열에서 숫자만 추출 & 제거하는 방법

데이터 정제(Cleaning) 작업을 하다 보면 010-1234-5678 같은 연락처에서 하이픈(-)을 제거하고 숫자만 남기거나, 주소에서 번지수를 제외한 텍스트만 추출해야 하는 경우가 많습니다.오라클의 REGEXP_REPLACE 함수를 사용하면 복잡한 REPLACE 중첩 없이 한 줄의 쿼리로 해결할 수 있습니다.1. 기본 함수 구조: REGEXP_REPLACE정규표현식을 지원하는 치환 함수입니다.SQL REGEXP_REPLACE(대상문자열, '패턴', '치환할문자')2. 문자열에서 "숫자만" 추출하기숫자가 아닌 모든 문자를 찾아 공백('')으로 치환하여 없애버리는 원리입니다.정규식 패턴: [^0-9] 또는 [^[:digit:]]^: 패턴의 시작 부분에서 사용되면 'NOT(부정)'을 의미합니다. 즉, 숫..

컴퓨터일반/DB 2026.03.24

[Oracle] "아차!" 하는 순간 필요한 데이터 복구 전략: Flashback Query 활용법

데이터베이스를 다루다 보면 누구나 한 번쯤 실수로 WHERE 절을 빼먹고 UPDATE를 날리거나, 중요한 데이터를 DELETE 하는 아찔한 경험을 하곤 합니다.오라클에서는 이런 상황을 대비해 특정 과거 시점의 데이터를 조회할 수 있는 강력한 기능인 Flashback Query를 제공합니다.1. Flashback Query란?오라클의 Undo 데이터를 활용하여, 현재 시점이 아닌 과거 특정 시점의 테이블 상태를 마치 스냅샷을 찍듯 조회하는 기능입니다. 별도의 백업 복원 과정 없이 SQL만으로 빠르게 데이터를 확인할 수 있다는 것이 가장 큰 장점입니다.2. 과거 데이터 조회하기 (AS OF TIMESTAMP)가장 일반적으로 사용하는 방법은 AS OF TIMESTAMP 구문을 사용하는 것입니다.특정 시간 기준..

컴퓨터일반/DB 2026.03.24

[MSSQL]전체 테이블 삭제하기

-- 시스템상의 데이터베이스 목록 출력하기exec sp_MsForEachDB 'print ?' -- 모든 데이터베이스 체크하기exec sp_MsForEachDB 'DBCC CHECKDB (?)' -- 모든 데이터베이스 삭제하기exec sp_MsForEachDB 'DROP DATABASE [?]' "모든 데이터베이스를 삭제" 한다고 말했다. 절대!!! 조심해서 사용할 것!!! 이 글의 주제.. "전체 테이블 삭제하기"는 아래와 같다. -- 해당 데이터베이스의 모든 테이블 삭제하기exec sp_MsForEachTable 'DROP TABLE ?' 다시한번 말하지만..."모든 테이블을 삭제" 한다고 말했다. 절대!!! 조심해서 사용할 것!!! 출처 : http://gdbt.tistory.com/5 참고로 모든..

컴퓨터일반/DB 2013.11.07

[Oracle]NUMBER컬럼 사이즈 변경

Table에 데이터가 들어가 있는 경우 사이즈를 축소하는 것은 안된다. 여기까지는 다 아는 사실.. 그런데.. 에를 들어서 Number(13,3)의 경우 소수점 3자리를 5자리로 늘이려면.. ORA-001440 정도 또는 자리수를 축소할 열은 비어 있어야 합니다. 라는 오류가 발생한다. 축소?? 검새을 해보니.. 13+3의 길이를 잡고 있다가 3을 5로 변경을 하면.. 13+5가 되는 것이 아니라 11+5가 되기 때문에 축소로 본단다.. 그래서 3을 5로 변경을 하려면.. Number(15,5)로 앞자리도 변경을 해주어야 정상적으로 변경이 된다.

컴퓨터일반/DB 2008.06.25

오라클 접속시 ORA-12154, ORA-12638 오류 해결

잘되던 오라클이 갑자기 접속이 안됐다. AD전환 하고 나서 오라클을 지우고 다시 설치하였는데.. 어라.. "ORA-12154 TNS : 서비스 명을 해석할 수 없습니다." 라는 오류가 발생한다. ??? 인터넷 검색 시작.. Oracle 설치 폴더에 Network에 Admin 폴더 안에 있는 sqlnet.ora 파일이 서버와 틀려서 발생하는 오류란다. 열어서 확인해 보니.. AD관련해서 NAMES.DEFAULT_DOMAIN = ***.NET이부분이 추가가 되었다. 앞에 #을 붙여서 주석처리.. 그리고 다시 시도 했더니.. 젠장.. 또 안된다. "ORA-12638: 신용검색에 실패했습니다.".... 란다. 젠장.. 아무리 내 신용도가 바닥이라.. 회사에서 내말을 아무도 안믿기는 하지만.. 쩝.. 이건 너무 ..

컴퓨터일반/DB 2008.01.10

Oracle 삭제 후 재 설치시에 중복된 SID 삭제 방법

1.Windows 계열일 경우 이경우 레지스트리에 등록된 SID를 지우셔야 할겁니다. 제가 찾아본것으로는 아래 레지스트리를 지우시고 다시 DB를 생성하시면 될듯합니다. \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID\SID \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleServiceSID 이두가지를 지우시면 될듯합니다. 여기서 SID는 예전에 설치하셨을때 사용하신 SID겠죠.. 이게 남아있으면 같은 SID로 다시 DB를 만들수 없습니다. 2.Unix계열(리눅스도 포함) 보통 SID는 oratab이란 파일에 저장되는데 이파일은 시스템마다 조금씩 틀리지만 /etc, /var/opt/oracle 밑에 존재합니다. 그냥 이..

컴퓨터일반/DB 2008.01.08

ADO!!!

MDAC (Microsoft Data Access Components) UDA(Universal Data Access)는 여러 기업 환경의 정보에 접근하는 방법을 제공하기 위한 마이크로소프트의 전략이다. UDA는 다양한 정보 소스에 빠르게 접근할 수 있으며, 관계형 또는 비 관계형 데이터베이스를 모두 접근할 수 있다. 그리고 개발 툴과 개발 언어에 비 독립적이면서도 쉽게 인터페이스를 프로그래밍할 수 있도록 지원한다. 이 기술은 다양한 데이터 소스에 접근할 수 있으며, 쉽게 유지보수할 수 있는 솔루션을 제공하며, 개발 툴, 어플리케이션, 플랫폼 모두에 최상의 선택이 될 것이다. UDA는 데이터 소스간의 이동에 소요되었던 많은 비용과 시간을 줄여주며, ODBC, RDO, DAO를 포함하는 차기 표준 인터페이..

컴퓨터일반/DB 2007.11.16