티스토리 뷰
tablespace datafile ... ==> 물리적
segment ... extent ... block ... ==> 논리적
논리적 저장단위 이름이 있는 최소 단위 읽고 쓰는 최소 단위
-이름이 있는 -object
tablespace 만들기
create tablespace ts1 datafile '/home/oracle/ts1.dbf' size 10M;
유저입장 ex)scott
create table x(x
varchar2(20))
tablespace ts1;
desc user_tables;
select TABLE_NAME, TABLESPACE_NAME from user_tables;
S SYS> desc
dba_tablespaces;
S SYS> desc
v$tablespace;
S SYS> desc
dba_segments;
S SYS> desc
dba_extents;
S SYS> desc
v$datafile;
tablespace 공간 부족시 추가 하는 방법
- 데이터 파일 크기 증가
- 데이터 파일에 자동증가 옵션 줌
- T/S 데이터 파일을 추가
3번 방법
alter tablespace ts1 add datafile
'/home/oracle/ts1_2.dbf' size 20M;
alter tablespace ts1 add datafile
size 20M
extents
delete문 쓰면 공간이 줄어드나? NO
select count(*), sum(bytes) from
dba_extents
where owner='SCOTT' and segment_name='X';
COUNT(*) SUM(BYTES)
----------
----------
24 9437184
delete table x;
COUNT(*) SUM(BYTES)
----------
----------
24 9437184
해결방법
truncate table x;
COUNT(*) SUM(BYTES)
----------
----------
1 65536
보는 방법
select blocks,bytes from dba_extents where owner='SCOTT' and segment_name='X'
BLOCKS BYTES
----------
----------
8 65536
8 65536
8
65536
8 65536
8 65536
8
65536
8 65536
8 65536
8
65536
8 65536
8 65536
8
65536
8 65536
8 65536
8
65536
8 65536
128 1048576
17 rows selected.
select count(*), sum(bytes) from
dba_extents where owner='SCOTT' and segment_name='X'
COUNT(*) SUM(BYTES)
---------- ----------
17 2097152
database block
free space : update시 chaining 방지를 위해미리 비워둔 공간
(chaining : 공간이 모자라서 다른 블럭을 동시 사용(low하나 읽을때 block을 두개 읽어야 함))
select count(*),
sum(blocks), sum(bytes)
from dba_extents where owner='SCOTT' and
segment_name='X';
COUNT(*) SUM(BLOCKS)
SUM(BYTES)
---------- ----------- ----------
17 256 2097152
update x set x=x||'123123';
65536 rows
updated.
select count(*),
sum(blocks), sum(bytes)
from dba_extents where owner='SCOTT' and
segment_name='X';
COUNT(*) SUM(BLOCKS)
SUM(BYTES)
---------- ----------- ----------
18 384
3145728
+1 => update시 공간(freeSpace)이 모자라서 migration 혹은 chaining가 일어나서 공간을 더 사용.
S SCOTT> select rowid "Address", dept.* from dept;
Address
DEPTNO DNAME LOC
------------------ ---------- --------------
-------------
AAAMfKAAEAAAAAQAAA 10 ACCOUNTING NEW
YORK
AAAMfKAAEAAAAAQAAB 20 RESEARCH
DALLAS
AAAMfKAAEAAAAAQAAC 30 SALES
CHICAGO
AAAMfKAAEAAAAAQAAD 40 OPERATIONS
BOSTON
64진수 = A~Za~z0~9+/
rowid : 64진수(2^6) 숫자 18개로 구성 ==>2^(6*18)=2^(108)=2^100*2^8=(2^10)^10*2^8=1024^10*256=10^(3*10)*256=256*10^30
DB에 들어갈 수 있는 총 row 갯수
객체번호 파일번호 블록 번호 블록내 몇번째 row
실제 사용블럭과 할당된 블럭 보는 방법
사용블럭
select count(distinct
substr(rowid,1,15)) from x
COUNT(DISTINCTSUBSTR(ROWID,1,15))
---------------------------------
163
할당된 블럭
select count(*), sum(blocks),
sum(bytes)
from dba_extents where owner='SCOTT' and
segment_name='X';
COUNT(*) SUM(BLOCKS) SUM(BYTES)
---------- ----------- ----------
18 384 3145728
truncate table x;
select count(distinct substr(rowid,1,15)) from x;
COUNT(DISTINCTSUBSTR(ROWID,1,15))
---------------------------------
0
select count(*), sum(blocks),
sum(bytes)
from dba_extents where owner='SCOTT' and
segment_name='X'
COUNT(*) SUM(BLOCKS) SUM(BYTES)
---------- ----------- ----------
1 8 65536
insert into x values('adfadfadfadf');
cmmit;
select count(distinct substr(rowid,1,15)) from x
COUNT(DISTINCTSUBSTR(ROWID,1,15))
---------------------------------
1
select count(*), sum(blocks),
sum(bytes)
from dba_extents where owner='SCOTT' and
segment_name='X'
COUNT(*) SUM(BLOCKS) SUM(BYTES)
---------- ----------- ----------
1 8 65536
OMF (위치와 이름이 자동)
tablespace 만들때 경로 추가해주지 않아도
DB_CREATE_FILE_DEST 파라미터에 지정된 값으로 자동으로 잡아줌
NAME
VALUE
--------------------
------------------------------------------------------
db_create_file_dest
/u01/app/oracle/oradata
TABLESPACE
DATAFILENAME
----------
----------------------------------------------------------------
TS1
/home/oracle/ts1.dbf
TS1
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_ts1_5177sh2w_.dbf
TS1
/home/oracle/ts1_2.dbf
ex) create tablespace ts1 size 10M;
Space Management in Tablespaces
Locally managed tablespace - extent 할당 크기가 자동
Dictionary managed tablespace - 과거 버전 호환성
사이즈 수정
ALTER DATABASE
DATAFILE '/u01/app/oracle/oradata/ORCL/datafile/ts3.dbf'
RESIZE 20M
'DataBase > Oracle' 카테고리의 다른 글
Admin 1. 07장 Managing Schema Objects (0) | 2012.10.18 |
---|---|
Admin 1. 06장 Administering User Security (0) | 2012.10.18 |
Admin 1. 04장 Managing the Oracle Instance (0) | 2012.10.18 |
Admin 1. 03장 Creating an Oracle Instance (0) | 2012.10.18 |
PL/SQL 예제 리스트 (0) | 2012.10.17 |
- Total
- Today
- Yesterday
- Flashback
- tablespace
- recovery
- 리눅스
- postgresql pg_stat_activity
- PostgreSQL
- 갤럭시S
- 독도
- iOS5
- postgresql jsonb index
- Backup
- SQLPlus
- linux
- 투싼
- postgresql jsonb
- 오라클
- 윈도우
- MS-SQL
- oracle
- 인덱스
- 아이폰
- index
- iPhone
- 출시일
- parameter
- 한글
- query 잘림
- Managing Schema Objects
- 아이폰4
- PL/SQL