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했다는 이야기 입니다.
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-27 | 2893 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2105 | ||
53 | [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… | 03-15 | 1974 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 2106 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 3067 | |
50 | [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 | 01-31 | 1623 | |
49 | [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… | 01-19 | 1947 | |
48 | [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… | 01-11 | 1814 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2431 | |
46 | [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2893 | |
45 | [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) | 12-19 | 2026 | |
44 | [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… | 12-14 | 1996 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2105 | |
42 | [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… | 12-09 | 1637 | |
41 | [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1862 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 2110 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1509 |
댓글 없음:
댓글 쓰기