개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

 

 

Rownum은 1로 시작해야 작동하는 제한사항이 있다.

ROWNUM은 1로 시작하지 않으면 원하는 결과를 뽑지 못한다.

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 * 사용 예
 - 학생 테이블에서 모든 ROWID와 학번을 출력하여라

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

* 참조만 될 뿐 데이터베이스에 따로 저장되지 않음
* Oracle의 Pseudo-column은 테이블의 실제적인 컬럼은 아니므로 테이블의 describe을 통해서는 보이지 않지만 매우 유용하게 사용
- CURRVAL, NEXTVAL ( sequence number generator )
- LEVEL ( for hierarchical queries )
- ROWNUM ( a row's relative number ) 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

* ROWID는 단지 Transaction의 길이 동안만

Consistence의 유지가 보장
- User 프로그램 내부에 하나 이상의 Transaction이 존재한다면, ROWID가 변화할 수도 있음


* Multi-user 환경에서 예상되는 문제점
- 다른 user가 현재 특정 user가 사용하고 있는 ROWID를 invalidate 하게 하는

UPDATE나 INSERT, DELETE 작업을 수행할 수도 있음
- INSERT나 length를 줄이는 UPDATE 작업 등에서 내부적으로 자동으로 ROWID를 변경할 수 있음 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

Oracle 테이블의 모든 Row는 ROWID라고 하는 물리적인 Address로 assign
- Non-clustered table 에 대해서는 이러한 address는 유일
* 내부적으로 ROWID는 binary 값을 가짐
* 외부적으로 Display 될때 에는 VARCHAR2 type의 column에 저장된 3 part의 hexdecimal string으로 표현 (Oralce 7)

- 첫번째 부분( position 1 through 8 ) : block ID
- 두번째 부분( position 10 through 13 ) : block 내부에서 row의 sequence number
- 세번째 부분( position 15 through 18) : data file ID를 나타낸다.

 

 

 

* Oracle 8에서 Object와 Partition의 개념이 도입되면서 Database의 Segment를 식별하기 위한 Data Object Number가 추가 -> A four-piece FORMAT
- 지수가 64인 Encoding 형태로 사용
- 18문자 넓이를 가짐
* OOOOOOFFFBBBBBBRRR
- OOOOOO : Database Segment를 식별하기 위한 Data Object Number (오브젝트번호)
- FFF : Tablespace에 상대적인 Datafile Number (데이터파일번호)
- BBBBBB : Row를 포함하는 Data Block Number (블록번호)
- RRR : Block에서의 Row의 Slot (로우스롯번호)
* Rule-based optimizer에서 ROWID를 이용하여 데이터를 엑세스하는 것이 가장 상위로 랭크된 엑세스 방법이며 가장 빠른 방법
* Pseudo-column 임
- 참조만 가능하며 데이타베이스에 값이 저장되지 않음

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

 

 

형식


- 데이터 객체 번호(data object number)
데이터 객체 생성 시 할당(32bit)
- 상대적 파일 번호(relative file number)
데이터가 저장되는 물리적인 데이터 파일 번호(10bit)
- 블록 번호( block number)
데이터 파일내에서 행을 포함하는 블록 위치(22bit)
- 행 번호(row number)
블록 헤더내에서 행 디렉토리 슬롯의 위치(16bit)

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

* 개요 *


- 테이블에서 행의 위치를 지정하는 논리적인 주소 값
- 데이타베이스 전체에서 중복되지 않는 유일한 값
- 테이블에 새로운 행이 삽입되면 테이블 내부에서 의사 칼럼(pseudo column)

형태로 자동적으로 생성
- 특정 레코드를 랜덤 액세스하기 위한 가장 빠른 방법
- ROWID 는 데이터베이스에 저장되지 않음
- SELECT 명령문으로 조회는 가능하나, INSERT, UPDATE와 같은

DML 문으로 임의적으로 변경 불가능 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

* 개요

- 텍스트, 그래픽, 이미지, 동영상, 사운드 등과 같이

구조화되지 않은 대용량의 텍스트나 멀티미디어 데이터를

저장하기 위한 데이터 타입
- 최대 4GB까지 저장


종류
- BLOB
- 그래픽 이미지, 동영상, 사운드와 같이 구조화되지 않은 바이너리 데이터를 저장하기 위해 사용
- CLOB
- e-Book,html 과 같은 대용량의 텍스트 데이터 저장
- NCLOB
- 국가별 문자셋(유니코드) 데이터 저장
- BFILE
- 바이너리 데이터를 파일 형태로 저장,

읽기 전용이므로 내용 변경 불가능

+ Recent posts