DATAOBJ_TO_PARTITION 에 대해 알려주세요. 0 2 179

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로 보여집니다.


by 임상준 [2019.05.20 17:57:31]

메뉴얼에는 아래와 같이 나와있네요,

DATAOBJ_TO_PARTITION is useful only to Data Cartridge developers who are performing data maintenance or query operations on system-partitioned tables that are used to store domain index data. The DML or query operations are triggered by corresponding operations on the base table of the domain index.

 

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