2014년 12월 18일 목요일

9i space 관리 예[오라클자바커뮤니티/빅데이터/오라클/PLSQL/SQL쿼리/SQL튜닝실무교육/SQL기초교육]

9i  space 관리 예제 

SQL> conn / as sysdba 
연결되었습니다. 
SQL> create tablespace autospace 
  2  datafile 'c:\oracle\oradata\wink\auto01.dbf' size 10m 
  3  extent management local uniform size 128k 
  4  segment space management auto; 

테이블 영역이 생성되었습니다. 

SQL> conn scott/tiger 
연결되었습니다. 

SQL> create table test ( 
  2  a number, 
  3  b varchar2(1000) 
  4  ) tablespace autospace; 

테이블이 생성되었습니다. 

SQL> declare 
  2            i integer; 
  3            j integer; 
  4          begin 
  5            for i in 1..50 loop 
  6              for j in 1..20 loop 
  7                  insert into test values(j, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); 
  8              end loop; 
  9            end loop; 
 10        end; 
 11  / 

PL/SQL 처리가 정상적으로 완료되었습니다. 

SQL> commit; 

커밋이 완료되었습니다. 


test 테이블에 데이터 들이 블록별로 몇 개씩 들어 있는지 확인 합니다… 
대체적으로 균등하게 분포… 

SQL> select dbms_rowid.rowid_block_number(rowid),count(*) 
  2  from test 
  3  group by dbms_rowid.rowid_block_number(rowid); 

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)  COUNT(*) 
------------------------------------ ---------- 
                                  12        106 
                                  14        106 
                                  15        106 
                                  16        106 
                                  17        106 
                                  18        106 
                                  19        106 
                                  20        106 
                                  21        106 
                                  22        46 

10 개의 행이 선택되었습니다. 


일부 데이터를 지웁니다. 

SQL> delete from test 
  2  where a < 12; 

550 행이 삭제되었습니다. 

SQL> commit; 

커밋이 완료되었습니다. 

SQL> select dbms_rowid.rowid_block_number(rowid),count(*) 
  2  from test 
  3  group by dbms_rowid.rowid_block_number(rowid); 

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)  COUNT(*) 
------------------------------------ ---------- 
                                  12        45 
                                  14        46 
                                  15        51 
                                  16        47 
                                  17        45 
                                  18        50 
                                  19        49 
                                  20        45 
                                  21        48 
                                  22        24 

10 개의 행이 선택되었습니다. 


대체적으로 균등하게 삭제가 되었습니다. 

sys 계정으로 로그인 해서 dbms_repair.segment_fix_status를 실행해 bmb를 rebuild 합니다. 

SQL> conn / as sysdba 
연결되었습니다. 

SQL>  exec dbms_repair.segment_fix_status('SCOTT','TEST'); 

PL/SQL 처리가 정상적으로 완료되었습니다. 


다시 scott으로 로그인해서 insert하는 pl/sql을 또 실행 합니다. 

SQL> declare 
  2      i integer; 
  3      j integer; 
  4      begin 
  5      for i in 1..50 loop 
  6          for j in 1..20 loop 
  7              insert into test values(j, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaa'); 
  8          end loop; 
  9      end loop; 
 10    end; 
 11  / 

PL/SQL 처리가 정상적으로 완료되었습니다. 

SQL> select dbms_rowid.rowid_block_number(rowid),count(*) 
  2  from test 
  3  group by dbms_rowid.rowid_block_number(rowid); 

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)  COUNT(*) 
------------------------------------ ---------- 
                                  12        111 
                                  13        115 
                                  14        104 
                                  15        111 
                                  16        111 
                                  17        111 
                                  18        111 
                                  19        111 
                                  20        111 
                                  21        111 
                                  22        113 
                                  23        115 
                                  24        115 

13 개의 행이 선택되었습니다. 

데이터가 거의 균등하게 분포 된것을 알 수 있습니다. 적절히 빈 블록에 데이터를 insert했다는 이야기 입니다. 


 [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드…오라클자바…12-272893
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-112105
53 [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… 오라클자바…03-151974
52 [주말]C#,ASP.NET마스터 오라클자바…01-312106
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-313067
50 [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 오라클자바…01-311623
49 [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… 오라클자바…01-191947
48 [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… 오라클자바…01-111814
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032431
46 [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… 오라클자바…12-272893
45 [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) 오라클자바…12-192026
44 [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… 오라클자바…12-141996
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-112105
42 [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… 오라클자바…12-091637
41 [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011862
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-012110
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011509

댓글 없음:

댓글 쓰기