<<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
Posted by Duritz

공지사항

Yesterday
Today
Total
05-18 19:10

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31