흐르는 시간의 블로그...

오라클의 날짜에서 요일을 찾는 방법은 아래와 같다


==> 글의 출처 <==


------------------------------------------------------------------------

to_char(날짜, 'd')


ex) select to_char(sysdate, 'd') from dual;

========================================
1 : 일요일
2 : 월요일
3 : 화요일
4 : 수요일
5 : 목요일
6 : 금요일
7 : 토요일
========================================

------------------------------------------------------------------------



오라클 유지보수 업체에서 stats pack을 통해 오라클 상태를 점검하였다.

그 결과로 나타난 것중 하나가 시퀀스에 nocache를 사용한 것이다.


지식이 짧았던 탓에 시퀀스에 nocache를 사용하는 것이 어떤 결과를 낳는지 몰랐다.

결국 특정 테이블에 대한 미친듯한 접근을 발생시킨다.


이후 nocache를 cache 128로 수정 하였다.

(향후 서비스 특성을 고려하여 8000까지 증가 시켰다)


문제는 또 발생 했다.

cache로 변경한 이후 데이터 순서가 꼬였다.

cache noorder 상태로 된것이다.


이후 cache order로 변경하며 찾은 자료 중 자세하고 괜찮은 내용은 아래의 것이다.

실제로 noorder 보다 성능이 떨어진 것처럼 체감상 느껴지기도 하였다.


물론 nocache에서 cache로 바꾸었을때는 확연한 차이가 있었다


자세한 것은 stack overflow의 아래 링크를 참고하기 바란다.


결론은 cache noorder 가 제일 성능이 좋고 cache order가 그 다음이다.

nocache는 성능 비교할 대상이 아니다.

...


Oracle Sequence value are not ordered

현재 운영중인 오라클은 no archive 모드로 운영중이다.

이와 함께 생성하는 테이블이나 인덱스를 모두 nologging으로 설정을 하고 있는데...

이것이 잘 안되는 경우가 있다


바로 LOB 필드들이다.

이 경우 보통 방법인 alter index ... 으로는 수정되지 않는다.


alter table로 해당 컬럼(lob)을 지정해서 해야 한다.


문제는 현재 사용하는 필드가 MDSYS.SDO_GEOMETRY 타입으로 해당 타입명은 lob 타입이 아니다.

TOAD를 통해서 script을 확인해보니 실제로는 두개의 LOB으로 구성된다.

그래서 아래의 alter table 명령으로 수정할 수 있다.

NOLOGGING을 하려면 반드시 NOCACHE 명령을 사용해야 한다.

관련하여 자세한 내용은 다음 링크에 있다.


LOB SEGMENT 생성 GUIDE


ALTER TABLE TBL_DATA_STATUS_201504 MODIFY LOB(WGS84_COORDINATES.SDO_ELEM_INFO) (NOCACHE NOLOGGING);
ALTER TABLE TBL_DATA_STATUS_201504 MODIFY LOB(WGS84_COORDINATES.SDO_ORDINATES) (NOCACHE NOLOGGING);


DTG 헤더 정보 추출 저장 테이블을 정리하다가 부분다중바이트문자 에러가 발생하였다.


이에 대한 해결책은 다음의 링크에서 찾았다


ORA-29275 : 부분 다중 바이트 문자


최근의 특정단말에서 저러한 에러 문자를 올리는 것으로 확인하였다.