본문 바로가기
IT 개발/Oracle SQL

Oracle 15일차 (2)

by Love of fate 2019. 1. 27.
728x90
반응형

▶ 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

 


 

 

 

 

 

728x90
반응형