Oracle 15일차 (2)
▶ ROW CHAINING AND ROW MIGRATION
* Rowid : 테이블에 있는 해당 로우를 찾기위해 사용되는 논리적인 정보
data object number : 만들어진 순서.
AAASRg -- DATA OBJECT NUNBER
AAE -- 파일의 번호 (상대적)
AAAAIM -- 블럭 번호
AAA -- 행의 번호 : 몇번째 행에 저장되어 있는지에 대한 정보로 해당 정보로 정렬작업을 함.
-- ↓↓↓↓ Division 테이블 행에 대한 정보
* ROW CHAINING
-- CHAINING은 관리자가 막을 수 없고, 발생했을때 관리 해줘야한다.
-- varchar 데이터 타입일때 해당.
* ROW MIGRATION
-- CHAINING 일어난 데이터를 MIGRATION 하기
1. analyze로 단편화된 데이터를 chained_row 공간에 저장함
2. chin_test에 있는 데이터와 chained_row에 있는데이터 일치여부 rowid로 찾아가고
그 데이터를 다른 공간에 저장.(백업)
3. 데이터를 백업시켰기때문에 chain_test table에는 단편화된 데이터(900) 삭제
4. 백업된 데이터를 다시 chain_test table에 삽입
5. 단편화가 완료되었기 때문에 chained_row 테이블에 있는 데이터는 더이상 쓸모가 없어 삭제.
6. 다시 분석했을때, 단편화 작업이 완료되었기때문에 chained_row 테이블의 데이터 횟수는 0 이어야함.
------------------------------------------------------------------------------------------------------------------
* CHAINED_ROWS 테이블 생성
-- C:\app\itwill\product\11.2.0\dbhome_1\RDBMS\ADMIN
utlchain.sql 스크립트 안에 create 부분 복사해서 cmd창에 붙여넣어 생성
* chain_test 테이블 분석 => 데이터 삽입 전
* chain_test 테이블 데이터 삽입 후 테이블 분석 (1024개 데이터 삽입)
chain_test에서 chaining이 발생한 데이터 CHAINED_ROWS 테이블에 삽입 됨
* 분석이 완료된 데이터 백업하기 위한 테이블 생성
-- ROWID로 데이터를 찾아 삽입
* CHAIN_TEST에 chaining 발생한 데이터 삭제
* CHAIN_TEMP에 백업된 데이터 CHAIN_TEST에 삽입
* CHAINED_ROWS에 있는 데이터 삭제
-- truncate : 로그에 기록하지 않고 삭제
* CHAIN_TEST에 있는 데이터 재분석
-- 단편화 작업을 했기 때문에 Chaining 발생한 데이터가 없어 Chained_Rows 테이블의 행의 수는 0
* CHAIN_TEST에 있는 데이터 재분석
-- 단편화 작업을 했기 때문에 Chaining 발생한 데이터가 없어 Chained_Rows 테이블의 행의 수는 0