본문 바로가기

[오라클 레퍼런스 함수] SYS_OP_ZONE_ID - zone ID(디스크 블록 집합 ID)를 반환

by ㅇㅍㅍ 2023. 8. 25.
[오라클 레퍼런스 함수] SYS_OP_ZONE_ID - zone ID(디스크 블록 집합 ID)를 반환
728x90

 

 

 

SYS_OP_ZONE_ID

 

구문

SYS_OP_ZONE_ID( [ [ schema. ] table. | t_alias. ] rowid [, scale ] )

 

목적

SYS_OP_ZONE_ID 함수는 인수로 rowid를 취하고 zone ID를 반환합니다. rowid는 테이블의 한 행을 식별합니다. zone ID는 그 행을 포함하는 연속된 디스크 블록 집합을 나타내며 이를 '존'이라고 합니다. 이 함수는 NUMBER 값을 반환합니다.

SYS_OP_ZONE_ID 함수는 CREATE MATERIALIZED ZONEMAP 문장을 사용하여 존 맵을 생성할 때 사용됩니다. 존 맵의 정의 서브쿼리의 SELECTGROUP BY 절에서 SYS_OP_ZONE_ID를 지정해야 합니다.

rowid에는 존 맵의 사실 테이블의 ROWID 의사 컬럼을 지정하십시오.

schematable을 사용하여 사실 테이블의 스키마와 이름을 지정하거나 테이블의 별칭을 지정하는 t_alias를 사용하십시오. 이러한 매개변수의 지정 방법은 존 맵의 정의 서브쿼리의 FROM 절에 따라 달라집니다.

 

  • FROM 절에서 사실 테이블에 대한 별칭을 지정한 경우, SYS_OP_ZONE_ID에서도 테이블 별칭 (t_alias)을 지정해야 합니다.
  • FROM 절에서 사실 테이블에 대한 별칭을 지정하지 않은 경우, 테이블의 이름을 지정하려면 table을 사용하십시오. 테이블이 자신의 스키마가 아닌 다른 스키마에 있는 경우 schema 지정자를 사용할 수 있습니다. 스키마를 생략하면 데이터베이스는 사실 테이블이 자신의 스키마에 있는 것으로 간주합니다. FROM 절에서 사실 테이블 (단일 테이블, 즉 사실 테이블)만 지정하는 경우 schematable을 지정할 필요가 없습니다.

선택적인 scale 매개변수는 존 맵의 스케일을 나타냅니다. 이 매개변수를 지정할 필요는 없습니다. 왜냐하면 기본적으로 SYS_OP_ZONE_ID는 생성 중인 존 맵의 스케일을 사용합니다. 그러나 scale을 지정하는 경우 생성 중인 존 맵의 스케일과 일치해야 합니다. 존 맵의 스케일을 지정하는 방법에 대한 자세한 내용은 CREATE MATERIALIZED ZONEMAPSCALE 절을 참조하십시오.

 

 

참고:

더 많은 정보를 원하시면 CREATE MATERIALIZED ZONEMAP을 참조하십시오.

 

예제

다음 예제는 팩트 테이블 salestime_id 열을 추적하는 기본적인 존 맵을 생성할 때 SYS_OP_ZONE_ID 함수를 사용하는 방법을 보여줍니다. 존 맵의 스케일은 기본값으로 10입니다. 따라서 SYS_OP_ZONE_ID 함수는 스케일 값으로 10을 기본값으로 사용합니다.

CREATE MATERIALIZED ZONEMAP sales_zmap
AS
  SELECT SYS_OP_ZONE_ID(rowid), MIN(time_id), MAX(time_id)
  FROM sales
  GROUP BY SYS_OP_ZONE_ID(rowid);

 

다음 예제는 이전 예제와 유사하지만, 생성되는 존 맵의 스케일이 8로 지정된 점이 다릅니다. 따라서 SYS_OP_ZONE_ID 함수는 스케일 값으로 8을 기본값으로 사용합니다.

CREATE MATERIALIZED ZONEMAP sales_zmap
SCALE 8
AS
  SELECT SYS_OP_ZONE_ID(rowid), MIN(time_id), MAX(time_id)
  FROM sales
  GROUP BY SYS_OP_ZONE_ID(rowid);

 

다음 예제는 생성 중인 존 맵의 스케일이 8로 지정되었으며, 이는 SYS_OP_ZONE_ID 함수에서 지정된 12의 scale 인자와 일치하지 않으므로 오류가 발생합니다.

CREATE MATERIALIZED ZONEMAP sales_zmap
SCALE 8
AS
  SELECT SYS_OP_ZONE_ID(rowid,12), MIN(time_id), MAX(time_id)
  FROM sales
  GROUP BY SYS_OP_ZONE_ID(rowid,12);

 

다음 예제는 조인 존 맵을 생성합니다. 팩트 테이블은 sales이고, 디멘션 테이블은 productscustomers입니다. FROM 절에서 팩트 테이블에 대한 테이블 별칭 s가 지정되었기 때문에 SYS_OP_ZONE_ID 함수에서도 테이블 별칭 s가 지정됩니다.

CREATE MATERIALIZED ZONEMAP sales_zmap
AS
  SELECT SYS_OP_ZONE_ID(s.rowid),
         MIN(prod_category), MAX(prod_category),
         MIN(country_id), MAX(country_id)
  FROM sales s, products p, customers c
  WHERE s.prod_id = p.prod_id(+) AND
        s.cust_id = c.cust_id(+)
  GROUP BY SYS_OP_ZONE_ID(s.rowid);

 


출처: 오라클 레퍼런스

원문 링크: Oracle SYS_OP_ZONE_ID 함수 문서

 

반응형

댓글