DBMS 5

오라클 커서(CURSOR)

커서? 커서란 특정 SQL 문장을 처리한 결과를 담고 있는 영역을 가리키는 일종의 포인터입니다. 커서를 사용하면 처리된 SQL 문장의 결과 집합에 접근할 수 있습니다. 커서의 종류 명시적(Explicit) 커서: 사용자가 선언해서 생성 후 사용하는 SQL 커서, 주로 여러 개의 행을 처리하고자 할 경우 사용. 묵시적(Implicit) 커서: 오라클에서 자동으로 선언해주는 SQL 커서, 사용자는 생성 유무를 알 수 없다. 커서의 속성 커서를 open하고 나서 fetch가 발생하면 true값을 반환 %FOUND : 할당할 레코드가 있는 경우 true 값을 반환 %isOpen : 커서가 오픈 상태일 경우 true 값을 반환 %NotFound : 할당할 레코드가 없는 경우 true 값을 반환 %RowCount ..

DBMS 2023.11.30

GRA_*.log 파일 이해

GRA_*.log 오류는 노드가 트랜잭션을 적용하지 못해 클러스터에 복제 오류가 발생할 때 주로 생성됩니다. 이러한 트랜잭션의 대부분은 테이블, 인덱스 등의 변경과 같은 DDL과 관련되어 있습니다. 따라서 아래에서는 GRA_*.log 파일을 보고 기록되었을 수 있는 실패한 트랜잭션을 확인하는 간단한 방법을 보여 드리겠습니다. 참고: GRA_*.log 파일은 자동으로 삭제되지 않습니다. 이것이 MySQL datadir에 너무 많은 파일이 표시되는 이유이므로 해당 파일을 확인한 후에 직접 수동으로 삭제해야 합니다. 그리고 대부분의 경우 이러한 각 로그는 단일 트랜잭션 실패 후에 생성됩니다. 좋습니다. GRA_*.log를 보는 과정을 살펴보겠습니다. 내 MySQL dtaadir에는 GRA_*.log 파일 GR..

DBMS 2023.10.31

오라클 PLS-00302 구성 요소가 정의되어야 합니다.

안녕하세요. 운영 업무 중 요청사항이 들어왔습니다. 갑자기 잘되던 계정에서 프로시져 실행시 PLS-00302 오류가 발생한다고 하네요. (또, 뭔일 이래...) 권한, 시노님 문제라고 생각되어 아래 쿼리 순서로 실행하여 처리하였습니다. (미션 클리어!) -- 문제의 스키마명 AAA -- 1.테이블 권한확인 SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'AAA'; -- 2.시노님 확인 SELECT * FROM DBA_SYNONYMS WHERE TABLE_OWNER = 'AAA'; -- 3.오브젝트 확인 SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME = '오류발생 프로시져'; -- 4.스키마와 동일한 테이블명 존재확인 SELECT * FROM..

DBMS 2023.10.27

Lock wait timeout exceeded; try restarting transaction

"Lock wait timeout exceeded; try restarting transaction"은 MySQL 데이터베이스와 관련된 오류 메시지 중 하나로, 데이터베이스 트랜잭션에서 락 대기 시간이 초과되었음을 나타냅니다. 이 메시지는 트랜잭션 간의 충돌 또는 락 대기 시간이 너무 길어져서 트랜잭션이 완료되지 못한 경우 발생할 수 있습니다. 다음은 이 오류 메시지의 상세한 설명과 이해해야 할 주요 내용 목차입니다: 오류 메시지 내용: "Lock wait timeout exceeded; try restarting transaction" 메시지는 트랜잭션에서 락 대기 시간이 초과되어 트랜잭션이 완료되지 못한 경우 발생합니다. 락 대기 시간 초과: 이 메시지는 트랜잭션에서 다른 트랜잭션과 락 대기 시간을 ..

DBMS 2023.10.11

오라클 시퀀스

오라클(Oracle) 시퀀스(Sequence)는 데이터베이스에서 고유한 일련 번호를 생성하는 데 사용되는 객체입니다. 시퀀스는 특정 테이블의 순차적인 값을 생성하거나 일련 번호를 부여하는 데 유용하게 활용됩니다. 아래는 오라클 시퀀스에 관한 기본적인 정보를 제공하는 매뉴얼입니다. 1. 시퀀스 생성하기 시퀀스를 생성하려면 CREATE SEQUENCE 문을 사용합니다. 다음은 시퀀스를 생성하는 기본 구문입니다. CREATE SEQUENCE sequence_name START WITH start_value INCREMENT BY increment_value MINVALUE min_value MAXVALUE max_value CYCLE/NOCYCLE; sequence_name: 시퀀스의 이름을 정의합니다. st..

DBMS 2023.10.10