▶ 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
'IT 개발 > Oracle SQL' 카테고리의 다른 글
2) DATABASE - SQL Join (0) | 2020.07.05 |
---|---|
Oracle 17일차 (백업, 복구) (2) (0) | 2019.01.30 |
Oracle 17일차 (백업, 복구) (1) (0) | 2019.01.29 |
Oracle SQL 16일차 ( Rebuild (인덱스의 재구축), 제약조건지연, Profile, Previlege, Role 관리, SQLLDR) (0) | 2019.01.28 |
Oracle 15일차 (1) (0) | 2019.01.26 |