본문 바로가기
반응형

oracle38

[oracle] index unusable DML 테스트 DBMS: oracle 19.3 - unusable index를 사용하지 않으면 조회 및 DML 가능 - unique index가 unusable인 경우 : insert 불가능 : 인덱스에 해당하는 컬럼 아닌 경우 update 가능 - 세션레벨에서 unusable index를 사용 안 하도록 설정 : ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE ; [목차여기] non-unique index SQL> SELECT count(*) FROM sk.t1 ; COUNT(*) ---------- 71968 SQL> CREATE INDEX sk.t1_ix1 ON sk.t1(owner,object_name) ; Index created. SQL> SELECT owner, inde.. 2024. 3. 17.
[oracle] 스케줄러(dbms_scheduler) 실행 시간대(time zone) - 오라클 스케줄러(dbms_scheduler) JOB 생성 시 시간대는 무엇인가 - JOB 등록시 세션 시간대로 등록되며 DBA_SCHEDULER_JOBS에서 시간대가 포함된 시간 확인 가능 - 스케줄 JOB 실행 시간대는 OS time zone 기준 참고: oracle 리스너 timezone 설정 oracle alert.log 시간대(time zone) 기준은 무엇인가 oracle 오브젝트 생성시간은 어떤 시간대(time zone) 세션 시간대 KST에서 JOB 생성 세션 시간대 KST로 설정 후 TEST_KST JOB 생성합니다 -- 세션 시간대 KST로 변경 SQL> ALTER SESSION SET TIME_ZONE = '+09:00'; Session altered. -- 세션 시간대 확인 SEL.. 2024. 2. 22.
[oracle] alert.log 시간대(time zone) 기준은 무엇인가 OS: linux 7.5 DBMS: oracle 19.3 [목차여기] - 오라클 alert.log의 시간대는 어떤설정을 기준으로 적용되는지에 대한 테스트 - OS시간대 기준으로 alert.log 시간이 적용된다 : 정확히는 DB 기동하는 세션의 시간대 참고: oracle 오브젝트 생성시간은 어떤 시간대(time zone) 현재설정(UTC) 현재설정은 UTC(sysdate 확인)로 되어있고 alert.log도 동일한 시간대로 찍히는것으로 확인됩니다 SQL> SELECT dbtimezone, sessiontimezone, sysdate, current_date FROM dual ; DBTIME SESSIONTIMEZONE SYSDATE CURRENT_DATE ------ --------------------.. 2024. 2. 18.
[oracle] 오브젝트 생성시간은 어떤 시간대(time zone) OS: linux 7.5 DBMS: oracle 19.3 오라클에서 오브젝트 생성일시를 확인하려면 DBA_OBJECTS 테이블의 CREATED을 조회합니다. 여기저기 여러 곳에서 오브젝트를 생성하는 경우는 없겠지만 해당 컬럼에 들어가는 시간은 어떤 기준으로 들어가는지에 대한 테스트입니다. [목차여기] - DB time zone, session time zone, OS time zone 3개의 값을 비교하여 어떤 시간대를 기준으로 데이터가 들어가는지 테스트 - 생성시간 기준시간대는 OS Time Zone 시간대(sysdate, systimestamp 시간) 참고 oracle alert.log 시간대(time zone) 기준은 무엇인가 DB TZ: KST, SESS TZ: KST, OS TZ: UTC 세션1.. 2024. 2. 17.
[oracle] 테이블 LOB Object 이름 지정 DBMS: oracle 19.3 오라클은 테이블에 LOB컬럼 포함 시 기본적으로 SYS_LOBxxx(데이터), SYS_ILxxx(인덱스)와 같은 이름으로 자동생성됩니다. 이름을 지정하여 생성하는 방법과 변경방법 그리고 특이사항에 대한 내용 입니다. [목차여기] 테이블 생성 LOB명 지정/미지정(기본) 2개 테이블 생성 -- LOB 이름지정 CREATE TABLE SK.LOBTEST1 ( C1 VARCHAR2(255) NOT NULL, LOB1 CLOB NULL ) TABLESPACE TS_DATA LOB(LOB1) STORE AS LD_LOBTEST1_LOB1 (TABLESPACE TS_LOB INDEX LI_LOBTEST1_LOB1 (TABLESPACE TS_LOB)) ; -- 기본 CREATE TAB.. 2024. 2. 8.
[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.
반응형