ER DIAGRAM 추출
SQL Developer에서도 물리 ER DIAGRAM을 추출 할 수 있다. 메뉴 > 파일 > Data Modeler > 임포트 > 데이터 딕셔너리 > 이후 작업은 아래 영상에 확인
- ORACLE/SQL Developer Tool
- · 2024. 11. 6.
SQL Developer에서도 물리 ER DIAGRAM을 추출 할 수 있다. 메뉴 > 파일 > Data Modeler > 임포트 > 데이터 딕셔너리 > 이후 작업은 아래 영상에 확인
[ 목 차 ] 1. 행번호 토글 2. 대소문자 단축키 설정 3. 배열 인출 크기 ( FETCH 단위 설정 ) 4. NULL값 표시 제거 ( 교육생은 제거 하지 않기 ) 5. 폰트 변경 6. 익스포트 ( 엑셀 다운 ) [ 영상 ]1. 행번호 토글 2. 대,소문자 단축키 설정 3. 배열 인출 크기 ( FETCH 단위 설정 ) 4. NULL값 표시 제거 5. 폰트 변경 6. 익스포트 ( 엑셀 다운 )
인덱스 생성시, 컬럼명을 "가공" 또는" 정렬 문구"를 기입하면 오라클이 내부적으로 FUNCTION-BASED INDEX를 생성한다. 그런데 그 이유 때문에, 아래 작업 하다가 애로사항이 발생한다. 1) 테이블의 인덱스와 구성컬럼을 일괄적으로 보고 싶은 경우 2) DBA 또는 튜너가 관리 인덱스테이블과 실제 DB에 생성되어 있는 인덱스의 컬럼간 동일여부 확인하고 싶은 경우 왜냐하면, 가공 컬럼은 인덱스 구성 컬럼 VIEW에서 "SYS_NC0000$" 형태로 나타나기 때문이다.이를 해결하기 위해서는 "FUNCTION" or "XML" 처리를 하면 된다.이번 글은 함수를 별도로 만들지 않고 편한 XML 형태이다. [1] 테스트 테이블 & 인덱스 생성 CREATE TABLE TB_FUNC( CO..
오라클에서 성능수치를 추출하다보면, 데이터 값 단위가 보통 "마이크로초", "밀리초", "센티초" 나타냄을 알 수 있다. 1 마이크로초 = 1/1,000,000 초 = μs = 1 microsecond1 밀리초 = 1/1,000 초 = ms = 1 millisecond1 센티초 = 1/100 초 = cs = 1 centisecond 즉, 오라클에서 위 단위로 데이터가 있으면 단위에 맞게 나누기하면 "초" 단위로 조회된다. [ 예시 ] SELECT ELAPSED_TIME , ELAPSED_TIME / 1000000 , ELAPSED_TIME / POWER(10,6) , ELAPSED_TIME / 1E6 FROM V$SQL ORDER BY 1 DESC; S..
차세대 프로젝트 또는 운영 시스템에서 사용하지 않은 인덱스가 간혹 있을 것이다. 그래서 그 미사용되고 있는 인덱스를 체크, 관리 하기 위한 방법을 정리해본다. 1. 인덱스 설계 : 프로젝트 중 인덱스를 보통 아래 상황에서 생성 / 변경 하게 된다. 1) 튜닝 요청 : SQL 튜닝 중 2) 모니터링 : SQL 튜닝 중 3) SQL 소스 분석 : 차세대 프로젝트에서는 풀 소스를 보고 100% 있어야 하는 곳은 미리 생성해두기도 한다. 2. 인덱스 사용여부 주기적 확인 : 생성된 인덱스가 사용되고 있는지 어느 시점에는 체크 해 볼 필요가 있다. 설계 당시에는 당연히 사용되었으나, SQL 변경으로 미사용 될 가능성이 있기 때문이다. 아래는 INDEX 사용여부를 체크하는 3가지 방법이다. 1) ..
DBADM 계정(DBA용)으로 프로시져를 생성하였다. 프로시져 생성 목적은 타 스키마(HUAM_OWN)의 OBJECT를 관리하기 위함이다. 예시로써, 타 스키마의 인덱스를 재생성하려고 한다. ( DROP & CREATE )프로시져를 호출했으나 ERROR가 발생한다. DBADM은 DBA ROLE 권한을 가졌는데 왜 안되는 걸까? [1] HUAM_OWN 계정 = 스키마 1.1 테이블 & 인덱스 생성 CREATE TABLE HUAM_OWN.TB_TEST_007( COL1 VARCHAR2(100) );CREATE INDEX HUAM_OWN.IX_TB_TEST_007_01 ON HUAM_OWN.TB_TEST_007 ( COL1 ) ; CREATE PUBLIC SYNONYM TB_TEST_007 FOR..
오라클에서 권한(Privileges)은 크게 3가지로 나뉜다. 1. 시스템 권한(SYSTEM PRIVILEGES) : 데이터베이스 전체에서 특정 작업을 수행할 수 있는 권한. 2. 롤(ROLE) : 여러 (1,2,3) 권한을 그룹화하여 관리하기 쉽게 만든 권한 세트 3. 객체 권한(OBJECT PRIVILEGES) : 특정 데이터베이스 객체(테이블, 뷰, 프로시저 등)에 대해 특정 작업을 허용하는 권한 각각의 권한은 데이터베이스에서 다른 유형의 작업을 제어하며, 이 권한들을 통해 사용자는 다양한 데이터베이스 작업을 수행 할 수 있다. 아래는 위 3가지 관련 불출현황 조회 쿼리 이다. DB : ORACLE 19C 1. 오라클 SYSTEM 권한 조회 : 총 257 개 ( 개인적으로는 이 테이블..
DB : ORACLE 19c 1. 유저 drop 시도 - Sys 계정으로 oracle 계정 삭제 시도 DROP USER DBADM CASCADE; 2. 에러 발생 - ORA-28014 : CANNOT DROP ADMINISTRATIVE USER OR ROLE 3. 해결 방안 - 계정 생성시 "alter session set "_oracle_script"=true;"로 세션 상태 변경 후 생성한 계정을 drop 하면 발생하는 에러 이다. 동일하게 세션 상태 변경 후에 drop user 시도하면 문제 없이 user가 삭제된다. alter session set "_oracle_script"=true;DROP USER DBADM CASCADE;
[ 목차 ] 1. 목표 2. 테스트 계획 3. 실행 결과 분석 3.1. Buffer 관점 3.2 Fetch 중 데이터 변화 추이 관점 3.2.1. 일반 함수 vs Deterministic vs ( Deterministic + 스칼라 서브쿼리 ) 분석 3.2.2 일반 함수 vs Result Cache vs ( Result Cache + 스칼라 서브쿼리 ) 분석 4. 정리 1. 목표 : 사용자 함수를 다양한 경우의 수로 Call 하고, 함수 유형 및 호출 방법에 따른 우선 순위 및 결과 분석을 하고자 함 ※ 호출 방법 경우의 수 : Result Cache는 미리 Input/Ouput값을 캐싱 한 후에 실행 함 함수 유형에 따른 운영 관리 촛점을 두면 매우 길어지므로 위 목표에 한해 이해하고자 함..
Literal SQL을 검색한다는 것은 논리상 동일한 SQL임에도 불구하고 지속적으로 Hard Parsing 을 발생키시는 SQL을 찾는것이다. 보통 Literal Sql을 찾을때는 아래 쿼리를 사용한다. select *from ( select parsing_schema_name, sql_id, sql_text, executions , sum(executions) over (partition by force_matching_signature ) executions_sum , row_number() over (partition by force_matching_signature order by sql_id desc) rnum , count(*) over (partition ..
WHERE LIKE '%'|| :1 || '%' 양 퍼센트 성능 개선을 위한 방법을 알아보자 [ 문제 ] 개발자들은 Like :1 ||'%' 쓰기도하나, 습관 또는 어플리케이션에 적용해도 업무 데이터에 문제가 없다는 이유로 LIKE '%' || :1 || '%' 두기도 한다. 그래서 다양한 방법으로 Like 양 '%' 를 테스트하여 성능 개선이 되는지 테스트 하려고 한다. 우선 최적의 솔루션인 =, 앞 '%' 제거하는 2가지의 결과는 생략한다. 불가피하게 '%' || :1 || '%' 를 쓸 수 밖에 없는 상태에서 어떻게 해야할까? 고민의 흔적이다. [ Test 테이블 ] 1 .테이블명 : TB_EMP_BIG2 / 1,000,000 건 / 61,440 Block / 480 MB 2. 인..
[ 1 ] 문제 공공 차세대 프로젝트에 DB 튜너로 투입되었습니다. OZ Report에서 질의하는 SQL이 Literal Sql로써, Hard Parsing 처리 되는 문제점을 확인 하였습니다. 즉, SQL 질의하면 매번 많은 "실행계획 생성 > Cost 평가 > 그 중 가장 낮은 실행계획 선택 > 소스 생성 " > SQL 실행 됩니다.DB CPU 사용률, SQL Parsing Time 증가 되는 현상이 발생되며, Report 사용이 많을 수록 그 현상은 뚜렷해집니다. [ 2 ] 해결 방법 - ODI 파일 > 데이터 셋(마다) 속성 > "컴파일된 질의문 사용" > True 변경[ 3 ] 검증 1. "컴파일된 질의문 사용" > FALSE > 2번 질의 > DB SQL 조회 : SQL Curs..
버전별로 신규 생성된 힌트를 볼 수 있다. 힌트가 문장, 쿼리블록, 오브젝트, 조인 중 어디와 관련된것인지 파악도 가능하다. SELECT VERSION, VERSION_OUTLINE OUTLINE, NAME, INVERSE, SQL_FEATURE, CLASS, DECODE(BITAND(TARGET_LEVEL,1),1,'State') AS STATEMENT_LEVEL, DECODE(BITAND(TARGET_LEVEL,2),2,'QBlock') AS QUERY_BLOCK_LEVEL, DECODE(BITAND(TARGET_LEVEL,4),4,'Object') AS OBJECT_LEVEL, ..
인덱스 INVISIBLE 처리 방법은 매우 유용하게 사용할 수 있는 기술이다. [ 활용 ] 1. 신규 INDEX를 생성시 INVISIBLE OPTION을 주면 타 어플리케이션에 방해 주지 않고, 인덱스 생성한 담당자의 SQL이 정상적으로 튜닝이 되었는지 체크 가능. 2. INDEX DROP전 INVISIBLE로 영향도 파악이 가능. - INVISIBLE 처리 > 성능이슈 발생 > 즉시 INDEX VISIBLE > 성능 정상 복귀 - 오랜 기간 INVISIBLE 된 상태 인덱스를 힌트로 강제로 사용 중인 것이 있다면 해당 SQL 찾기는 다른 방법이 필요함. [ Parameter ]SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'optimizer_use..
1. 문제 발생 오후 22:00에 지인에게 연락옴 19C DB에서 AWR 수행이 13시에서 멈추었다는 소식을 들었음 DB 설치하고 DB서버 시간을 한국시간대로 변경작업 하지 않은 기억이 남select sysdate + 9 / 24 , sysdate from dual ; 위 결과 Sysdate 결과값은 영국시간 기준 날짜가 출력됨 AWR은 정상으로 수행되고 있으나 시간차이로 인한 오해가 발생되면 안되므로 한국 시간대로 변경 필요함 2. 조치 방법 2.1) Server 접속 : oracle 계정 .bash_profile에 아래 기입 - export TZ=Asia/Seoul - 저장 후 source .bash_profile 수행 ( 환경변수에 바로 적용 ) 2.2) Orac..