본문 바로가기

Programing/Oracle

Oracle - USER TABLE

SQL> SHOW USER
USER은 "SCOTT"입니다


SQL> CREATE TABLE T3
  2  (ID NUMBER(4),
  3  NAME VARCHAR2(20))
  4  TABLESPACE USERS
  5  STORAGE
  6     (INITIAL 65K
  7     NEXT 64K
  8     MINEXTENTS 1
  9     MAXEXTENTS 100
 10     PCTINCREASE 50);

테이블이 생성되었습니다.



                                                         


SQL> SELECT * FROM EMP
  2  WHERE DEPTNO=10
  3  FOR UPDATE; 셀렉트문에 락을 건다.


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7782


CLARK      MANAGER         7839 81/06/09       2450
        10

      7839 KING       PRESIDENT            81/11/17       5000
        10

      7934 MILLER     CLERK           7782 82/01/23       1300
        10





SQL> SHOW USER
USER은 "SCOTT"입니다

SQL> SELECT * FROM EMP WHERE DEPTNO=10 FOR UPDATE;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 81/06/09       2450
        10

      7839 KING       PRESIDENT            81/11/17       5000
        10

      7934 MILLER     CLERK           7782 82/01/23       1300
        10

대기상태

SQL> SHOW USER
USER은 "SCOTT"입니다

SQL> UPDATE EMP SET SAL=200 WHERE DEPTNO=10;


SQL> ROLLBACK;

롤백이 완료되었습니다.


롤백을 하면 비로서 UPDATA가 된다.





ㅅㅁ핃듬ㄴㄱ


MIGRATION -  ROW 공간이 좁으면 다른곳으로 보냄

                        마이그레이션이 심화며면 CHAIN이라 한다.

처음부터 BLOCK내의 일정공간(PCT FREE)을 생성해 공간이 좁으면 일정 공간으로 이동한다.

오라클은 I/O기본단위가 BLOCK이기때문에

PCT FREE 20;

8K  * 0.2

FREE FOR UPDATA


LOCK - TRANSACTION간 상호 파괴적 행위를 막기 위한 ORACLE의 관리 메커니즘

            *무한대기 , *DML은 최저 레벨이 ROW이다.



SEGMENT HEADER - FREE LIST는비어있는 블럭에 대한 정보

                                INSERT는 이걸 찾아서 비어 있는 공간에 들어간다.


OVERHEAD - 특정한 기능을 수행하게 위해 추가적으 로애외=단도,





SQL> SHOW USER
USER은 "SCOTT"입니다
SQL> DESC USER_TABLES


SQL> SELECT TABLE_NAME, TABLESPACE_NAME,PCT_FREE, PCT_USED
  2  FROM USER_TABLES
  3  WHERE TABLE_NAME IN('T3','T4','EMP');

TABLE_NAME                     TABLESPACE_NAME                  PCT_FREE
------------------------------ ------------------------------ ----------
  PCT_USED
----------
EMP                            SYSTEM                                 10
        40

T3                             USERS                                  10


T4                             SYSTEM                                  2
        10



PCT USED , PCT FREE   - BLOCK 공간 활용 PARAMETER


동시성 제어 PARAMETER

INITRANS  - 5

MAXTRANS - 100


BLOCK HEADER 에는 TABLE DIRECTORY , ROW DIRECTORY , TRANSACTION SLOT

이런 공간들이 존재한다.


하나의 블락내에 동시에 트랜잭션이 일어나는 지를 관련및 추적하고 싶을때

트랜잭션 만의 고유공간이 있다. 블락에 고유명을 변경하고 싶다면 자신의 트랜잭션 번호를

써놓고 변경해야한다.(락에 대한 체크 포함)

항상 모든 트랜잭션은 번호를 적어 놓고 진행해야한다.

동시성파라메터는 INITRANS는 블락해더 생성할때 미리 생성해놓은 트랜잭션슬랏의 갯수를 말한다.

MAXTRANS 는 최대 발생할수 있는 트랜잭션 슬롯을 100개까지 만들겠다.


INITRANS를 초과하면 PCT FREE 공간에 만든다.




SQL> ALTER TABLE T4
  2  INITRANS 5 MAXTRANS 100;

테이블이 변경되었습니다.



SQL> SELECT TABLE_NAME, INI_TRANS,MAX_TRANS
  2  FROM USER_TABLES
  3  WHERE TABLE_NAME=
  4  'T4';



TABLE_NAME                      INI_TRANS  MAX_TRANS
------------------------------ ---------- ----------
T4                                      5        100




BLOCK

DB_BLOCK_SIZE - 필요에 따라 용도에 맞게 사용가능 (2K , 4K , 8K ,16K)


은행 : OLTP성 업무 - ONLINE TRANSACTION PROCESS

         요구불예금,짧은 TRANSACTION ,RANDOM

         쿼리는 INDEX를 많이 사용한다.

         블락크기가 크건 작건 작게 만든게 갯수가 많고 관리가 많다.


기업 : DSS - decision support system(의사결정 시스템) , DW - DATA WEARHOUSE(기상청)

        3년간 데이타중 최대 이윤을 남기는 상위 3개 상품을 분기별 매출을 구하고 싶다???ㄷㄷㄷ;

        이런 쿼리를 FULL TABLE SCAN 이라한다.

        데이타블럭이 큰수록 좋다.


DATA


DATA 는 곧  INFORMATION 이다. INFORMATION이 쌓이면 지식이된다.

 

'Programing > Oracle' 카테고리의 다른 글

Oracle - TABLE 재구성  (0) 2008.07.29
Oracle -  (0) 2008.07.29
Oracle - Group  (0) 2008.07.29
Oracle - LGWR  (0) 2008.07.29
Oracle - Control file  (0) 2008.07.29