Oracle PARTITION 관련 질문 입니다. 1 8 3,384

by 신정동개발자 [Oracle 기초] oracle partition ora-00054 [2023.06.12 15:23:30]


alter table table_name split partition LOG_20250628 at ('20230603000000') into (partition LOG_20230602, partition LOG_20250628);
-> partition 생성시 High Value 를 너무 넓게 잡아서 일자별로 split 시도

하지만 24시간 계속 Data 가 Insert 되는 Table 이라서 ORA-00054 오류 발생함
-> 검색해 보면 Table 을 잡고 있는 Lock session 을 Kill 한후에 수행 하라고 하는데 상시 Insert 하고 있는
Table 이라서 전체 Lock 을 Kill 할수가 없음

설명을 한다고는 했는데 ... 결론은 Lock 걸려있는 Table 에 Partition 을 Split 하는 방법을 질문 드립니다. 

by pajama [2023.06.12 16:37:43]

변경없는 과거데이터 범위부터 partition exchange 기능을 사용하시는 건 어떨지요.

아니면 새 테이블에 과거데이터부터 서서히 이관하시거나..?


by 신정동개발자 [2023.06.12 16:52:32]

답변 감사합니다. 

지금 백업테이블 하나 만들어서 일자별로 데이터를 넣고 있는데 데이터가 많아서 너무 오래 걸리네요. ㅠㅠ

백업테이블에 데이터 넣고, rename 을 해볼까 하고 있습니다.

그리고 partition exchange 기능을 잘 몰라서, 혹시 참고할수 있는 URL 하나만 남겨 주실수 있는지요.


by ㅇㅇ준 [2023.06.12 17:18:07]

파티션 단위가 어떻게 되는지 모르겠지만 pajama 님 말씀하신 방법도 좋을 것으로 보이고

다음 파티션이 언제인지 모르겠지만 현재 쌓이고 있는 파티션 이후의 파티션을 미리 작게 나눠놓고 이후 시간이 지나 그 파티션을 사용하게 될 때 이전 파티션에 대한 작업을 하시는 것은 어떨까요

 


by 신정동개발자 [2023.06.12 17:32:08]

답변 감사합니다. 

단위가 1일 단위인데, 20250628 잡아놔서 말씀하신 방법으로는 불가능 할거 같습니다. 

최후에 방법은 서비스를 다 내리고 split 을 하는 방법 뿐이 없는거 같은데... 이게 꽤 부담스러운 상황이네요 


by 우리집아찌 [2023.06.12 17:50:53]

새로 파티션 테이블 만들고 rename 하셔야 할것 같네요

시스템 중단시간도 있긴해야할것 같네요

rename시 index명도 rename 하셔야합니다

 


by 우리집아찌 [2023.06.12 17:56:20]

글로발 인덱스 쓰는곳은 파티션 날리려면 rename 작업하기도 합니다.

실수하면 큰일이라 사전테스트는 테스트서버에서 충분이 검토하시고 하세요

전 할때마다 손떨려서 ㅎㅎ


by 신정동개발자 [2023.06.12 18:02:38]

답변 감사합니다.

그냥 서비스중지후 lock kill 하고

split 을 해야 할까봐요 

개발자라서 두렵기도 하네요


by ㅇㅇ준 [2023.06.14 15:09:24]

로그테이블 과거데이터가 크게 중요한것이 아니라면.....새로운마음으로.....truncate 후 스플릿을...

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입