free block 관리
일반적으로 BLOCK의 free space에 관한 정보를 보기 위해 dbms_space 패키지를 주로 이용 했습니다. 그러나 9i의 auto segment space 관리를 이용한다면 dbms_space 패키지의 free_block 프로시저는 오류를 리턴 할 것 입니다.( freelists를 사용하지 않아서 … )
9i 부터는 dbms_space.space_usage 프러시저를 새로 추가하여 자동 시그먼트 관리에서의 segment에 대한 free space를 확인 하도록 하고 있습니다.
---------------------------------------------------
SCOTT으로 로그인 후 다음과 같이 테이블을 만듭니다.
---------------------------------------------------
create table test (
A varchar2(1000)
)
pctused 60
pctfree 20
initrans 5
maxtrans 20
storage (
initial 10k
next 10k
minextents 2
maxextents 3
pctincrease 50
freelists 3
)
tablespace autospace
------------------------------------------
SYS계정에서 다음을 실행 시켜 블럭을 확인 합니다.
------------------------------------------
SQL> var unfbs number
SQL> var unfbt number
SQL> var fs1bs number
SQL> var fs1bt number
SQL> var fs2bs number
SQL> var fs2bt number
SQL> var fs3bs number
SQL> var fs3bt number
SQL> var fs4bs number
SQL> var fs4bt number
SQL> var fbs number
SQL> var fbt number
SQL> var fbt number
SQL> print unfbs unfbt fbs fbt
UNFBS
----------
0
UNFBT
----------
0
FBS
----------
0
FBT
----------
0
SQL> print fs1bs fs1bt fs2bs fs2bt fs3bs fs3bt fs4bs fs4bt
FS1BS
----------
0
FS1BT
----------
0
FS2BS
----------
0
FS2BT
----------
0
FS3BS
----------
0
FS3BT
----------
0
FS4BS
----------
0
FS4BT
----------
0
모두 0 임,,,, 데이터가 한 건도 없으니...
이젠 데이터를 넣습니다.
----------------------
SCOTT 계정 에서
-----------------------
SQL> insert into test values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
1 개의 행이 만들어졌습니다.
SQL> commit;
커밋이 완료되었습니다.
위의 insert를 아래 카운트 수 정도까지 반복 합니다.
SQL> select count(*) from test;
COUNT(*)
----------
274
-----------------------------
SYS 계정에서 블록의 사용을 확인
-----------------------------
SQL> exec dbms_space.space_usage('SCOTT','TEST','TABLE', :unfbs, :unfbt, :f
s1bs, :fs1bt, :fs2bs, :fs2bt, :fs3bs, :fs3bt, :fs4bs, :fs4bt, :fbs, :fbt)
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> print unfbs unfbt fbs fbt
UNFBS
----------
0
UNFBT
----------
0
FBS
----------
21
FBT
----------
172032
insert가 불가능 한 블록의 수가 21개 이며 그 사이즈는 172032 byte라는 의미(pct_free를 넘어선 블록들의 수가 21이라는 의미)
SQL> print fs1bs fs1bt fs2bs fs2bt fs3bs fs3bt fs4bs fs4bt
FS1BS
----------
0
FS1BT
----------
0
FS2BS
----------
0
FS2BT
----------
0
FS3BS
----------
0
FS3BT
----------
0
FS4BS
----------
5
FS4BT
----------
40960
fs1은 0~25%, fs2는 25~50%, fs3는 50~75%, fs4는 75% ~ 100% free space를 가지고 block 의 수와 크기를 보여 줍니다. 현재 75~100%가 비어 있는 블록은 5개 있으며 그사이즈는 40960 이라는 의미
참고로 알아둘 것은 …
위 예의 경우 데이터를 가득 넣었기 때문에 많은 불록들이 사용되어 pct_free가 20%가 된 블록이 많이 있을 것이다. 그런데 0~25%가 0이라니(fs1bs 값)…
그 이유는 pct_free를 넘어선 블록들은 fs1이건 fs2건 그 대상에서 제외하므로 그렇습니다. 즉 이런 것들은 full 상태가 되는 것입니다.
일반적으로 BLOCK의 free space에 관한 정보를 보기 위해 dbms_space 패키지를 주로 이용 했습니다. 그러나 9i의 auto segment space 관리를 이용한다면 dbms_space 패키지의 free_block 프로시저는 오류를 리턴 할 것 입니다.( freelists를 사용하지 않아서 … )
9i 부터는 dbms_space.space_usage 프러시저를 새로 추가하여 자동 시그먼트 관리에서의 segment에 대한 free space를 확인 하도록 하고 있습니다.
---------------------------------------------------
SCOTT으로 로그인 후 다음과 같이 테이블을 만듭니다.
---------------------------------------------------
create table test (
A varchar2(1000)
)
pctused 60
pctfree 20
initrans 5
maxtrans 20
storage (
initial 10k
next 10k
minextents 2
maxextents 3
pctincrease 50
freelists 3
)
tablespace autospace
------------------------------------------
SYS계정에서 다음을 실행 시켜 블럭을 확인 합니다.
------------------------------------------
SQL> var unfbs number
SQL> var unfbt number
SQL> var fs1bs number
SQL> var fs1bt number
SQL> var fs2bs number
SQL> var fs2bt number
SQL> var fs3bs number
SQL> var fs3bt number
SQL> var fs4bs number
SQL> var fs4bt number
SQL> var fbs number
SQL> var fbt number
SQL> var fbt number
SQL> print unfbs unfbt fbs fbt
UNFBS
----------
0
UNFBT
----------
0
FBS
----------
0
FBT
----------
0
SQL> print fs1bs fs1bt fs2bs fs2bt fs3bs fs3bt fs4bs fs4bt
FS1BS
----------
0
FS1BT
----------
0
FS2BS
----------
0
FS2BT
----------
0
FS3BS
----------
0
FS3BT
----------
0
FS4BS
----------
0
FS4BT
----------
0
모두 0 임,,,, 데이터가 한 건도 없으니...
이젠 데이터를 넣습니다.
----------------------
SCOTT 계정 에서
-----------------------
SQL> insert into test values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
1 개의 행이 만들어졌습니다.
SQL> commit;
커밋이 완료되었습니다.
위의 insert를 아래 카운트 수 정도까지 반복 합니다.
SQL> select count(*) from test;
COUNT(*)
----------
274
-----------------------------
SYS 계정에서 블록의 사용을 확인
-----------------------------
SQL> exec dbms_space.space_usage('SCOTT','TEST','TABLE', :unfbs, :unfbt, :f
s1bs, :fs1bt, :fs2bs, :fs2bt, :fs3bs, :fs3bt, :fs4bs, :fs4bt, :fbs, :fbt)
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> print unfbs unfbt fbs fbt
UNFBS
----------
0
UNFBT
----------
0
FBS
----------
21
FBT
----------
172032
insert가 불가능 한 블록의 수가 21개 이며 그 사이즈는 172032 byte라는 의미(pct_free를 넘어선 블록들의 수가 21이라는 의미)
SQL> print fs1bs fs1bt fs2bs fs2bt fs3bs fs3bt fs4bs fs4bt
FS1BS
----------
0
FS1BT
----------
0
FS2BS
----------
0
FS2BT
----------
0
FS3BS
----------
0
FS3BT
----------
0
FS4BS
----------
5
FS4BT
----------
40960
fs1은 0~25%, fs2는 25~50%, fs3는 50~75%, fs4는 75% ~ 100% free space를 가지고 block 의 수와 크기를 보여 줍니다. 현재 75~100%가 비어 있는 블록은 5개 있으며 그사이즈는 40960 이라는 의미
참고로 알아둘 것은 …
위 예의 경우 데이터를 가득 넣었기 때문에 많은 불록들이 사용되어 pct_free가 20%가 된 블록이 많이 있을 것이다. 그런데 0~25%가 0이라니(fs1bs 값)…
그 이유는 pct_free를 넘어선 블록들은 fs1이건 fs2건 그 대상에서 제외하므로 그렇습니다. 즉 이런 것들은 full 상태가 되는 것입니다.
[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 |
댓글 없음:
댓글 쓰기