토드(TOAD, Tool for Oracle Application Development)를 쓰다 보면 에디터에 세로로 쭉 내려오는 회색 줄이 하나 보이시죠? 처음에는 별 생각 없이 사용했는데, 계속 보다 보면 은근히 신경이 쓰이더라고요. 😭 특히 쿼리를 길게 작성할 때에는 그 줄이 기준점이 아니라 글자가 가려져서 '방해 요소'처럼 느껴지기…
'ORA-26026: 유일 인덱스가 처음부터 사용 불가능한 상태입니다'라는 메시지를 보신 적 있나요? 이번에 대용량 데이터를 로드하는 과정에서 갑자기 이 오류를 마주하게 되었는데요, 해결하는 방법에 대해 알아보도록 해요. 오류 메시지를 찬찬히 들여다보니 힌트는 역시 '인덱스'에 있었습니다. 결론부터 말하면, 고유 인덱스(uni…
ORA-01793: maximum number of index columns is 32 오류는 오라클에서 발생하는 제약 조건 중 하나예요. 인덱스를 생성하거나 수정할 때 컬럼을 너무 많이 포함시키면 나타나요. 오라클에서는 한 인덱스에 포함할 수 있는 컬럼의 최대 개수를 32개로 제한해요. 원인 하나의 인덱스에 33개 이상의 컬럼을 포함하려고 시…
ORA-01450: 키의 최대 길이(6398)를 초과했습니다 오류는 오라클 데이터베이스에서 인덱스(특히 유니크 제약조건 또는 PK 제약조건) 를 생성할 때, 해당 인덱스의 키 값의 길이 총합이 허용 범위(6398 바이트)를 초과했을 때 발생합니다. 🔍 ORA-01450 원인? VARCHAR2 컬럼에 인덱스를 생성하려고 할 때, 해당 컬럼(또는 컬럼…
오라클에서는 SQL 문을 실행할 때 자동으로 생성되는 묵시적 커서(Implicit Cursor) 를 제공합니다. 이를 통해 SQL 문이 데이터에 미친 영향을 쉽게 확인할 수 있다는 것, 아시나요? 묵시적 커서는 SELECT INTO , INSERT , UPDATE , DELETE 문 실행 후 자동으로 열리고 닫힌답니다. 우선, 묵시적 커서 속성에 대해 …
ORA-04091: 테이블이 변경되어 트리거/함수가 볼 수 없습니다 오류는 오라클 데이터베이스에서 트리거 또는 함수가 직접적으로 영향을 받는 테이블을 다시 읽거나 변경하려고 할 때 발생해요! 😭 이는 트리거의 순환 참조나 무한 반복으로 이어질 수 있어 오라클에서 미리 예외로 처리하는 부분이랍니다. (트리거의 재귀 호출) 그리하여 문제를 해결하려면 테이블…
데이터베이스를 다루다 보면, 종종 여러 테이블을 조합해서 특정 데이터를 업데이트해야 하는 상황이 생기곤 해요. 오늘은 오라클의 emp 와 dept 테이블을 조인하여 업데이트 하는 방법에 대해 안내해드리려고 해요! dept 테이블의 deptno 값에 따라 emp 테이블의 comm 컬럼 값을 업데이트하는 방법으로 예제를 보여드릴게요. 😊 업데이트를 위…
오라클에서 Redo 로그 파일은 데이터베이스 변경 사항을 기록하는 중요한 역할을 합니다. 일반적으로 Redo 로그는 데이터베이스 복구에 필요한 데이터만 포함합니다. 그러나 특정 응용 프로그램이나 로그 분석 도구(LogMiner 등)에서 추가 데이터가 필요할 경우 Supplemental Logging을 활성화해야 합니다. Supplemental Loggin…
PL/SQL에서 예외 처리는 프로그램의 안정성을 보장하기 위해 중요한 개념이에요. 특히 데이터베이스와 관련된 작업 중에는 다양한 오류가 발생할 수 있기 때문에, 이를 효과적으로 처리하는 방법을 알아두는 것이 필요해요. 오늘은 오라클의 대표적인 미리 정의된 예외 유형을 살펴보도록 하겠습니다. Oracle의 주요 예외 유형 PL/SQL에서 자주 사용하는 미리…
오라클 데이터베이스에서 WHERE column_name = 'Y' 의 반대 조건을 명확하게 표현하려면 아래와 같이 작성할 수 있어요. WHERE column_name IS NULL OR column_name <> 'Y' 이유 NULL 포함 필요 NULL 값은 비교 연산에서 제외되기 때문에, 반대 조건을 작…
ORA-02030: can only select from fixed tables/views 오류는 사용자가 고정된 테이블이나 뷰에서만 데이터를 선택할 수 있도록 제한된 권한으로 쿼리를 실행할 때 발생하는 오류입니다. 이 오류는 V$ 또는 V_$ 로 시작하는 뷰에 대해 권한이 부족할 때 나타나요. 해당 오류는 주로 시스템 뷰(예: V$OPEN_CURSO…
오라클에서 사용할 수 있는 커서 변수는 기본적으로 SYS_REFCURSOR 를 제공하고 있습니다. 대부분의 경우 SYS_REFCURSOR 를 사용하거나, 필요에 따라 사용자가 커서 타입을 정의하여 사용할 수 있어요. 커서와 관련된 몇 가지 추가 정보와 기법이 있으니 참고해 보세요. 정적 커서 (Static Cursor) PL/SQL 내에서 일반적으로…
ORA-21000 오류는 raise_application_error 함수를 사용할 때 오류 코드가 잘못된 범위로 지정되어 발생하는 문제입니다. 이 함수는 사용자 정의 오류 메시지를 만들 때 자주 사용하는데, 오류 코드의 범위가 -20000에서 -20999 사이여야만 하기 때문이에요. 예제 코드에서는 -1 같이 범위 밖의 오류 코드를 사용해 보았는데요,…
CHR(13) 과 CHR(10) 은 각각 다른 문자 제어 코드인데요, 두 문자에 대한 차이를 알아보도록 하겠습니다. CHR(13) 과 CHR(10) 은 각각 어떤 역할일까요? 먼저 간단히 설명하자면 CHR(13)는 캐리지 리턴(Carriage Return)이라고 불리는데, 이건 줄의 시작 지점으로 커서를 이동시켜줘요. 예전 타자기의 캐리지 리턴에서 유래한…
오라클 데이터베이스에서 'SID'와 'Service Name'은 헷갈릴 수 있는 개념이지요. 이 두 개념의 차이점을 명확히 알고 있으면 데이터베이스 연결이나 설정에 관련된 이해가 쉬워질 텐데요, 하나씩 자세히 알아볼까요? SID (System Identifier) SID는 'System Identifier'의…
오라클에서 Trunc 함수를 날짜에 대하여 사용할 때, 원하는 결과에 따라 포맷을 사용할 수 있습니다. 이에 대해 간단히 알아보도록 하겠습니다. EMP 테이블의 각 입사일에 대해 특정 날짜 형식으로 변환된 결과를 보여주는 예제를 살펴보도록 해요. 필요에 따라 TRUNC 함수의 매개변수를 사용하여 연도, 분기, 월, 주, 일 단위 등으로 날짜를 자를 수 …
오라클에서 특정 월의 마지막 날짜를 구하는 방법을 아시나요? 특히 월별 보고서나 월말 통계를 계산할 때, 그 달의 마지막 날짜를 알아두면 많은 도움이 돼요. Oracle의 LAST_DAY 함수는 바로 이런 용도로 사용될 수 있죠. 여기서는 LAST_DAY 함수를 활용해 테이블 내 데이터에서 특정 월의 마지막 날짜를 쉽게 가져오는 방법을 안내해 드릴게요…
오라클에서 테이블의 구조와 메타데이터를 파악할 수 있는 쿼리, 알고 계세요? 이번 시간에는 'EMP' 테이블을 대상으로 다양한 정보를 조회할 수 있는 쿼리를 통해 테이블의 스키마, 컬럼, 암호화, 제약 조건 등의 메타데이터를 확인해 보도록 하겠습니다. 살펴보시지요~ ('마지막 DDL 작업 시간', '컬럼의 세부 정보…
오라클 데이터베이스에서 컬럼의 기본값을 설정하는 작업을 진행하려고 합니다. 😊 특히 데이터 입력 시 특정 컬럼에 값이 입력되지 않는 경우, 기본값을 미리 설정해두면 더 깔끔하고 예측 가능한 데이터 관리가 가능하기 때문이지요. 기본값 설정 쿼리 기본 형태 오라클에서 컬럼의 기본값을 설정하는 일반적인 구문은 다음과 같습니다~ ALTER TABLE 테이블명 …
C#에서 콤보박스(ComboBox)에 값을 설정하는 방법에 대해 알아보겠습니다. 😊 특히, 오라클 데이터베이스와 연결하여 콤보박스에 데이터를 바인딩하는 방법도 함께 다뤄보겠습니다. 이 글에서는 기본적인 콤보박스 설정부터, 실제 데이터베이스에서 값을 불러와 바인딩하는 과정까지 소개할 예정입니다~ C# 콤보박스(ComboBox)에 값 넣는 방법 C#에서 콤…