Oracle/Oh Oracle 63

PL/SQL 에서 사용하는 않는 CURSOR 는 수행 된다 ? 안된다 ?

-- PL/SQL 에서 사용하는 않는 CURSOR 는 수행 된다 ? 안된다 ? 주석 처리 하기 전에 확인 -- ( 결과 ) CURSOR 를 선언만 하고, 사용하지 않아도, CURSOR 관련 SQL(일)을 수행 하게 된다. -- 사용하지 않는 커서는 제거 혹은 주석 처리라도하자. -- grant select on sys.DBA_OBJECTS to scott ; -- run by sys CREATE OR REPLACE PROCEDURE UPDATE_SAL2 /* IN Parameter */ (v_empno IN NUMBER) IS V_OBJECT_NAME VARCHAR2(100); C_LIST SYS_REFCURSOR; BEGIN OPEN C_LIST FOR SELECT /*+ UNUSED_CURSOR */..

Oracle/Oh Oracle 2023.04.01

V$SQLAREA.PROGRAM_ID 를 통한 SQL 확인 하기

[ 1번째 SQL BLOCK 참조 ] V$SQLAREA.PROGRAM_ID 를 통한 SQL 확인 하기 가. 1차원 적인 호출은 확인된다. EX) EXEC PROCEDURE('XXX') 이런 식의 호출을 정확하게 확인 된다. 나. 2차원 적인 호출은 역시나 확인된다. ( 패키지에서 트로시져를 호출 하는 형태) [ 2번째 SQL BLOCK 참조 ] 덧) 추가로, 급하게 호출이 잦은프로시져를 컴파일 하려고,기존이름2로 컴파일 및 권한 작업 후에 Public Synonym 을 재생성 했다 ( 1초 소요 ) 보통 Public Synomym 을 통해서 접근 하는 경우엔 기존이름2로 실제 수행 되나. (나) 경우처럼 내부 호출 이고, 패키지, 프로시져 모두 OWNER 인 경우엔 Public Synonum 을 타지 않..

Oracle/Oh Oracle 2023.04.01

schema expdp -> impdp 시 , 복구된 schema 에 부여된 권한은 ?

schema expdp -> impdp 시 , 복구된 schema 에 부여된 권한은 ? 이를테면, 1. scott101(테스트 유저 ) 생성 2. scott 테이블에 대해서 scott101 유저에 권한 부여 3. expdp -> impdp 를 통해서 scott101 을 복구 하면, (2) 에서 부여한 scott 유저 테이블에 대한 scott101 유저의 권한이 복구 될까 ? 정답은 안된다. 가만히 생각 해보면, exp 나 expdp 시에 권한은 object 단위로 exp/expdp 되고 imp/impdp 된다. 1) 사용자 생성 및 권한 부여 -- 01 CREATE USER CREATE USER SCOTT101 IDENTIFIED BY TIGER101 DEFAULT TABLESPACE USERS TEMP..

Oracle/Oh Oracle 2023.03.03

"PK 설정이 장시간 걸릴때 확인 사항" NOT NULL 과 PK CONSTRAINT ( 출처 : 불친절한 SQL 프로그래밍 P590 )

NOT NULL 과 PK CONSTRAINT ( 출처 : 불친절한 SQL 프로그래밍 P590 ) : 일반적으로 PK 대상 칼럼에 대해서 가. 1) NOT NULL 설정 -> 2) PK UNIQUE INDEX 생성 -> 3) PK CONSTRAINT 순으로 작업 함 나. 3)번 작업은 1~2초 안에 완료됨 ( NOT NULL 설정이고, INDEX 가 이미 생성 되어 있어, 데이타 중복에 대한 검증 불필요 ) 다. 3)번 작업이 오래 걸리는 경우는 PK 칼럼에 대해서 NOT NULL 설정이 없는 경우이고 , Data Migration 시, 종종 발견됨 라. 해소 방안은 PK 칼럼에 대한 NOT NULL 설정 !!! SQL> DROP TABLE T1 PURGE ; Table dropped. SQL> CREAT..

Oracle/Oh Oracle 2023.01.25

Delete vs ALTER TABLE ... MOVE INCLUDING ROWS WHERE 조건절 TABLESPACE.. UPDATE INDEXEX

문서 보다가 일반 DELETE 와 ALTER TABLE MOVE UPDATE INDEXES 기능비교 비교 ) 샘플이지만, CASE 1인 ALTER TABLE MOVE 의 경우, UNDO 발생이 없고, REDO 가 휠씬 적다 고려 휠씬 빠르게 수행 될것 같다. 상대적이겠지만, 삭제 량이 그렇게 많지 않다면 ALTER TABLE MOVE ( rollback 안됨 주의 !!! ) 삭제 량이 엄청 많다면,평소에 나눠서, LOOPING 식으로 야금야금 삭제.. -- CASE 1 ALTER TABLE ... MOVE INCLUDING ROWS WHERE 조건절 TABLESPACE.. UPDATE INDEXEX ALTER TABLE T1 MOVE INCLUDING ROWS WHERE C1 WHERE 절에 만족하는 않..

Oracle/Oh Oracle 2023.01.20

AUTHID CURRENT_USER(실제 수행 유저 ) VS AUTHID DEFINER(컴파일 유저 기준)

AUTHID CURRENT_USER VS AUTHID DEFINER 1. FUNCTION, PACKAGE, PROCEDURE, TYPE 생성 시, AHTHID 설정 값을 통해서, OBJECT 내에서 접근하는 OBJECT 에 대한 권한 체크 방식으로 정의 할수 있다. 2. AUTHID DEFINER : 해당 OBJECT 를 DEFINER , 즉 생성한 생성자에 대한 권한 체크 [ Default ] 3. AUTHID CURRENT_USER : 해당 OBJECT를 호출한 호출자에 대한 권한 체크 4. 보통 (2)으로 생성 하면 , 문제가 없음 5. (3)방식으로 생성 하는 경우는 유저별 권한을 구분하고자 할때 (EX) 복제 구성 환경 등 ) 매뉴얼이 최고지 >> Oracle_Manual 테스트 내용 -- # ..

Oracle/Oh Oracle 2023.01.02

TX-LOCK 이나 Library Cache Lock/Pin 발생 시, 빠르게 파악 및 해소하고 싶습니다.

질문 : TX-LOCK 이나 Library Cache Lock/Pin 발생 시, 빠르게 파악 및 해소하고 싶습니다. 답변 : GV$SESSION.FINAL_BLOCKING_SESSION_STATUS='VALID' 시, GV$SESSION.FINAL_BLOCKING_INSTANCE 와 GV$SESSION.FINAL_BLOCKING_SESSION 통해서 빠르게 파악 해보자 Hang Manager Trace 를 통한 파악 ( 지난 시간 이력 파악 시, 실시간이 파악은 SQL 을 통해서 ) 2022.11.19 - [Oracle/Oh Oracle ] - Hang Manager(HM) https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-SES..

Oracle/Oh Oracle 2022.12.31

Oracle, Rename Sequence

Oracle, Rename Sequence 업무 요건 : 시퀀스 RENAME 되나요 ? 채번은요 ? 결론 : 시퀀스 Rename 지원 되구요, RENAME 시점에 CACHE 만큼 SEQUENCE 값이 증가 합니다. EX) 현재 LAST_NUMBER 가 100021 이고, CACHE 20 이면 , RENAME 시점에 LAST_NUMBER 가 100041 로 변경됨 RENAME : Use the RENAME statement to rename a table, view, sequence, or private synonym. https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/RENAME.html#GUID-573347CE-3EB8-42E5-B..

Oracle/Oh Oracle 2022.12.23

APPEND VS CTAS ( DB FORCE_LOGGING=NO) VS CTAS ( DB FORCE_LOGGING=YES)

APPEND VS CTAS ( DB FORCE_LOGGING=NO) VS CTAS ( DB FORCE_LOGGING=YES) 결론, REDO 발생 량은 CTAS NOLOGGING DB < APPEND < CATS LOGING FR0CE DB 순이다. CTAS LOGGING FORCE DB 상태에서는 REDO 가 무지 많이 발생한다. ( 하단 표 참조 ) 2022.12.13 - [Oracle/Oh Oracle ] - Append 와 Index( Normal, Unique, PK ) 관계 Undo used_ublk Undo use_rec Redo APPEND TEST 1 1 415,692 CTAS TEST WITH FORCE_LOGGING=NO 0 0 311,720 CTAS TEST WITH FORCE_LO..

Oracle/Oh Oracle 2022.12.22

PL/SQL 상세 에러 저장 하기

문의 : PL/SQL 에러 출력시, DEPTH 있는 에러 코드를 찍고 싶다. 일반 ) SQLERRM 를 통해서 에러 로그 출력 혹은 저장 상세 ) DBMS_UTILITY.FORMAT_ERROR_BACKTRACE 를 통해서 에러 상세 로그 출력 혹은 저장 비고 ) 아래 출처와 조금 다르게, log_prc 라고 상세 로그 저장을 위한 별도 PROCEDURE 를 생성함 참고 출처 : https://hrjeong.tistory.com/48 -- 에러관리를 위한 LOG_PRC 생성 -- 우선 일반적인 SQLERRM 만 저장하도록 컴파일 CREATE OR REPLACE PROCEDURE LOG_PRC IS V_ERROR VARCHAR2(1000); PRAGMA AUTONOMOUS_TRANSACTION ; -- 호출..

Oracle/Oh Oracle 2022.12.21