오라클 테이블 ddl문 해석 부탁드립니다. 0

by 기벨프 [Oracle 기초] [2022.07.25 10:24:14]


디비 오라클 테이블 ddl인데요 

코드는 컬럼이하입니다...

테이블 복사하라는 과제 도중 코드가 뭘 의미하는지 알아내야 하는데

아무리 찾아도 인덱스이하부터는...특히나 공간정보쪽을 못찾겠습니다 (검색능력의 한계) 

혹시 한줄씩 해석가능할까요?

부탁드립니다.

 

 ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 0 PCTUSED 40 INITRANS 4 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DW" 
 LOB ("SHAPE"."POINTS") STORE AS BASICFILE (
  TABLESPACE "DW" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 1
  CACHE 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ;

CREATE UNIQUE INDEX "ORACLE_ALTER"."SYS_IL0000162284C00191$$" ON "ORACLE_ALTER"."BG_ALTER" (
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DW" 
  PARALLEL (DEGREE 0 INSTANCES 0) ;
 
  CREATE UNIQUE INDEX "ORACLE_ALTER"."R43_ROWID_UK" ON "ORACLE_ALTER"."BG_ALTER" ("OBJECTID") 
  PCTFREE 0 INITRANS 4 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DW" ;
 
  CREATE INDEX "ORACLE_ALTER"."A15_IX1" ON "ORACLE_ALTER"."BG_ALTER" ("SHAPE") 
   INDEXTYPE IS "EXP"."ST_SPATIAL_INDEX"  PARAMETERS ('ST_GRIDS = 0 ST_SRID = 300002 ST_COMMIT_ROWS = 10000  PCTFREE 0 INITRANS 4');

by 우리집아찌 [2022.07.26 09:28:15]

저도 잘 모르겠습니다. 그냥 무시하고 지워버리고 쓰는편인데요.

TABLESPACE : 데이터베이스 오브젝트 내 실제 데이터를 저장하는 공간

DEGREE : 병렬처리 할 쓰레드(?) 갯수 , 스크립트에서 지워버리면 디폴트0 

LOB : 이건 저도 처음보내요.. 그냥 컬럼에만 선언해봐서.. 스크립트에서 지워버려도 되지않을지..

아는건 이정도 입니다.. 


by 포동푸우 [2022.07.26 09:54:07]
-- 대략 아래의 의미 입니다. 
 
 ) SEGMENT CREATION IMMEDIATE  
   ~~> Table 생성 시 Segment 로 바로 생성, 버전에 따른 Default 는 Object 로 생성하고, 1번째 rows 나 block extent 시 Segment 가 생성되도록 지정되 있음    
  PCTFREE 0 PCTUSED 40 
   ~~> DB Block 의 PCT 의 Free 값을 0% ( Update 에 따른 여유공간은 남기지 않음 ) 으로 , Used 값은 40% (40% 가 차 있으면 사용된 Block 로 분류 ) 로 하겠다는 의미  
  INITRANS 4 MAXTRANS 255 
   ~~> 해당 Object 에 대한 초기 Transaction (DML 포함) 을 4개 부터, 최대 255개 까지 허용 
  NOCOMPRESS LOGGING
   ~~> Segment 에 Compress 하지 않고 저장, Logging 을 통해 Access 에 대한 기록을 유지 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
   ~~> Segment 생성 시, 초기 Block 크기 65536, 데이터가 늘어날 때 마다 1048576 (byte) 크기로 Segment 를 증가 시키되, 해당 Segment 의 최대 Size 는 2147483645 (byte) 로 하고 
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 
   ~~> PCTINCREASE 0 즉 데이터가 늘어날 때 다음 Extent 의 증가율은 0% 동일하게 같은 사이즈로 증가 시키고, FREELIST GROUPS 1 는 RAC 에서 경합관리를 회피하기 위해 각 Instance 에서 독자적으로 사용하라 
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
   ~~> 해당 Segment 의 위치는 SGA 의 BUFFER_POOL, FLASH_CACHE 그리고 Exadata 의 경우 CELL_FLASH_CACHE 에 초기 Loading 하며 
  TABLESPACE "DW" 
   ~~> Segment 를 DW Tablespace 에 생성하라.
   
-- 정확한 의미나 내용은, 좌측 "구루비 검색" 에 PCTFREE 등 해당 문구를 검색해 보시면,
   선배님들의 강의, 강좌에서 확인해 보실 수 있습니다. 
.

 


by 포동푸우 [2022.07.26 10:03:17]
저 속성등은 DB, Tablespace 순으로 상속 됩니다. 
Default 는 PCTFREE 20 PCTUSED 40 인데, 그렇게 지정된 Tablespace 에 Table 생성을 하게 되면, 상속 받아 그렇게 만들어 집니다. 

각각 동작하는 의미가 있는데 
다른 설정들이 Default 라고 가정하면 
table DEGREE  4로 지정되 있으면, 저 테이블을 Access 하는 SQL 은 No Parallel 이라도 Optimizer 가 Parallel 4 로 Plan 을 수립합니다. 
Index 도 Degree 4 로 함께 지정되 있으면, 아주 단순한 SQL 로 Parallel 8 로 수행되기 때문에, 
불필요한 Thread 가 수행되고, 서버 CPU, MEmory 를 사용하고, 더군다나수행 속도도 늦어지게 됩니다. 
그래서 보통 Object 자체는 Noparallel 로 설정하고, SQL 에서 Parallel 여부를 결정 합니다. 

 


by 기벨프 [2022.07.28 18:00:01]

모두 답변 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입