DBMS 1

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

DBMS_ROWID

DBMS 1
Tibero 가이드
Tibero System Package Guide
DBMS_ROWID
작성자
dataonair
작성일
2021-02-18 10:37
조회
1356



제17장DBMS_ROWID




내용 목차






17.1. 개요

17.2. 프로시저


17.2.1. ROWID_INFO


17.3. 함수


17.3.1. ROWID_CREATE

17.3.2. ROWID_CREATE_WITH_RELATIVE_FNO

17.3.3. ROWID_SEGMENT

17.3.4. ROWID_BLOCK_NUMBER

17.3.5. ROWID_ROW_NUMBER

17.3.6. ROWID_ABSOLUTE_FNO

17.3.7. ROWID_TO_RELATIVE_FNO


본 장에서는 DBMS_ROWID 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명한다.




17.1. 개요




DBMS_ROWID는 SQL 문장이나 PSM을 수행하여 얻은 ROWID에 담긴 정보를 보거나 임의의 ROWID를 만들기 위한 패키지이다. ROWID에는 세그먼트(segment), 블록, 절대 파일(absolute file), 로우의 번호에 대한 정보가 포함되어 있다.




17.2. 프로시저




본 절에서는 DBMS_ROWID 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.




17.2.1. ROWID_INFO




ROWID에 담긴 모든 정보를 한 번에 추출하기 위해 사용되는 프로시저이다. 프로시저이기 때문에 SQL 문장 내에서는 사용될 수 없다.

ROWID_INFO 프로시저의 세부 내용은 다음과 같다.

  • 프로토타입
    PROCEDURE ROWID_INFO
    (
    rowid_in IN ROWID,
    segment_number OUT NUMBER,
    absolute_fno OUT NUMBER,
    block_number OUT NUMBER,
    row_number OUT NUMBER
    );
  • 파라미터

    파라미터 설명
    rowid_in 정보를 얻고자 하는 대상 ROWID이다.
    segment_number ROWID에서 추출한 세그먼트의 번호가 저장된다.
    absolute_fno ROWID에서 추출한 절대 파일의 번호가 저장된다.
    block_number ROWID에서 추출한 블록의 번호가 저장된다.
    row_number ROWID에서 추출한 로우의 번호가 저장된다.
  • 예제
    DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, fno, blk_no, row_no);
    DBMS_OUTPUT.PUT_LINE('segment number : ' || sgmt_no);
    DBMS_OUTPUT.PUT_LINE('absolute file number : ' || fno);
    DBMS_OUTPUT.PUT_LINE('block number : ' || blk_no);
    DBMS_OUTPUT.PUT_LINE('row number : ' || row_no);






17.3. 함수




본 절에서는 DBMS_ROWID 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.




17.3.1. ROWID_CREATE




입력한 정보에 맞는 ROWID를 생성하는 함수이다. 주로 가져온 ROWID가 올바로 만들어진 것인지 확인해보는 용도로 사용한다. 사용자가 임의의 정보로 ROWID를 생성할 수도 있지만 큰 의미는 없다.

ROWID_CREATE 함수의 세s="indexterm">

  • 프로토타입
    FUNCTION ROWID_CREATE
    (
    segment_number IN NUMBER,
    absolute_fno IN NUMBER,
    block_number IN NUMBER,
    row_number IN NUMBER
    )
    RETURN ROWID;
  • 파라미터

    파라미터 설명
    segment_number 세그먼트의 번호이다.
    absolute_fno 절대 파일의 번호이다.
    block_number 파일 내의 블록의 번호이다.
    row_number 블록 내의 로우의 번호이다.
  • 예제
    DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, abs_fno, blk_no, row_no);
    my_rowid := DBMS_ROWID.ROWID_CREATE(sgmt_no, abs_fno, blk_no, row_no);
    DBMS_OUTPUT.PUT_LINE(rowid_1 || ' ' || my_rowid);





17.3.2. ROWID_CREATE_WITH_RELATIVE_FNO




입력한 정보에 맞는 ROWID를 생성하는 함수이다. ROWID_CREATE 함수에서는 절대 파일 번호를 사용하지만 ROWID_CREATE_WITH_RELATIVE_FNO 함수에서는 상대 파일 번호를 사용하여 ROWID를 생성한다.

ROWID_CREATE_WITH_RELATIVE_FNO 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    FUNCTION ROWID_CREATE_WITH_RELATIVE_FNO
    (
    segment_number IN NUMBER,
    relative_fno IN NUMBER,
    block_number IN NUMBER,
    row_number IN NUMBER
    )
    RETURN ROWID;
  • 파라미터

    파라미터 설명
    segment_number 세그먼트의 번호이다.
    relative_fno 상대 파일의 번호이다.
    block_number 파일 내의 블록의 번호이다.
    row_number 블록 내의 로우의 번호이다.
  • 예제
    DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, abs_fno, blk_no, row_no);
    rel_fno := DBMS_ROWID.ROWID_TO_RELATIVE_FNO(rowid_1);
    my_rowid := DBMS_ROWID.ROWID_CREATE_WITH_RELATIVE_FNO(sgmt_no,
    rel_fno, blk_no, row_no);
    DBMS_OUTPUT.PUT_LINE(rowid_1 || ' ' || my_rowid);





17.3.3. ROWID_SEGMENT




주어진 ROWID에서 세그먼트의 번호를 추출하여 반환하는 함수이다.

ROWID_SEGMENT 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    FUNCTION ROWID_SEGMENT
    (
    row_id IN ROWID
    )
    RETURN NUMBER;
  • 파라미터

    파라미터 설명
    row_id 정보를 추출할 ROWID이다.
  • 예제
    SELECT dbms_rowid.rowid_segment(rowid)
    FROM table;





17.3.4. ROWID_BLOCK_NUMBER




주어진 ROWID에서 파일 내의 블록의 번호를 추출하여 반환하는 함수이다.

ROWID_BLOCK_NUMBER 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    FUNCTION ROWID_BLOCK_NUMBER
    (
    row_id IN ROWID
    )
    RETURN NUMBER;
  • 파라미터

    파라미터 설명
    row_id 정보를 추출할 ROWID이다.
  • 예제
    SELECT dbms_rowid.rowid_block_number(rowid)
    FROM table;





17.3.5. ROWID_ROW_NUMBER




주어진 ROWID에서 블록 내의 로우의 번호를 추출하여 반환하는 함수이다.

ROWID_ROW_NUMBER 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    FUNCTION ROWID_ROW_NUMBER
    (
    row_id IN ROWID
    )
    RETURN NUMBER;
  • 파라미터

    파라미터 설명
    row_id 정보를 추출할 ROWID이다.
  • 예제
    SELECT dbms_rowid.rowid_row_number(rowid)
    FROM table;





17.3.6. ROWID_ABSOLUTE_FNO




주어진 ROWID에서 세그먼트 내의 절대 파일의 번호를 추출하여 반환하는 함수이다.

ROWID_ABSOLUTE_FNO 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    FUNCTION ROWID_ABSOLUTE_FNO
    (
    row_id IN ROWID
    )
    RETURN NUMBER;
  • 파라미터

    파라미터 설명
    row_id 정보를 추출할 ROWID이다.
  • 예제
    SELECT dbms_rowid.rowid_absolute_fno(rowid)
    FROM table;





17.3.7. ROWID_TO_RELATIVE_FNO




주어진 ROWID에서 절대 파일의 번호를 추출해 테이블스페이스의 상대적인 파일 번호로 변환하는 함수이다.

ROWID_TO_RELATIVE_FNO 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    FUNCTION ROWID_TO_RELATIVE_FNO
    (
    row_id IN ROWID
    )
    RETURN NUMBER;
  • 파라미터

    파라미터 설명
    row_id 정보를 추출할 ROWID이다.
  • 예제
    SELECT dbms_rowid.rowid_to_relative_fno(rowid)
    FROM table;