본문 바로가기
반응형

oracle33

[oracle] optimizer_adaptive_plans 기능 설명 및 권장값 DBMS: oracle 19.3 1. adaptive plan optimizer_adaptive_plans는 실행 중인 쿼리의 실행 계획을 동적으로 조정하여 최적의 성능을 제공하는 데 사용됩니다. 아래 예시처럼 실행계획에 STATISTICS COLLECTOR 구문이 보이면 adaptive_plans이 적용됩니다. 실행계획에 조인 방법이 2개 보이는데(HASH JOIN과 NL JOIN이 함께 보임) SQL실행 시 2개의 방법 중 수집된 통계를 바탕으로 최적의 경로를 선택하는 기능입니다. 관련 파라미터 optimizer_adaptive_plans(기본값: true) 운영환경에서 갑작스런 PLAN변경은 민감한 부분이기 때문에 비활성(false) 권고 adaptive plan 기능 비활성 힌트 no_adapti.. 2023. 12. 22.
[oracle] datapump 이기종버전 원격지 데이터 로컬로 가져오기 OS : oracle linux 7.5 DBMS : oracle 19.3 [목차여기] - 서로 다른 버전간 expdp 실행 - 원격 데이터 -> 로컬DB (dump 파일 생성 없이 DB에 바로 테이블 생성) 참고: oracle expdp 원격지(remote) 데이터 로컬로 가져오기 19c(리모트) -> 11g(로컬) 원격 데이터 expdp 에러 [oracle@svr1 ~]$ expdp skdba/oracle NETWORK_LINK=remote_link TABLES=sk.t1 directory=exp_dir dumpfile=skdba.dmp logfile=skdba.log Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 6.. 2023. 12. 3.
oracle expdp 원격지(remote) 데이터 로컬로 가져오기 OS : oracle linux 7.5DBMS : oracle 19.3[목차여기]- 리모트 DB의 데이터를 expdp로 가져와 로컬(local)에 저장하는 방법- DB, 스키마, 테이블 별 expdp 방법- ORA-31631, ORA-39149 에러 발생 시 조치 방법 DB LINK 생성using 부분에 들어가는 값은 tnsnames.ora 에 등록되어 있는 리모트 DB Alias-- DB LINK 생성create public database link remote_link connect to skdba identified by "skdba"  using 'ORA19C' ;SELECT * FROM dba_db_links ;OWNER |DB_LINK       |USERNAME|HO.. 2023. 12. 1.
오라클 NTILE 함수 설명 및 사용법 NTILE 분석 함수 - NTILE()의 괄호 안에는 나누고 싶은 만큼의 데이터 등급 개수를 적어주고, OVER 다음에 나오는 괄호 안에 등급을 나누고 싶은 조건을 넣으면 등급별로 출력됨 - 전체 행 데이터 수를 그룹으로 나누었을 때 나머지가 존재하면 첫 번째 그룹부터 나머지가 안남을 때까지 1씩 부여 : 전체 14건을 3그룹으로 나눌때 그룹당4개씩이고 나머지가 2이므로 그룹1=4+1, 그룹2=4+1, 그룹3=4 이렇게 만들어짐 NTILE 사용 문법 SELECT NTILE({그룹수}) OVER (PARTITION BY {컬럼명} ORDER BY {컬럼명}) EMP 테이블 데이터 전체 데이터를 SAL 역순으로 정렬하여 3등급으로 나눈다 PARTITION BY 구문이 없기 때문에 전체 데이터를 대상으로 등급.. 2023. 10. 3.
오라클 START WITH ... CONNECT BY(계층쿼리) 사용법 오라클 계층쿼리START WITH... CONNECT BY 구문사용법에 대해 알아본다 아래 EMP 테이블은 사원정보를 관리하는 테이블로 사장(king)부터 부하직원까지 모든 직원 정보를 가지고 있다.컬럼을 살펴보면 사원번호(EMPNO)와 관리자번호(MGR)이 보이는데 상급자와 부하직원의 관계가 확인 가능하다.예를들면 MILLER의 관리자(MGR=7782)는 CLARK(EMPNO=7782)이고CLARK의 관리자(MGR=7839)는 KING(EMPNO=7839)이렇게KING(사장) -> CLARK(중간관리자) -> MILLER(사원) 트리구조가 만들어진다.이런 계층구조 결과를 조회할때 사용하는 것이 CONNECT BY 구문이다. 샘플테이블 생성 DDL 참고 : 오라클 EMP, DEPT 샘플 테이블 생성 스크.. 2023. 9. 15.
오라클 숫자(number), 날짜(date) 타입 컬럼 byte size 구하기 - oracle 컬럼 타입 중 숫자, 날짜 등의 byte 사이즈를 구하는 방법 - 사이즈를 구하는 length(글자수), lengthb(byte size), vsize(byte size) 함수의 결과 비교 - 숫자나 날짜 컬럼은 vsize 함수를 사용하여 byte 사이즈를 구할 수 있다테스트 테이블 및 데이터 생성CREATE TABLE sk.t1 (c1 varchar(100), c2 NUMBER(10), c3 DATE) ; INSERT INTO sk.t1 values('가나다', 1234, sysdate) ; INSERT INTO sk.t1 values('ABC', 123456, sysdate) ; COMMIT ; SQL> select * from sk.t1 ; C1 C2 C3 ---------- ---.. 2023. 9. 5.
PARALLEL SQL DBMS_XPLAN 실행통계 보기 DBMS : oracle 19.19 - 일반적인 DBMS_XPLAN 에서는 parallel 프로세스에 대한 통계확인이 안된다 - ALLSTATS ALL 옵션을 사용한 누적 통계 확인 시 parallel 프로세스 확인 가능 : parallel SQL 확인 시 ALLSTATS ALL 및 child_number(두번째 파라미터) 적절히 변경 - ALLSTATS ALL 은 누적치를 보여주므로 주석을 바꿔가면서 수행하여 sql_id를 변경하며 실행하는 방법으로 진행 : 모든 프로세스 통계의 합이라 실행시간은 실제 실행시간보다 많음 - child_number stats은 아래 뷰에서 확인 가능 : SELECT * FROM V$SQL_PLAN_STATISTICS_ALL WHERE SQL_ID = '0ktqj13jw7.. 2023. 8. 4.
INSERT..SELECT / INSERT..VALUES 성능 테스트 DBMS : oracle 19.3 - insert into values 로 한 건씩 처리하는 것과 insert into .. select 방식의 redo 와 buffer get 등 성능 차이 테스트 - insert into select 방식이 훨씬 좋은 성능을 보인다 100만건 insert 테스트 - insert into select 방식 SQL> alter SESSION SET STATISTICS_LEVEL = ALL ; SET LINESIZE 2000 SET PAGES 10000 Session altered. SQL> SQL> SQL> SQL> set timing on SQL> select b.name, a.value from v$mystat a, v$statname b where a.STATISTI.. 2023. 8. 2.
rollup, grouping sets, cube, grouping 함수 rollup grouping sets cube grouping 함수에 대해 알아본다 -- 샘플 테이블 및 데이터 생성 CREATE TABLE TAB10 ( ID VARCHAR2(5), MON VARCHAR2(10), COM VARCHAR2(10), VAL INTEGER ); INSERT INTO TAB10 VALUES ('P001', '2019.10', '삼성', 15000); INSERT INTO TAB10 VALUES ('P001', '2019.11', '삼성', 25000); INSERT INTO TAB10 VALUES ('P002', '2019.10', 'LG', 10000); INSERT INTO TAB10 VALUES ('P002', '2019.11', 'LG', 20000); INSERT I.. 2023. 7. 30.
리스너에 IP/포트 여러개 등록 리스너에 IP 또는 포트 여러개 등록 - listener.ora 파일에 아래와 같이 여러개 등록 해준다 - 리스너 재기동 필요 - local_listener 사용 등록 시에도 listener.ora 파일에 IP와 포트는 등록되어 있어야 한다 listener.ora 파일 수정 [ora19ent@svr ~]$ cat /ora19ent/product/network/admin/listener.ora LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.105)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.108)(PORT = 1522)) (.. 2023. 7. 26.
oracle ABS 함수, 절대값을 구하는 함수 ABS 함수 - 절대값을 구하는 함수로 음수의 데이터를 양수로 표기하여 보여줌 - 컬럼 타입이 number(숫자타입)가 아닌 문자타입도 가능(단 숫자로 변환 가능한 값이어야 함) -- DUAL 사용 단순 테스트 SQL> SELECT ABS(10), ABS(-10), ABS(10.10), ABS(-10.10), ABS('7'), ABS('-7') FROM DUAL ; ABS(10) ABS(-10) ABS(10.10) ABS(-10.10) ABS('7') ABS('-7') ---------- ---------- ---------- ----------- ---------- ---------- 10 10 10.110.1 7 7 -- 테이블 생성하여 테스트 SQL> CREATE TABLE SK.ABS_TEST A.. 2023. 7. 18.
ORDER BY 컬럼명이 가리키는 컬럼은? ORDER BY 컬럼명이 가리키는 위치는 실제 컬럼명일까? alias 일까? - 먼저 SELECT 절 컬럼명(alias)을 찾아보고 없으면 실제 컬럼을 찾아간다 테이블 데이터 조회 SELECT * FROM sk.t1 ; C1 C2 ---------- ---------- 1 5 2 4 3 3 4 2 5 1 alias 명으로 정렬 alias (c1 -> c2, c2 ->b) 라고 선언 후 order by c2 실행 SELECT c1 c2 , c2 b FROM sk.t1 ORDER BY c2 ; C2 B ---------- ---------- 1 5 2 4 3 3 4 2 5 1 실제 컬럼명 정렬 alias (c1 -> a, c2 ->b) 라고 선언 후 order by c2 실행 SELECT c1 a, c2 b.. 2023. 7. 3.
NCHAR(national character set) 테스트 - NCHAR는 byte가 아닌 글자 수 단위 nvarchar2(100)은 100글자 - AL32UTF8은 AL16UTF16의 Super Set 이므로 AL32UTF8 DB에서는 사용할 필요 없음 - 영문, 숫자 모두 2byte로 저장되기때문에 공간낭비가 있을 수 있음 SQL> SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS where parameter IN ( 'NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET' ) ; PARAMETER VALUE ------------------------------ ------------------------------ NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHAR.. 2022. 10. 7.
APPEND 사용 시 logging / nologging 에 따른 로그 사용량 변화 대량 INSERT 작업에서 로그발생 최소화 및 성능을 위해 APPEND 힌트 사용 시 테이블 logging/nologging 에 의한 로그발생량 차이가 있는가? 요약 : - 테이블 nologging + APPEND 사용 시 로그 발생량 가장 적음(테이블 logging 모드에서 append 힌트만 사용한 경우도 로그발생량 감소 효과는 있음) - 인덱스는 logging / nologging 에 상관없이 무조건 log 사용(인덱스 nologging은 생성 시 적용되는 옵션) - 파티션 구문 추가하여 파티션 단위 작업 시 해당 파티션만 LOCK 잡힘(여러개 파티션 동시 작업 가능) 주의사항 : - APPEND 힌트 사용 시 TABLE LOCK 발생으로 다른 세션에서 DML 불가능 - insert 중에는 segm.. 2022. 2. 27.
테이블 조회 시 다른 세션에서도 uncommit block 을 읽을까? DB 버전 : Oracle Database 11.2.0.1 요약 : 테이블에 commit 되지 않은 데이터가 있고 다른 세션에서 해당 테이블 조회 시 commit 되지 않은 데이터를 읽어 올까? INSERT 만 발생시키고 uncommit 상태에서 다른 세션을 통한 데이터 조회 시 uncommit block 조회 하는 것 확인 됨 RAC 환경에서 commit 되지 않은 데이터를 가진 테이블을 다른 노드에서 조회 시 어떻게 동작 할까? RAC 환경에서 LMS 프로세스가 uncommit block 다른 노드로 전달 해줌 다른 노드에서 두번째 조회 시 buffers 가 올라 가는 것으로 봐서 최초 조회 시 local undo 에 저장 후 재 조회 시 사용 하는 것으로 보임 LMS(Global cache serv.. 2022. 2. 25.
반응형