본문 바로가기

DB/__Oracle

(62)
Shrink UNDO tablespace Shrink UNDO tablespace Oracle 11g 10g 9i tablespace database undo How to shrink the undo tablespace in Oracle? We need to create a tablespace temporary so that we can redirect undo usage to this temperorary tablespace. Steps: 1. Create a temporary tablespace for swapping CREATE undo TABLESPACE undotbs2 DATAFILE '/dbora01/oradata/ORCL/ora02/undotbs2_01.dbf' size 100M; 2. Use it as default UNDO ta..
Shrink Temporary Tablespace Shrink Temporary Tablespace Steps: 1. Create a temporary tablespace for swapping create temporary tablespace temp_temp tempfile '/dbora01/oradata/ORCL/ora02/temp_temp01.dbf' size 100M extent management local uniform size 1m; 2. Use it as default temporary tablespace alter database default temporary tablespace temp_temp; 3. Drop the old temporary tablespace alter tablespace temp tempfile offline;..
히스토그램 히스토그램(1) 히스토그램 유형히스토그램이 있다면 오라클인 더 정확한 카디널리티를 구할 수 있다. 특히, 분포가 균일하지 않은 컬럼으로 조회할 경우 효과를 발휘한다. 오라클이 사용하는 히스토그램으로는 아래 두가지 유형이 있다. 높이균형(Height-Balanced) 히스토그램 도수분포(Frequency) 히스토그램 히스토그램을 생성하려면 컬럼 통계 수집 시 버킷 개수를 2이상으로 지정하면 된다. 히스토그램 정보는 dba_histograms 또는 dba_tab_histograms 뷰를 통해 확인할 수 있다. 특히 10g에서는 dba_tab_columns 뷰에 histogram 컬림이 추가되어 히스토그램 유형을 쉽게 파악할 수 있게 되었다. FREQUENCY : 값별로 빈도수를 저장하는 도수분포 히스토그램(..
LIBRARY CACHE LOCK WAIT EVENT가 나타날 때의 해결방법 출처 : http://kr.forums.oracle.com/forums/thread.jspa?messageID=1673819 LIBRARY CACHE LOCK WAIT EVENT가 나타날 때의 해결방법 게시일: 2007. 2. 5 오전 1:08 제품 : ORACLE SERVER 작성날짜 : 2002-10-02 LIBRARY CACHE LOCK WAIT EVENT가 나타날 때의 해결방법 ==================================================== PURPOSE v$session_wait event 에 'library cache lock'이 발생하면서 session이 waiting 되는 경우가 있다. 오랫동안 이 현상이 지속될 경우 어떤 session이 이 library c..
blob 타입을 clob 타입으로 변경(함수) SQL에서 blob과 clob간 상호 변환이 자동으로 않됩니다. 그떄 사용할 수 있는 함수입니다. CREATE OR REPLACE FUNCTION ENC_BLOBTOCLOB(b IN BLOB) RETURN CLOB IS L_BLOB BLOB; L_CLOB CLOB := 'X'; L_DEST_OFFSSET INTEGER := 1; L_SRC_OFFSSET INTEGER := 1; L_LANG_CONTEXT INTEGER := DBMS_LOB.DEFAULT_LANG_CTX; L_WARNING INTEGER; BEGIN L_BLOB := B; IF DBMS_LOB.GETLENGTH(B) != 0 THEN DBMS_LOB.CONVERTTOCLOB ( DEST_LOB => L_CLOB , SRC_BLOB => L..
3시간 돌던 Job이 죽다 테라바이트 급 테이블의 인덱스를 만들 때, 대량의 데이터이다 보니 인덱스 하나를 생성하는데도 3~4시간 걸리는 경우가 있다. 이런 인덱스를 심지어 4~5개를 생성해야 될 경우, 인덱스 하나를 생성하는 시간은 전체 이행 소요시간에 절대적인 영향을 미치게 되므로 매우 중요하다고 볼 수 있다. 그런데, 3시간 이상 돌던 인덱스 작업이 에러를 발생시키면서 죽어버린다. 미치고 팔짝 뛸 지경이다. 에러 메시지 확인 결과, 테이블스페이스 부족이란다. 테이블스페이스를 늘려주기만 하면 되겠지만, 막상 넉넉하게 공간을 줄 수 있는 상황도 아니다 보니, 최대한 예측해서 늘려줬지만, 또 불가피하게 부족해서 다시 돌린 경우도 죽는 경우가 발생하게 된다. 이렇게 두번만 죽어도 그 날의 인덱스 생성 작업은 실패라고 볼 수 있겠다...
전체 Table Row Count 를 빠르게 구하는 방법 H모사에서 데이터 이행 종료후에 전체 테이블의 Row Count를 구하여 이행 완료 Check List에 기록하는 절차가 있었다. 통계 정보를 다시 갱신하는 것보다 더 빠르게 Count하는 방법이 무엇일까 고민하다가, 찾은 방법이다. ※ 요약 - 테이블 전체를 적절한 그룹으로 나누어 Program parallel 방식으로 Segment 크기에 따라 PK Index를 Parallel degree를 조절하여 Fast full scan으로 읽어 Count하고 결과를 테이블에 기록 ※ 필요한 객체 1. 전체 테이블을 크기별로 그룹핑한 목록 (홀수번 그룹은 테이블 크기의 Ascending 정렬, 짝수번 그룹은 Descending 정렬) - Balancing SQL 이용 2. MIG_TAB_CNT_VRF_LOG 테..
ORACLE DML Error Logging(Oracle 10g R2 New Feature) 출처 : http://www.dator.co.kr/zero/textyle/44780 데이터 이행을 하다보면 가장 힘빠지는 오류가 있다. ORA-00001: unique constraint violated (한글 메시지 : ORA-00001: 무결성 제약 조건에 위배됩니다) PK 또는 Unique Index 가 생성되어 있을 때 중복된 값의 발생이 그 원인이다. 특히 As-Is 의 PK 구조와 To-Be 의 PK 구조가 다를 때와 여러 테이블을 통합하는 경우에 자주 발생한다. 몇십분 또는 몇시간 이상 SQL이 실행되다가 이 오류를 만나면 정말 황당 + 당황할 수 밖에 없다. As-Is의 데이터가 계속 추가/변경/삭제되기 때문에, 지난 번에는 오류가 없었다고 해서 이번에 또 오류가 발생하지 말라는 보장이 없..