ERROR CODE / 설명1. SYS 계정으로 접속 후, 계정 생성 시도하나 에러 발생CREATE USER TUNER IDENTIFIED BY "1111";ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 발생 원인 : 12C 부터는 계정의 접두어로 C##을 붙이 계정으로만 생성이 가능하기 때문이다.CREATE USER C##TUNER2 IDENTIFIED BY "1111";계정 정상 생성 완료 해결방법: SESSION에 "_ORACLE_SCRIPT"를 TRUE로 변경한다. 현재 세션에서 Oracle의 내부 스크립트 모드를 임시로 활성화.ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;CREATE USER TUNER IDENTIFIED BY "1111";정상 생성..
ASH 보고서 출력하기 1. DB ID와 INSTANCE NUMBER 조회 SELECT 'DB_ID : ' || DBID AS COL1 FROM V$DATABASE UNION ALL SELECT 'INSTANCE_NUMBER : ' || INSTANCE_NUMBER FROM V$INSTANCE; /* DB_ID : 2909839947 INSTANCE_NUMBER : 1 */ 2. 10분전 부터 현재까지 ASH 보고서 출력 SELECT * FROM TABLE( DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_TEXT ( 2909839947, 1, SYSDATE - 1/24/60*10, SYSDATE )) ..
ERROR CODE / 설명WITH절을 많이 사용한 SQL에서, "실제로 사용하지 않는 WITH 절이 있는 경우 발생"한다. 실 경험으로는 SQL에 약 10개 WITH절 있는데, 순차적으로 WITH절 튜닝 중 7번째 WITH절 실행 플랜을 보려고 했다. 이 당시 1 ~ 6번째 중 1가지 WITH절을 사용하지 않은 경우 였는데, 이때 해당 에러가 발생하였다. 7번째 까지의 실행 플랜 확인은 넘기고, 최종 SELECT절로 실행 플랜 확인한 결과는 정상 출력 되었다. ORA-07445: exception encountered: core dump (nsoexp()+188] (SIGSEGV) [PC:0X5364F89] ( Address not mapped to object ) 발생 원인이 문제의..
ERROR CODE / 설명 ORA-23801: error signaled in parallel query server PPA8, instance ~ ORA-06512: at "SYS.DBMS_SQLTUNE" line 18940 ORA-22921: 입력 버퍼의 길이는 요구된 양보다 적습니다. ORA-06512: at "SYS.DBMS_SQLTUNE", line 14318 ORA-06512: at "SYS.DBMS_SQLTUNE", line 19036 ORA-06512: at "SYS.DBMS_SQLTUNE", line 19367 ORA-06512: at line 1 발생 원인 업무상 자주 사용하는 실시간 SQL 모니터링 함수이다. 그런데 어느날 업무 중에 위의 에러코드가 발생한다.그 당시 작업 했..
1. 행, 열 추가와 삭제 1) 열 추가 2가지 방법 ① 지정한 구역 잡기 -> Shift + Drag ② Ctrl + Space -> Ctrl + "+" 추가 ( "-" 삭제 ) 2) 행 추가 ① 지정한 구역 잡기 -> Shift + Drag ② Shift + Space -> Ctrl + "+" ( "-" 삭제 ) 2. 날짜 데이터 요일 표현 : AAAA는 월요일, AAA는 월로 표현됨 3. 난잡한 날짜 데이터 "-" 형태 날짜 데이터로 일괄 변경하기 : 왼쪽 데이터 블록 모두 잡기 -> 메뉴 데이터 -> 텍스트 나누기 -> 다음 x 2번 -> 열데이터 서식 날짜 선택 -> 마침 -> 왼쪽 데이터가 오른쪽 데이터와 같이 변경됨 ..
보통 TABLE, INDEX의 DEGREE가 1보다 크다면 아래 SQL로 병렬이 되지 않도록 설정한다.ALTER INDEX SOE_10G.CUSTOMERS_PK NOPARALLEL;가끔 왜 병렬 0 으로 하면 안되냐는 질문이 구글링해보면 있다. 아래 예제를 통해 확인 해보았다.오라클 사용자는 '0'으로 셋팅이 안된다.ALTER INDEX SOE_10G.CUSTOMERS_PK PARALLEL 0;에러발생 => ORA-12813: value for parallel or degree must be greater than 0※ Degree 0은 ORACLE 내부 스키마의 OBJECT 한에 사용 되고 있음.
[ 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 체크현장에 나오면 하게 되는 분석 항목!
READ"와 "BUFFER" 수치를 지원하지 않아 현재 아래와 같이 사용 중입니다. ( 물론 제가 모를 수도 있지만... ㅎㅎ ) HARD PARSING 처리 해야지만 "※ SQL INFORMATION " 정보가 누적되어 나오지 않으니 참고 바랄게요. [ 예시 ] 1) 사전 작업 alter session set gather_sql_exec_time = y; alter session set gather_sql_plan_stat = y; 2) 튜닝 대상 SQL 질의 SELECT * FROM DUAL; -- 튜닝 대상 SQL 질의 3) XPLAN 추출 SQL 질의[ 개별 SQL XPLAN ]SELECT CASE WHEN ROWNUM = 9 -- [ 고정 위치 ]THEN ' ※ SQL INFORMAT..
테이블명이 소문자 영문명으로 지정이 되는가? 오라클 DICTIONARY 테이블에서 조회 할 경우에 테이블명은 모두 대문자로 조회합니다.테이블 생성시 소문자를 하더라도, 대문자로 데이터 처리가 되기 때문입니다. 그래서 DBA들이 내부적으로 조회, 스크립트를 만들때 UPPER( 테이블명 ) 함수를 사용할일이 없습니다.그런데 프로젝트에서 우연히 발견된 "소문자 테이블"!어림짐작해 보니 쌍따옴표를 붙여 "테이블명소문자"로 테스트 해보니 소문자로 테이블이 만들어지네요. 테스트를 위해 TEST_UPPER, LOWER, "lower" 문자열로 테이블을 생성해봅니다. [ 실 습 ] 1. 테이블 생성CREATE TABLE TEST_UPPER ( col1 varchar2(100) );CREATE TABLE LOWE..
[ 에러 코드 ] ORA-01476: 제수가 0 입니다. [ 2 ] 원인 select 5 / 0 from dual; 에러 나는 상황. * 5 : 피제수, 0 : 제수 나누는 수가 0 이기에, 나눌수 없어서 에러 발생됨
[ 결론 ] : 단순 비교 결과 어느 것이 성능이 좋다는 유의미한 결과 전혀 없으며, 각 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세션 연결 시간(분 단위)에 대한 최대값...
튜닝 프로젝트 4개월현재 DB AWR RETENTION 기간 2개월, AWR RETENTION 을 4개월로 늘려보자★ 참고 : 프로젝트 남은 기간이 10% 도달할 때 쯤이면 최종 보고서 작성을 해야한다. 보고서 내용에 들어갈 핵심적인 자료들은 반드시 추세(Trend)적인 그래프로 가시성을 확보해야 한다. 이유는 고객들에게 사랑?을 받을수 있기 때문이다. 그러므로 그래프에 필요한 원천 데이터인 AWR 데이터 확보는 필수적이다. 1. AWR 설정 정보 SELECT * FROM DBA_HIST_WR_CONTROL;AWR 설정 정보 조회 결과 2. AWR 설정 변경 : 172800 = 120(일) X 24(시간) X 60(분) exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SN..
파티션테이블에 global partitioned index가 있는 상황에서 특정 partitoin을 drop 하는 방법 3가지 1. PARTITION DROP 후 INDEX REBUILD 방법 : PARTITION DROP 후 GLOBAL INDEX STATUS가 UNUSABLE상태에 빠지므로, REBUILD 처리ALTER TABLE TB_RANGE_PART DROP PARTITION P2112;ALTER INDEX IX_RANGE_PART_04 REBUILD; 2. DROP PARTITOIN 과 비동기로 글로벌인덱스를 관리(REBUILD) 방법 ( unusable -> usable로 되서 좋다! NOLOGGING 모드로 진행할수가 없는 단점 )ALTER TABLE TB_RANGE_PART D..