[ INVALID OBJECT 체크 ] 1개 batch procedure 안에 여러개의 sub procedure 들이 포함되어있다.이때 sub procedure에 진입하여, 수정을 하고 컴파일했다면, 해당 sub procedure를 호출하는 main object (procedure etc) 들은 invalid object가 된다. 그래서 main object 또한 Compile이 필요하다.팀원들이 혹시나 수정하고 Compile 안하는 경우가 있으므로, 항상 퇴근전에 해당 SQL로 확인해보는 것이 바람직하다.왜냐하면 수행되어야 할 배치 PROCEDURE가 수행되지 않는다면, 큰 사고가 아니겠는가? [ Invalid Object 조회 SQL ] SELECT * FROM DBA_OBJECTS WHER..
[ DB 분석 항목 ] 1. PARAMETER 2. SESSION & PROCESS 3. MEMORY 현황 4. SGA 상태 체크 5. PGA 상태체크 6. DATABASE SPACE 분석 7. SQL 프로파일링 8. 하드파싱 추이분석 9. 일별 I/O 추이분석 10. SEGMENT I/O 추이분석 11. METRIC 분석 ( DB Time, Cpu Time, TPS 등 ) 12. TOP 100 ( Time, Buffer 등 ) 13. Undo 14. Redo 15. 계정별 Object 현황 16. Wait Event 체크현장에 나오면 하게 되는 분석 항목!
테이블명이 소문자 영문명으로 지정이 되는가? 오라클 DICTIONARY 테이블에서 조회 할 경우에 테이블명은 모두 대문자로 조회합니다.테이블 생성시 소문자를 하더라도, 대문자로 데이터 처리가 되기 때문입니다. 그래서 DBA들이 내부적으로 조회, 스크립트를 만들때 UPPER( 테이블명 ) 함수를 사용할일이 없습니다.그런데 프로젝트에서 우연히 발견된 "소문자 테이블"!어림짐작해 보니 쌍따옴표를 붙여 "테이블명소문자"로 테스트 해보니 소문자로 테이블이 만들어지네요. 테스트를 위해 TEST_UPPER, LOWER, "lower" 문자열로 테이블을 생성해봅니다. [ 실 습 ] 1. 테이블 생성CREATE TABLE TEST_UPPER ( col1 varchar2(100) );CREATE TABLE LOWE..
[ 결론 ] : 단순 비교 결과 어느 것이 성능이 좋다는 유의미한 결과 전혀 없으며, 각 Function과 Expression 에 따른 특성 이해를 바탕으로 업무 SQL에서 어느 것을 선택하여 잘 사용하는 것이 핵심 1. 테스트 : " TB_TEST " 테이블의 특정 컬럼 데이터 5백 만 건 중 4,163,638건을 'KTH' 로 변환하여 성능 비교. 각 수행 되는 SQL은 모두 DISK I/O 없도록 처리함. 2. 결과 : NVL, COALESCE, NVL2, DECODE, CASE 순으로 빠르게 출력되나 의미 있는 수치 아님[1] NVL : Active Time :2023/08/22 16:43:45 / Execution : 1 / CPU Elapsed : 2..
[ 1 ] 프로파일 목적자원 관리CPU, 메모리, 세션 수, 기타 자원 사용량 제한데이터베이스 자원이 특정 사용자에게 독점되지 않도록 설정보안 정책 강화비밀번호 정책(복잡성, 길이, 만료 기간 등) 설정계정 잠금 및 비밀번호 실패 횟수 제한시스템 안정성 보장무한 세션 생성이나 자원 낭비 방지 [ 2 ] 프로파일 항목별 분류 1. 세션 및 CPU 제한RESOURCE_NAMEDESCRIPTIONSESSIONS_PER_USER사용자당 생성할 수 있는 동시 세션 수의 최대값.CPU_PER_SESSION세션당 사용할 수 있는 CPU 시간(백만 분의 1초 단위).CPU_PER_CALLSQL 호출당 사용할 수 있는 CPU 시간(백만 분의 1초 단위).CONNECT_TIME세션 연결 시간(분 단위)에 대한 최대값...
1. 동일 Row 변경에 의한 TX Enqueue : http://www.exemwiki.com/?p=1949 : Enqueue는 lock의 종류이다. Oltp 환경에서 자주 볼 수 있는 Tx Enqueue는 A 사용자가 Dml 후, Commit or Rollback을 하지 않은 상태체서, B 사용자가 Dml 작업 시도시 무한대기 하고 있을때 나타난다.이를 해소하기 위해서는 A 사용자의 Dml Transaction을 Commit or Rollback 처리하여, 종료를 시켜야 한다. 운영Db에 이와 같은 상황이 발생이 잦다면, 문제 모듈을 분석하여 최대한 DML후 다른 작업 없이 Commit or Rollback 이 되도록 수정해야 한다.2. Sql 파싱( Hard Parsing & Soft Parsin..
[ 1 ] 문제 상황 1) Orange, Toad로 Oracle 19c Enterprise 접속 시도 > 아래 에러 발생 ( Orange, Toad 동일 ) 2) Orange와 Toad DB Tool의 Oracle Home은 Instanct Client ( 19_5_32 )로 되어있음 [ 2 ] 해결 방법 1) Instant Client가 설치된 폴더 -> sqlnet.ora 열기 -> 아래 문구 붙이기 DISABLE_OOB=ON : 사용하고 있는 DB가 DOCKER에 로딩되어 있는데 해당 에러는 가상화 환경에서 발생 가능함. 해결책은 아래 2가지인데 쉽게 해결 가능한 2번을 선택함 자세한 내용은 아래 참고사이트를 확인하시기 바람 DISABLE_OOB에 따른 채널 변경 사항이 있는데 D..
데이터베이스에서 공백으로 추정되나 실제는 공백이 아닌 문자들 때문에 힘들어하는 개발자 분들이 많습니다. 특히 데이터가 많고, 업무가 바쁠 때는 정확한 원인을 파악하지 못하고 넘어가곤 합니다. 이런 상황에서 도움이 되는 것은 ASCII 코드에 대한 이해입니다. 컴퓨터는 실제로 문자를 인식할 수 없기 때문에 모든 문자를 숫자로 매핑하는 방식인 ASCII 코드로 문자를 저장합니다. 아스키는 7비트 인코딩으로, 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 총 128개로 구성되어있습니다. 맨 아래 ASCII 코드 일람표를 보면 우리가 사용하는 "공백 문자 (10진수 32 / 16진수 20 / 문자 SPACE)" 외에도, 눈에 잘 보이지 않지만 특수한 역할을 하는 문자들이 ..
[ 1 ] 데이터 무결성과 제약조건의 관계 : 무결성(無缺性)은 없을 무, 결함 결, 성질 성으로 "결함이 없는 성질"을 의미한다. "데이터 무결성"은 데이터의 "정확성, 완전성, 일관성, 유효성"을 지켜, 데이터의 결함이 없도록 하는 것이다. 이를 위해 데이터베이스에서 보편적으로 "제약조건"을 통해 "데이터 무결성"을 유지하려고 한다. 이번 글에서는 "무결성 유형" 알아보고, 데이터베이스가 "유형별 무결성"에 어떻게 대응하여 관리하는지 알아보자. ※ 제약조건 : 데이터 값에 대한 추가적인 규칙을 설정하여 데이터의 무결성을 보장하는 역할 [ 2 ] 무결성 유형 1. 개체 무결성(entity integrity) - 정의 : 기본 키값으로 정의한 속성은 항상 널(null) 값을 ..
오라클에서 성능수치를 추출하다보면, 데이터 값 단위가 보통 "마이크로초", "밀리초", "센티초" 나타냄을 알 수 있다. 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..
: DB 분석시 필수적으로 조회해야 하는 파리미터이고, V$PARAMETER 뷰로 검색되지 않는 파리미터이다. SYS 계정으로 접속하여 아래 쿼리 조회 하자.SELECT X.KSPPINM -- 히든파라미터명 , X.KSPPITY -- 파라미터 타입 , X.KSPPDESC -- 파라미터 설명 , Y.KSPPSTVL -- 설정값 , Y.KSPPSTDFL -- 디폴트값 FROM X$KSPPI X, X$KSPPCV Y WHERE X.INDX = Y.INDX AND UPPER(X.KSPPINM) LIKE '%CURSOR_SHARING%' -- 파라메터 명칭 AND REGEXP_SUBSTR(X.KSPPINM,'^[_]', 1, 1) IS NOT NULL;..
ORACLE 설치된 서버의 CPU와 MEMORY 수치 조회와 결과해석 [ 조회 SQL ]SELECT INST_ID , STAT_NAME , VALUE , CASE WHEN REGEXP_LIKE( COMMENTS,'bytes','i') THEN ROUND( VALUE / POWER(1024,3),1) END AS "용량(GB)" , COMMENTS FROM GV$OSSTAT a WHERE REGEXP_LIKE (STAT_NAME,'PHYSICAL_MEMORY_BYTES|NUM_CPUS|NUM_CPU_CORES|NUM_CPU_SOCKETS','i') [ 조회 결과 ][ 해석 ]인스턴스 1번 운영 서버 1) NUM_CPU_SOCKETS : 1 => 소..
Containers in a CDB [1] STUDY 요약 1. 컨테이너 : CDB 컨테이너, PDB도 컨테이너이며 CDB가 논리적으로 상위 개념입니다. 컨테이너는 여러 개의 데이터베이스를 하나의 인스턴스에서 관리할 수 있도록 해주는 독립적인 단위입니다. 이러한 컨테이너는 두 가지 주요 유형으로 나눌 수 있습니다: 1) CDB : Container Database : CDB는 여러 개의 플러그형 데이터베이스(PDB)를 포함할 수 있는 상위 컨테이너입니다. CDB 자체는 관리 및 설정 작업을 위한 메타데이터와 공통 시스템 데이터베이스를 포함합니다. 2) PDB : Pluggable Database ..
==== 목차 ==== [ 1 ] 아카이브 모드 설정방법 [ 2 ] 아카이브 파일 저장경로 설정방법 1. FRA (Fast Recovery Area) 관리 2. log_archive_dest 관리 ( 이중화 실습 ) 3. log_archive_dest_n 관리 ( 삼중화 실습 ) ※ 위 1, 2, 3번으로 아카이브 저장경로 1곳으로 설정가능하나, 사용방법 이해를 위해 최대한 다중으로 저장해보는 실습 [ 3 ] 백업 파일은 FRA 저장, 아카이브만 별도 경로 설정방법 [ 1 ] 아카이브 모드 설정 방법 1. 아카이브 모드 확인 : database 설치시에 Archive Mode를 설정하지 않아, No Archive Mode이다. sqlplus / as sysdba SQL> arc..
오라클 데이터베이스에서 발생하는 "ORA-00023" 오류는 세션과 프로세스의 메모리 관리와 관련된 복잡한 문제를 나타냅니다. 이 오류는 세션을 분리하려고 할 때, 해당 세션이 여전히 프로세스의 개인 메모리를 참조하고 있기 때문에 발생합니다. 오류 설명"ORA-00023" 오류는 DBA가 데이터베이스 세션을 분리하거나 종료하려고 시도할 때, 해당 세션이 아직 프로세스의 개인 메모리(예: PGA, Program Global Area)를 사용 중일 때 발생합니다. 이러한 메모리는 프로세스가 소유하며, 세션 분리 전에 적절히 정리되어야 합니다. 시나리오DBA인 박태준 씨는 금융 회사의 오라클 데이터베이스 시스템을 관리하고 있습니다. 태준 씨는 데이터베이스의 성능 최적화를 위해 일부 세션을 분리하고 재할당하는 ..