본문 바로가기

전체 글77

[Oracle]Range partition table [Oracle]Range partition table 테이블을 구성할때 파티션을 나누는것은 매우 중요합니다.성능상 그리고 관리차원에서 꼭 필요하죠. range partition은 범위를 정해서데이터를 자주 뽑아낼때 이에 맞춰서 구성하면 아주 유용하게 쓰일 수 있습니다. 먼저 C드라이브에 4개의 폴더를 만들겠습니다.실습이라 이렇게 하지만 실제로 구성할때는 C D E F등 다른 디스크장치로지정하는것이 좋겠죠 각각에 테이블 스페이스를 만들어 줍니다. RANGE PARTITION TABLE을 만드는 문법은 위와 같이 됩니다.위는 2011년 데이터, 2012년, 2013, 2014 데이터를 각각의 파티션에 나눠서 저장하도록 만들었습니다.IDATE라는 DATE를 기준으로 분할을 하고있죠. 이렇게 데이터를 넣게되면 .. 2014. 7. 23.
[Oracle]MATERIALIZED VIEW 데이터가 있는 뷰 [Oracle]MATERIALIZED VIEW 데이터가 있는 뷰 일반적으로 VIEW는 데이터가 없는 가상의 테이블이죠.그렇기 때문에 VIEW를 조회하면 내부적으로는 각각의 테이블로 가서 조인을수행하죠. 하지만 MATERIALIZED VIEW는 VIEW를 만들때 실제로 데이터까지만드는 것입니다. 이렇게되면 조인을 할때 저장되어있는 데이터를 불러오기만 하면 되겠죠.이처럼 성능상의 이유로 MATERIALIZED VIEW를 사용합니다. 이러한 문법으로 생성할 수 있습니다.REFRESH는 테이블에 업데이트가 있을경우 그 방법을 명시하는 부분입니다.ENABLE QUERY REWRITE는 쿼리를 재사용한다는 뜻입니다. 아래쪽에 예제가 있습니다. REFRESH 옵션- COMPLETE : 전부 삭제한뒤 다시 갱신한다.-.. 2014. 7. 23.
[Oracle]INDEX INVISIBLE [Oracle]INDEX INVISIBLE INVISIBLE은 보이지않는 이라는 뜻을 갖고있죠. 말그대로 인덱스는 있지만 사용하지않는 것을 뜻합니다.인덱스를 일반적으로 만들고나면 바로 사용되어지죠.하지만 INVISIBLE을 설정하게되면 만들었지만 사용할 수 없게 할 수 있습니다. 인덱스를 만들었습니다. 위와같은 쿼리를 날리자 인덱스를 사용해서 실행을 했습니다 아까사용한 인덱스를 INVISIBLE 해보겠습니다. 힌트까지 주면서 사용하라고 했지만 테이블 풀스캔한 것을 볼 수 있습니다.이처럼 INVISIBLE설정을 하게되면 인덱스를 만들었지만 사용 할 수 없습니다. USER_INDEXES에 이러한 정보가 나오는데요 기본적으로 만들면 VISIBLE로 되어서 사용이 가능한것입니다.INVISIBLE로 했다면 사용이.. 2014. 7. 23.
[Oracle]Index usage 오라클 인덱스 사용여부 조회 [Oracle]Index usage 오라클 인덱스 사용여부 조회 인덱스를 만들었는데 한번도 사용되지않는다면, 잘못 만든 인덱스겠죠.이러한 인덱스를 찾아서 조취를 해주는것이 좋습니다. 먼저 새로운 인덱스를 만들어보겠습니다. 이러한 명령어를 주시면 해당 인덱스를 모니터링하게됩니다. V$OBJECT_USAGE; 를 조회해보면 사용여부가나옵니다.이 인덱스를 아직 사용하지않은 것을 알 수 있습니다. 인덱스를 사용해보겠습니다. 사용한 뒤에 다시 조회를 했더니 YES라고 떴습니다. 이런 명령어를 주면 다시 모니터링을 끝내는 것을 뜻합니다. 하지만 이러한 방식으로 인덱스를 모니터링한다면 개별적으로전부 명령어를 줘야 하겠죠. 이런방법말고 인터넷을 찾아보시면 사용자단위로 인덱스사용여부를 모니터링하는 스크립트를 찾으실 수 .. 2014. 7. 23.
[Oracle]Index fragmentation 오라클 인덱스 단편화 [Oracle]Index fragmentation 오라클 인덱스 단편화 인덱스를 생성해서 수정삭제가 반복되다보면 인덱스 단편화 현상이 생기는데요보통 B* tree인덱스를 만들었을때 데이터를 입력하면 루트를 기준으로 양옆으로 균형있게데이터가 들어가는데요. 이렇게 균형이 잡혀있는 상태에서 삭제를 한다면 균형이 깨지게되며리프블락에 비어있는 공간이 생길 수 있습니다. 이러한 인덱스 단편화현상은coalesce로 없앨 수 있습니다.일반적으로 인덱스 밸런싱이 20%를 초과하면 성능이 저하된다고해요 BIG_EMP1테이블의 인덱스를 조회해보니 I_BIGEMP_EMPNO라는 인덱스에64개의 리프블락이 있는것을 확인 하실수 있습니다. 대량의 데이터를 삭제하고 다시 분석해보겠습니다. 대량의 데이터가 삭제됬는데도 불구하고 LE.. 2014. 7. 23.
[Oracle]Tablespace fragmentation 오라클 테이블스페이스 단편화 [Oracle]Tablespace fragmentation 오라클 테이블스페이스 단편화 테이블스페이스에는 여러개의 테이블들의 데이터가 저장되는데요테이블에 수정, 삭제, 추가가 자주 일어난다면 테이블 스페이스 단편화 현상이발생합니다. 단편화현상이란 테이블안의 데이터를 수정 삭제를 반복할 수록빈공간들이 많이 생기는데요. 이러한 현상을 단편화라합니다.윈도우에는 조각모음이라는 기능이 있는것처럼 오라클에는 coalesce가 있는데요이 기능을 사용하면 단편화를 없앨 수 있습니다. DBA_FREE_SPACE_COALESCED라는 테이블을 조회해보면 위와같은 칼럼들이 있는데요PERCENT_EXTENTS_COALESCED값을 보시면 현재는 전부 100으로 되어있습니다.이것은 단편화현상이 없다는 것을 뜻하는데요. 만약 수.. 2014. 7. 23.
[Oracle]Index 오라클 인덱스 설계시 주의사항 [Oracle]Index 오라클 인덱스 설계시 주의사항 검색을 빠르게 도와주는 인덱스, 하지만 잘못알고 사용하면오히려 독이 될 수도 있습니다. 오라클 인덱스 설계시 주의사항을 알아보겠습니다. 설계시 주의사항 1. 조건을 만족하는 데이터 분포가 10% 미만일때 생성하는것이 좋은성능을 낼 수 있다.딱 10%라고 정해져 있지는 않지만 통상적으로 10%미만일때 인덱스가 효과를 발휘할 수 있고10%가 넘어가면 점점 그 효과는 미미해진다고합니다.예를 들어 1000페이지가 있는 책에서의 목차는 효과가 좋지만 10페이지가 있는 책에서의 목차는 그다치 쓸모가 없죠. 2. 대용량테이블에 적용하는것이 좋다.정확하진 않지만 약 20만~30만건이하의 데이터가 있는 테이블은 풀테이블 스캔을 하더라도 빠르게검색이 됩니다.(para.. 2014. 7. 22.
[Oracle]Index 오라클 인덱스(logical, physical) [Oracle]Index 오라클 인덱스(logical, physical) 책을 살때 앞쪽을 보면 항상 목차가 있기 마련이죠.이처럼 빠르게 필요한 내용을 찾기위해 인덱스는 데이터베이스에서 아주 중요합니다.인덱스의 종류는 크게 Logical, Physical 2가지로 나눌 수 있습니다. logical index physical index single indexconcanated indexunique indexnonunique indexfunction based balance*treereversebitmapiotdescending 자세한 설명은 다른 포스팅에...* 2014. 7. 22.
[Oracle]오라클 테이블 관리 재구성 방법 [Oracle]오라클 테이블 관리 재구성 방법 테이블에 많은 갱신이 일어난다면 시간이 지날수록 테이블안의 블락에 데이터들이 효율적으로 저장되지않을가능성이 높은데요 이럴때 테이블에 있는 데이터를 다시재구성해줌으로써 이런 문제를 해결 할 수 있습니다. 테이블재구성방법 1. export툴로 백업하고 테이블 drop한뒤 import로 다시넣어준다.2. CREATE TABLE......AS SELECT *.... 이러한 복제기능으로 테이블을 재생성해준다.3. 적절한 파라미터값을 할당한다.4. ALTER TABLE[table_name] SHRINK SPACE COMPACK 2014. 7. 22.