2009. 3. 13. 01:34 Program.../Oracle
물리적인 DB관리 (2)
<<20060705>>
SQL> alter system set control_files=
2 "D:\oracle\oradata\DBH1\CONTROL01.CTL",
3 "D:\oracle\oradata\DBH1\CONTROL02.CTL",
4 "D:\oracle\oradata\DBH1\CONTROL03.CTL" scope=spfile;
시스템이 변경되었습니다.
SQL> shutdown immediate
ORA-01507: ??????? ????? ?????
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Redo log file 관리 (multiplexing)
--로그정보확인
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------
3 STALE ONLINE D:\ORACLE\ORADATA\DBH1\REDO03.LOG
2 ONLINE D:\ORACLE\ORADATA\DBH1\REDO02.LOG
1 STALE ONLINE D:\ORACLE\ORADATA\DBH1\REDO01.LOG
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- ----------------
1 1 2 104857600 1 INACTIVE
2 1 3 104857600 1 CURRENT
3 1 1 104857600 1 INACTIVE
SQL> alter database add logfile
2 'D:\oracle\oradata\DBH1\REDO04.LOG' size 10m;
데이타베이스가 변경되었습니다.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -----------------------------------
3 STALE ONLINE D:\ORACLE\ORADATA\DBH1\REDO03.LOG
2 ONLINE D:\ORACLE\ORADATA\DBH1\REDO02.LOG
1 STALE ONLINE D:\ORACLE\ORADATA\DBH1\REDO01.LOG
4 ONLINE D:\ORACLE\ORADATA\DBH1\REDO04.LOG
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
1 1 2 104857600 1 INACTIVE
2 1 3 104857600 1 CURRENT
3 1 1 104857600 1 INACTIVE
4 1 0 10485760 1 UNUSED
alter system switch logfile; -- 강제 로그 스위치 발생
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
1 1 2 104857600 1 INACTIVE
2 1 3 104857600 1 ACTIVE
3 1 1 104857600 1 INACTIVE
4 1 4 10485760 1 CURRENT
-- 로그 멤버 추가(기존 그룹에 파일추가)
--크기를 지정할 수 없다(기존 멤버 파일과 같은 크기로 생성)
SQL> alter database add logfile member
2 'D:\oracle\oradata\DBH1\REDO01_r.LOG' to group 1,
3 'D:\oracle\oradata\DBH1\REDO02_r.LOG' to group 2,
4 'D:\oracle\oradata\DBH1\REDO03_r.LOG' to group 3,
5 'D:\oracle\oradata\DBH1\REDO04_r.LOG' to group 4 ;
데이타베이스가 변경되었습니다.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------------
3 STALE ONLINE D:\ORACLE\ORADATA\DBH1\REDO03.LOG
2 ONLINE D:\ORACLE\ORADATA\DBH1\REDO02.LOG
1 STALE ONLINE D:\ORACLE\ORADATA\DBH1\REDO01.LOG
4 ONLINE D:\ORACLE\ORADATA\DBH1\REDO04.LOG
1 INVALID ONLINE D:\ORACLE\ORADATA\DBH1\REDO01_R.LOG
2 INVALID ONLINE D:\ORACLE\ORADATA\DBH1\REDO02_R.LOG
3 INVALID ONLINE D:\ORACLE\ORADATA\DBH1\REDO03_R.LOG
4 INVALID ONLINE D:\ORACLE\ORADATA\DBH1\REDO04_R.LOG
8 개의 행이 선택되었습니다.
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
1 1 2 104857600 2 INACTIVE
2 1 3 104857600 2 ACTIVE
3 1 1 104857600 2 INACTIVE
4 1 4 10485760 2 CURRENT
-- 로그 멤버 삭제
SQL> alter database drop logfile member
2 'D:\ORACLE\ORADATA\DBH1\REDO01_R.LOG';
데이타베이스가 변경되었습니다.
SQL> alter database drop logfile member
2 'D:\ORACLE\ORADATA\DBH1\REDO02_R.LOG';
데이타베이스가 변경되었습니다.
SQL> alter database drop logfile member
2 'D:\ORACLE\ORADATA\DBH1\REDO03_R.LOG';
데이타베이스가 변경되었습니다.
SQL> alter system switch logfile;
시스템이 변경되었습니다.
SQL> alter database drop logfile member
2 'D:\ORACLE\ORADATA\DBH1\REDO04_R.LOG';
데이타베이스가 변경되었습니다.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------------
3 ONLINE D:\ORACLE\ORADATA\DBH1\REDO03.LOG
2 ONLINE D:\ORACLE\ORADATA\DBH1\REDO02.LOG
1 ONLINE D:\ORACLE\ORADATA\DBH1\REDO01.LOG
4 ONLINE D:\ORACLE\ORADATA\DBH1\REDO04.LOG
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
1 1 6 104857600 1 INACTIVE
2 1 7 104857600 1 CURRENT
3 1 5 104857600 1 INACTIVE
4 1 4 10485760 1 INACTIVE
-- 로그 그룹 삭제(그룹번호로 삭제가능)
SQL> alter database drop logfile group 4;
데이타베이스가 변경되었습니다.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------------
3 ONLINE D:\ORACLE\ORADATA\DBH1\REDO03.LOG
2 ONLINE D:\ORACLE\ORADATA\DBH1\REDO02.LOG
1 ONLINE D:\ORACLE\ORADATA\DBH1\REDO01.LOG
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
1 1 6 104857600 1 INACTIVE
2 1 7 104857600 1 CURRENT
3 1 5 104857600 1 INACTIVE
-- 오라클에서 그룹이나 멤버를 삭제한 뒤, 물리적인 파일(control,redolog,data)들도 삭제하길 바란다.
오라클에서는 기본적으로 논리적 파일과 물리적 파일을 동시게 삭제하지 않는다.
--오라클에서 파일(컨트롤/리두로그/데이터)이 삭제된다 해도(비사용)
--운영체제 상에서의 물리적인 파일은 함께 삭제되지 않는다!!!
*** tablespace 관리
--system 테이블 스페이스가 locally 방식이면 다른 테이블 스페이스도 locally방식을 사용해야 한다
--하나의 테이블 스페이스는 최소한 하나 이상의 데이터 파일로 구성
SQL> select tablespace_name, status, contents, extent_management from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN
--------------- --------- --------- ----------
SYSTEM ONLINE PERMANENT LOCAL --***
UNDOTBS1 ONLINE UNDO LOCAL
TEMP ONLINE TEMPORARY LOCAL
CWMLITE ONLINE PERMANENT LOCAL
DRSYS ONLINE PERMANENT LOCAL
EXAMPLE ONLINE PERMANENT LOCAL
INDX ONLINE PERMANENT LOCAL
ODM ONLINE PERMANENT LOCAL
TOOLS ONLINE PERMANENT LOCAL
USERS ONLINE PERMANENT LOCAL
XDB ONLINE PERMANENT LOCAL
11 개의 행이 선택되었습니다.
SQL> select tablespace_name, bytes, file_name from dba_data_files
2 union all
3 select tablespace_name, bytes, file_name from dba_temp_files;
TABLESPACE_NAME BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
XDB 39976960 C:\ORACLE\ORADATA\DBTEA\XDB01.DBF
USERS 26214400 C:\ORACLE\ORADATA\DBTEA\USERS01.DBF
UNDOTBS1 209715200 C:\ORACLE\ORADATA\DBTEA\UNDOTBS01.DBF
TOOLS 10485760 C:\ORACLE\ORADATA\DBTEA\TOOLS01.DBF
SYSTEM 419430400 C:\ORACLE\ORADATA\DBTEA\SYSTEM01.DBF
ODM 20971520 C:\ORACLE\ORADATA\DBTEA\ODM01.DBF
INDX 26214400 C:\ORACLE\ORADATA\DBTEA\INDX01.DBF
EXAMPLE 156631040 C:\ORACLE\ORADATA\DBTEA\EXAMPLE01.DBF
DRSYS 20971520 C:\ORACLE\ORADATA\DBTEA\DRSYS01.DBF
CWMLITE 20971520 C:\ORACLE\ORADATA\DBTEA\CWMLITE01.DBF
TEMP 41943040 C:\ORACLE\ORADATA\DBTEA\TEMP01.DBF
11 개의 행이 선택되었습니다.
--tablespace 생성
SQL> create tablespace ts_ex1
2 datafile 'C:\ORACLE\ORADATA\DBTEA\ts_ex1.dbf' size 5m
3 autoextend on next 2m maxsize 20m;
-------------------절이 없다면 자동 증가 할 수 없다!
테이블 영역이 생성되었습니다.
SQL> select tablespace_name, bytes, file_name from dba_data_files
2 where tablespace_name='TS_EX1';
TABLESPACE_NAME BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TS_EX1 5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF
--tablespace의 용량 늘이기
1. 데이터 파일 추가
SQL> alter tablespace ts_ex1
2 add datafile 'C:\ORACLE\ORADATA\DBTEA\TS_EX2.DBF' size 5m;
테이블 영역이 변경되었습니다.
SQL> @t1
TABLESPACE_NAME BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TS_EX1 5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF
TS_EX1 5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX2.DBF --***
2. 기존 파일의 크기 늘이기
SQL> alter database datafile
2 'C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF' resize 10m;
데이타베이스가 변경되었습니다.
SQL> @t1
TABLESPACE_NAME BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TS_EX1 10485760 C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF --***
TS_EX1 5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX2.DBF
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<오후>
--현재 사용 중인 테이블 스페이스 정보
SQL> desc dba_segments
이름 널? 유형
----------------------------------------- -------- -------------
OWNER VARCHAR2(30)
SEGMENT_NAME VARCHAR2(81)
PARTITION_NAME VARCHAR2(30)
SEGMENT_TYPE VARCHAR2(18)
TABLESPACE_NAME VARCHAR2(30)
HEADER_FILE NUMBER
HEADER_BLOCK NUMBER
BYTES NUMBER
BLOCKS NUMBER
EXTENTS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
RELATIVE_FNO NUMBER
BUFFER_POOL VARCHAR2(7)
SQL> select distinct tablespace_name from dba_segments;
TABLESPACE_NAME
------------------------------
CWMLITE
DRSYS
EXAMPLE
ODM
SYSTEM
TOOLS
UNDOTBS1
XDB
-- 현재 사용하고 있지 않는 테이블 스페이스 정보
(dba_tablespaces)-(dba_segments) = ?
전체 테이블 스페이스 - 사용중인 테이블 스페이스 = ?
select tablespace_name from dba_tablespaces
minus
select distinct tablespace_name from dba_segments;
-- 테이블 스페이스 삭제
테이블 스페이스 안에 객체가 포함되어있을 경우 삭제 안됨
drop tablespace table_name including contents and datafiles;
---------------------------
운영체제상의 테이블 스페이스 내의 물리적인 파일들도 삭제가능
SQL> alter user sky default tablespace users;
사용자가 변경되었습니다.
SQL> select username,default_tablespace from dba_users;
-- 해당 테이블스페이스
-- sky 가 소유한 sawon 테이블정보
select tablespace_name from dba_tables where owner='SKY' and table_name='SAWON';
TABLESPACE_NAME
------------------------------
SYSTEM
select tablespace_name from dba_tables where owner='SCOTT' and table_name='EMP';
TABLESPACE_NAME
------------------------------
SYSTEM
select * from sky.sawon; --온라인으로 확인
SQL> alter tablespace users offline;
테이블 영역이 변경되었습니다.
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
CWMLITE ONLINE
DRSYS ONLINE
EXAMPLE ONLINE
INDX ONLINE
ODM ONLINE
TOOLS ONLINE
USERS OFFLINE
XDB ONLINE
11 개의 행이 선택되었습니다.
SQL> select * from sky.sawon;
SQL> alter tablespace users online;
SQL> select tablespace_name,status from dba_tablespaces;
SQL> select * from sky.sawon;
create table scott.dept2
tablespace users
as select * from scott.dept;
select tablespace_name from dba_tables where owner='SCOTT' and table_name='DEPT2';
TABLESPACE_NAME
------------------------------
USERS
select * from scott.dept2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
alter tablespace users read only; -- 읽기 전용으로변경
테이블 영역이 변경되었습니다.
select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
CWMLITE ONLINE
DRSYS ONLINE
EXAMPLE ONLINE
INDX ONLINE
ODM ONLINE
TOOLS ONLINE
USERS READ ONLY
XDB ONLINE
select * from scott.dept2;
insert into scott.dept2 select * from scott.dept;
insert into scott.dept2 select * from scott.dept
*
1행에 오류:
ORA-00372: 파일 9는 지금 수정될 수 없습니다
ORA-01110: 9 데이터 파일: 'D:\ORACLE\ORADATA\DBH1\USERS01.DBF'
drop table scott.dept2;
(읽기전용 테이블스페이스도 삭제는 가능하다,변경 불가)
alter tablespace users read write;
-- Locally management & Dictionary management 관리
1. Locally management
--비트맵 정보를 이용한 빈 extents 기록 관리
--빈공간 조각모음(coalesing), undo(변경전 값) 데이터 관리가 필요없다
--저장 extent 크기가 일정해야 한다 (기본으로 extent 크기도 자동 관리)
(9i 는 extent 사이즈가 자동으로 변환된다)
2. Dictionary management
(Oracle 9i 버전에서는 사용안함, 퍼포먼스에 영향을 미치기때문에 성능 저하)
--Dictionary table 을 이용하여 빈 extents 기록 관리 => 성능 떨어짐
create tablespace ts_ex1
datafile 'D:\ORACLE\ORADATA\DBH1\USER_data.DBF' size 5m
extent management local uniform size 256k; --이 마지막줄은 생략가능
--Locally 로 관리되면 저장되는 extent(블럭이모인것) 사이즈가 같아야한다
--UNDO tablespace 생성 : 변경전 값을 가지는 데이타 테이블 스페이스
SQL> create undo tablespace undo_ex
2 datafile 'D:\ORACLE\ORADATA\DBH1\UNDO_ex.DBF' size 10m;
테이블 영역이 생성되었습니다.
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
CWMLITE ONLINE
DRSYS ONLINE
EXAMPLE ONLINE
INDX ONLINE
ODM ONLINE
TOOLS ONLINE
USERS ONLINE
XDB ONLINE
TABLESPACE_NAME STATUS
------------------------------ ---------
TS_EX1 ONLINE
UNDO_EX ONLINE
13 개의 행이 선택되었습니다.
--임시 테이블 스페이스 생성
SQL> create temporary tablespace temp_ex
2 tempfile 'D:\ORACLE\ORADATA\DBH1\temp_ex.DBF' size 5m;
테이블 영역이 생성되었습니다.
SQL> select tablespace_name,contents from dba_tablespaces;
TABLESPACE_NAME CONTENTS
------------------------------ ---------
SYSTEM PERMANENT
UNDOTBS1 UNDO
TEMP TEMPORARY
CWMLITE PERMANENT
DRSYS PERMANENT
EXAMPLE PERMANENT
INDX PERMANENT
ODM PERMANENT
TOOLS PERMANENT
USERS PERMANENT
XDB PERMANENT
TABLESPACE_NAME CONTENTS
------------------------------ ---------
TS_EX1 PERMANENT
UNDO_EX UNDO
TEMP_EX TEMPORARY
14 개의 행이 선택되었습니다.
SQL> select tablespace_name,file_name from dba_temp_files;
TABLESPACE_NAME FILE_NAME
------------------------------ -------------------------------------
TEMP D:\ORACLE\ORADATA\DBH1\TEMP01.DBF
TEMP_EX D:\ORACLE\ORADATA\DBH1\TEMP_EX.DBF
*** OMF (Oracle managed files)
-- 데이터베이스 파일들의 경로 및 이름을 자동관리, 물리적인 파일도 자동관리
-- 사전에(미리) 파라미터 변경 작업 필요
db_create_file_dest : 데이타 파일의 자동 저장될 경로 지정 (파라미터 경로 지정)
db_create_online_log_dest_1~5 : 로그 파일 & 컨트롤 파일의 자동 저장 경로
---- destination (목적지)
ora_%u.ctl : 컨트롤 파일
ora_%g_%u.log : 리두 로그 파일
ora_%t_%u.dbf : 데이터 파일
ora_%t_%u.tmp : 임시 데이터 파일
%u : 8문자 임의의 문자, %t : 테이블 스페이스명, %g : 로그 그룹 번호
-----------------------------------------------------------
(여러장소에는 줄수 없다)
alter system set db_create_online_log_dest_1='d:\oradata1';
alter system set db_create_online_log_dest_2='d:\oradata2';
alter database add logfile [size 10m];
alter database drop logfile group 4; -- 물리적인 운영체제 상에서도 자동 삭제
**** extent & segment 관리
--extent : 세그먼트(테이블)의 최소 저장 단위
--할당 받을 수 있는 extent의 수가 10개 미만인 세그먼트 정보
SQL> col owner format a7
SQL> col segment_name format a12
SQL> col segment_type format a12
SQL> col tablespace_name format a10
SQL> select owner, segment_name, segment_type, tablespace_name, max_extents,
2 extents, pct_increase from dba_segments
3 where max_extents-extents<=10 and owner<>'SYS';
선택된 레코드가 없습니다.
--특정 테이블에 할당된 segment 정보
SQL> select owner, segment_name, segment_type, tablespace_name, max_extents,
2 extents, pct_increase from dba_segments
3 where owner='SKY' and segment_name='SAWON';
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE MAX_EXTENTS EXTENTS PCT_INCREASE
------- ------------ ------------ ---------- ----------- ---------- ------------
SKY SAWON TABLE USERS 2147483645 1
--특정 테이블의 extent 정보
SQL> select segment_name, extent_id, block_id, bytes, blocks from dba_extents
2 where owner='SKY' and segment_name='SAWON'
3 order by 2,3;
SEGMENT_NAME EXTENT_ID BLOCK_ID BYTES BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON 0 33 65536 8 --33번째 블럭부터 8개로 구성(저장)
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ -----------
db_block_size integer 8192
---------------------------------------------
SQL> create table sky.sawon2
2 tablespace users
3 as select * from sky.sawon;
테이블이 생성되었습니다.
SQL> insert into sky.sawon2 select * from sky.sawon2;
21 개의 행이 만들어졌습니다.
SQL> /
42 개의 행이 만들어졌습니다.
SQL> /
84 개의 행이 만들어졌습니다.
SQL> /
10000 개의 행이 만들어졌습니다.
SQL> select owner, segment_name, segment_type, tablespace_name, max_extents,
2 extents, pct_increase from dba_segments
3 where owner='SKY' and segment_name='SAWON2';
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE MAX_EXTENTS EXTENTS PCT_INCREASE
------- ------------ ------------ ---------- ----------- ---------- ------------
SKY SAWON2 TABLE USERS 2147483645 23
--23개의 extent에 sawon2 저장
SQL> select segment_name, extent_id, block_id, bytes, blocks from dba_extents
2 where owner='SKY' and segment_name='SAWON2'
3 order by 2,3;
SEGMENT_NAME EXTENT_ID BLOCK_ID BYTES BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON2 0 345 65536 8
SAWON2 1 353 65536 8
SAWON2 2 361 65536 8
SAWON2 3 369 65536 8
SAWON2 4 377 65536 8
SAWON2 5 385 65536 8
SAWON2 6 393 65536 8
SAWON2 7 401 65536 8
SAWON2 8 409 65536 8
SAWON2 9 417 65536 8
SAWON2 10 425 65536 8
SEGMENT_NAME EXTENT_ID BLOCK_ID BYTES BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON2 11 433 65536 8
SAWON2 12 441 65536 8
SAWON2 13 449 65536 8
SAWON2 14 457 65536 8
SAWON2 15 465 65536 8
SAWON2 16 521 1048576 128 --***자동 extent크기 조정(최적화)
SAWON2 17 649 1048576 128
SAWON2 18 777 1048576 128
SAWON2 19 905 1048576 128
SAWON2 20 1033 1048576 128
SAWON2 21 1161 1048576 128
SEGMENT_NAME EXTENT_ID BLOCK_ID BYTES BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON2 22 1289 1048576 128
23 개의 행이 선택되었습니다.
-->locally management tablespace에서는 자동 extent 할당이 기본값이다!
*** free space(빈공간) 관리
SQL> select * from dba_free_space
2 where tablespace_name='USERS';
TABLESPACE FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
USERS 9 345 23396352 2856 9
-->345번째부터 2856개 블럭이 빈공간
SQL> select * from dba_free_space
2 where tablespace_name='USERS';
TABLESPACE FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
USERS 9 353 65536 8 9 --중간에 빈 공간
USERS 9 369 23199744 2832 9
--> 361번째부터 8개의 블럭 저장(dept4 table)
SQL> select owner, segment_name, segment_type, tablespace_name, max_extents,
2 extents, pct_increase from dba_segments
3 where owner='SKY' and segment_name='DEPT4';
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE MAX_EXTENTS EXTENTS PCT_INCREASE
------- ------------ ------------ ---------- ----------- ---------- ------------
SKY DEPT4 TABLE USERS 2147483645 1
SQL> select segment_name, extent_id, block_id, bytes, blocks from dba_extents
2 where owner='SKY' and segment_name='DEPT4';
SEGMENT_NAME EXTENT_ID BLOCK_ID BYTES BLOCKS
------------ ---------- ---------- ---------- ----------
DEPT4 0 361 65536 8
SQL> drop table sky.dept4;
테이블이 삭제되었습니다.
SQL> drop table sky.dept2;
테이블이 삭제되었습니다.
SQL> select * from dba_free_space
2 where tablespace_name='USERS';
TABLESPACE FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
USERS 9 345 23396352 2856 9
-->locally management tablespace는 빈공간에 대하여 자동 병합된다!! --***
(강제 병합 명령:alter tablespace users coalesce;)
SQL> select username,default_tablespace from dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYS SYSTEM
SYSTEM SYSTEM
DBSNMP SYSTEM
SKY USERS
SCOTT SYSTEM
TEST SYSTEM
OUTLN SYSTEM
WMSYS SYSTEM
ORDSYS SYSTEM
ORDPLUGINS SYSTEM
MDSYS SYSTEM
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
CTXSYS DRSYS
QS_ES EXAMPLE
QS_WS EXAMPLE
QS EXAMPLE
QS_ADM EXAMPLE
SH EXAMPLE
PM EXAMPLE
OE EXAMPLE
HR EXAMPLE
RMAN TOOLS
QS_CS EXAMPLE
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
QS_CB EXAMPLE
QS_CBADM EXAMPLE
QS_OS EXAMPLE
XDB XDB
ANONYMOUS XDB
WKSYS DRSYS
WKPROXY DRSYS
ODM ODM
ODM_MTR ODM
OLAPSYS CWMLITE
32 개의 행이 선택되었습니다.
'Program... > Oracle' 카테고리의 다른 글
Tablespace 오류복구 (0) | 2009.03.13 |
---|---|
오라클 백업복구 (0) | 2009.03.13 |
물리적인 DB관리 (1) (0) | 2009.03.13 |
DataBase 정규화 (0) | 2009.03.13 |
오라클 Import & Export (0) | 2009.03.13 |