본문 바로가기

oracle160

Checkpoint와 Checkpoint not complete 오늘 DB가 느려졌다는 연락을 받고 Alert log를 확인해보니 특정시간 이후 Redo log파일의 switch가 자주 일어나고 있었고 그에 따라 Checkpoint not complete 에러가 계속 발생하고 있었습니다. 결국 DB 재기동을 통해서 눈앞의 급한 이슈는 해결할 수 있었지만, 다음번에는 재기동 없이 해결할 수 있는 방법을 찾기 위해서 정리해보고자 합니다. 1.Checkpoint란? 메모리에 있는 block buffer의 내용과 disk의 data block간의 내용을 맞추는 것이라고 할 수 있습니다. checkpoint가 발생하면 그때까지 메모리내의 block에 가해진 모든 변경사항을 disk 상의 datafile 내에 반영하게 됩니다. database crash에 의해 복구가 필요하게되.. 2020. 9. 9.
Reorg 방법 - Shrink 와 Move DB를 사용하다보면 DML 작업이 한 테이블에 많이 일어나게 되고 그렇게 되면 HWM(High Water Mark)는 이전에 데이터가 많았던 지점까지 표시하고 있지만 실제로 사용하는 블록은 그렇지 않게 됩니다. 테이블 크기도 불필요하게 커질 뿐아니라, SCAN시 불필요한 I/O도 발생하게 됩니다. 왜냐하면 Full Scan시 데이터 스캔의 범위기준이 HWM까지이기 때문입니다. 따라서 테이블에 사용하지 않는 공간이 많으면 용량뿐 아니라, 조회 성능도 떨어지는 상황이 발생하게 됩니다. 그것을 해결해주는 방법으로 Shrink와 Table Move 작업이 있습니다. Shrink는 10g에서 지원하는 기능으로 Online으로 테이블의 HWM을 낮추어 공간을 축소시킬 수 있는 작업입니다. 테스트를 통해 Shrink.. 2020. 9. 2.
Pivot 함수와 Pivot XML Oracle 11g에서 나온 신기술(New Feature)로써 열과 행을 바꿔서 보여줄 수 있는 기능입니다. 티베로6기준으로는 Pivot 기능은 가능하지만 PivotXML은 구현되지 않습니다. Pivot함수는 내부적으로 그룹핑된 결과를 제공합니다. 그렇기 때문에 PIVOT절에서 그룹핑된 결과를 정의해야 하는데, GROUP BY가 들어간 쿼리와 같다고 생각하면 됩니다. 테스트 테이블생성 create table bae_pivot_test( id number, cost number, tx_date date, product_type varchar2(50)); 테스트 데이터 삽입 insert into bae_pivot_test values (1,10.99,sysdate-10,'Toy'); insert into b.. 2020. 8. 29.
NUMBER 데이터타입과 데이터타입 변경 NUMBER데이터타입은 NUMBER (precision, scale)형식으로 지정할수도 있고, NUMBER(precision)만 사용할수도 있습니다. precision(정밀도)란 정수 +소수점을 포함하여 표현할 수 있는 자릿수를 이야기하는것이고, scale(배율)은 소수점 몇자리까지 표현하느냐를 이야기하는것입니다. 999.99는 총5자리에 소수점 2자리이기 때문에 NUMBER(5,2)로 표현이 되어야 합니다. (이부분이 헷갈려서 컬럼데이터타입 변경할 떄, 에러가 나왔는데 왜 나왔는지 한참을 생각했습니다..) NUMBER에서 NUMBER로 변경 시 큰 제약사항 없이 바로 적용되는줄 알았는데, 소수점이 들어가버리면서 총표현자릿수가 줄어들어 결국엔 기존값들보다 작은 데이터타입이 만들어지려하니 에러를 발생시킨것.. 2020. 8. 26.