drop table scott.test2;
drop sequence scott.test2val;

CREATE TABLE "SCOTT"."TEST2" ("ID" NUMBER(10) NOT NULL, "DATA"
    VARCHAR2(1000) NOT NULL, "VAL1" NUMBER(10) NOT NULL, "VAL2"
    NUMBER(10) NOT NULL,
    CONSTRAINT "PK_TEST2" PRIMARY KEY("ID"))     TABLESPACE "EXAMPLE"  ;


CREATE SEQUENCE "SCOTT"."TEST2VAL" INCREMENT BY 1 START WITH 1
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
CACHE 20 NOORDER;

 

 


CREATE  OR  REPLACE  PROCEDURE dut
 (
 su number
)
as
  v_startTime  timestamp;
  v_endTime  timestamp;
  v_diff          number(10,6)  ;
begin
  --set  serveroutput on
  v_startTime := systimestamp;
  ----질의 시작
  for i in 1..su loop
       insert into scott.test2
            values(scott.test2val.nextval,'abcd', test2val.currval,test2val.currval);
     commit;
   end loop;
    commit;
    ----질의 끝
  v_endTime := systimestamp;
  v_diff :=     to_number(to_char(v_endTime ,'sssss.ff')) -  to_number(to_char(v_startTime ,'sssss.ff')) ;
  DBMS_OUTPUT.PUT_LINE('질의 진행 시간 : '||v_diff);
end;
/

set  serveroutput on
exec dut(100000)

--  EXAMPLE테이블 스페이스의 테이블스페이스멥을 켑쳐
-- 혹은  utlchain.sql스크립트 실행 후 아래와 같은 스크립트(EM에서 분석-이전행혹은연속행나열)를 날려 줄것.
-- begin
--            dbms_stats.gather_index_stats(ownname=> 'SCOTT', indname=> 'PK_TEST2', partname=> NULL);
--        end;
--   .
--   /




update test2 set data='abcdefghijklmnopqrstuvwxyz';
commit;

-- 테이블스페이스멥과 켑쳐 화면과 비교해서 Chain블록의 생성여부를 확인.

-- Chain블록이 생겼을 경우 테이블을 생성시 PCTFEE의 양을 늘림.

 

drop table scott.test2;
drop sequence scott.test2val;

CREATE SEQUENCE "SCOTT"."TEST2VAL" INCREMENT BY 1 START WITH 1
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
CACHE 20 NOORDER;

CREATE TABLE "SCOTT"."TEST2" ("ID" NUMBER(10) NOT NULL, "DATA"
    VARCHAR2(1000 byte) NOT NULL, "VAL1" NUMBER(10) NOT NULL,
    "VAL2" NUMBER(10) NOT NULL,
    CONSTRAINT "PK_TEST2" PRIMARY KEY("ID")
    USING INDEX 
    TABLESPACE "EXAMPLE"    STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS
    2147483645 PCTINCREASE 0) PCTFREE 10 INITRANS 2 MAXTRANS 255)    
    TABLESPACE "EXAMPLE" PCTFREE 50 PCTUSED 0 INITRANS 1 MAXTRANS    255
    STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0)
    LOGGING ;
exec dut(100000);


-- 테이블 스페이스 멥을 확인하고.
update test2 set data='abcdefghijklmnopqrstuvwxyz';


-- 적정 PCTFREE값을 찾으면 됨.