DATAOBJ_TO_PARTITION 에 대해 알려주세요. 0 1 123

by 지에나르 [PL/SQL] [2019.05.15 15:45:51]


안녕하세요.

DATAOBJ_TO_PARTITION은 어떤경우에 사용이 되는지 궁금합니다.

일반적으로 머지를 사용한다면 

MERGE INTO 테이블명 partition(파티션명)

이렇게 시작이 되는걸로 알고있는데요.

다음과같이 프로시저가 구성되어있습니다.

SELECT data_object_id into d_obj_id
      FROM user_objects 
     WHERE object_name = upper(테이블명)
       AND object_type = 'TABLE PARTITION'
       AND subobject_name = 파티션명 ;

MERGE INTO 테이블명 partition(DATAOBJ_TO_PARTITION(테이블명,위의d_obj_id));

 

DATAOBJ_TO_PARTITION 에 대해서 정보가 많지 않아 이렇게 질문드려봅니다.

by 이준환 [2019.05.16 11:21:58]

 

 

데이터 개발 시에,

객체 또는 분할영역(파티션)명에 대해서는 Pro*C내에서의 바인드변수나 쉘스크립트내에서의 매개변수대입처리가 안되므로,

문자열을 조립하여 dynamic 방식으로 처리하였는데,

system dictionary로부터 DATA_OBJECT_ID를 변수처리하여 가져와

DATAOBJ_TO_PARTITION 함수를 통해 일반적인 embedded 방식으로의 질의문 처리가 가능할 듯 합니다.

(일부에서는 dynamic을 금기시하는 개발정책도 존재)

(일반적으로 DBA들이 dynamic 쓰는 것을 꺼려함)


한편, DBA 업무 측면에서 데이터 보전정책 기준으로

파티셔닝(또는 서브파티셔닝)된 객체(테이블/인덱스)를 정기적으로 관리(SPLIT/TRUNCATE/DROP/ADD)할 경우에도 응용가능해 보입니다만,

Pro*C나 PL/SQL내에서의 DDL은 dynamic으로 처리하므로, 데이터 개발상의 이점보다는 상대적으로 약해 보입니다. (개인적 생각)

DATAOBJ_TO_PARTITION 함수로  파티션/서브파티션 모두 반환가능하며,

11g new feature로 보여집니다.

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