[ Oracle - DDL문 ]

 

 

 

1. CREATE TABLESPACE - 테이블 스페이스 생성

      구문] CREATE TABLESPACE   테이블 스페이스명

            AUTOEXTEND ON NEXT  자동증가 SIZE  MAXSIZE UNLIMITED

            DATAFILE            '테이터 파일 이름'

            SIZE                 데이터 파일 크기

           [DEFAULT STORAGE( INITIAL     최소 데이터 파일 크기

                             NEXT        최대 데이터 파일 크기

                             MINEXTENTS  최소값

                             MAXEXTENTS  최대값

                             PCTCINCREASE 값) ONLINE / OFFLINE ] ;

 

      ALTER TABLESPACE - 테이블 스페이스 생성

      구문1] 사용할 테이블 스페이스의 SIZE확장

             ALTER TABLESPACE  테이블 스페이스명

             ADD   DATAFILE    '데이터 파일 이름'

             SIZE               데이터 파일 크기;

      구문2] ALTER TABLESPACE 테이블 스페이스명

            [DEFAULT STORAGE( INITIAL     최소 데이터 파일 크기

                              NEXT        최대 데이터 파일 크기

                              MINEXTENTS  최소값

                              MAXEXTENTS  최대값

                              PCTCINCREASE 값) ] ;

      구문3] 사용할 테이블 스페이스의 데이터 파일이름을 변경

             ALTER TABLE SPACE 테이블 스페이스명

             RENAME  '경로 와 옛 데이터 파일 이름'

             TO      '경로 와 새로운 데이터 파일 이름';

 

 

2. CREATE USER - 사용자 생성

      구문] CREATE USER 사용자아이디  IDENTIFIED BY 비밀번호

                  [DEFAULT TABLESPACE   테이블 스페이스명_1]

                  [TEMPORARY TABLESPACE 테이블 스페이스명_2]

                  [QUOTA UNLIMITED ON   테이블 스페이스명_1]

                  [QUOTA UNLIMITED ON   테이블 스페이스명_2]

                  [QUOTA size ON        테이블 스페이스명_1] ;

                  [QUOTA size ON        테이블 스페이스명_2] ;

 

 

      ALTER USER - 사용자 변경

      구문] ALTER USER 사용자아이디  IDENTIFIED BY 비밀번호

                  상동

 

      DROP USER  - 사용자 삭제

      구문] DROP USER 사용자 아이디 [ CASCADE ];

 

3. GRANT - 권한 부여

      구문] GRANT {CONNECT, RESOURCE, DBA} TO 사용자 아이디 IDENTIFIED BY 비밀번호;

 

      REVOKE - 권한 삭제

      구문] REVOKE 삭제할 권한 FROM 사용자 아이디;

 

4.1 CREATE TABLE - 테이블 생성

    CREATE TABLE 테이블명(

              컬럼명1  데이터 타입1   NOT NULL,

              컬럼명2  데이터 타입2   DEFAULT 값,

              ....

              PRIMARY KEY (컬럼명1, ... ) );

 

4.2 ALTER TABLE - 테이블 구조 변경

    구문] ALTER TABLE 테이블명 ADD   (컬럼명  데이터 타입);     //컬럼추가

          ALTER TABLE 테이블명 MODIFY(컬럼명  신규데이터타입);  //타입 및 SIZE변경

          ALTER TABLE 테이블명 DROP  (컬럼명);                  //컬럼삭제

4.3 DROP TABLE - 테이블 삭제

    구문] DROP TABLE 테이블명;

 

 

-----------------------------------------------------------------------------------------------

 

1. CREATE TABLESPACE - 테이블 스페이스 생성

      구문] DATAFILE    - 절대 패스 와 파일의 이름 ( '/oracle/infodata/infodata.dbf' )

            SIZE        - 파일의 사이즈 (K(킬로바이트), M(메가바이트) 단위를 사용)

            INITIAL     - 테이블 생성시 사용할 수 있는 공간의 크기.

                          예를 들어, 10M로 지정되면 생성된 임의의 테이블에 입력되는 데이터들을

                                     10M의 영역에 저장한다는 의미 이다.

            NEXT        - 처음에 저장될 데이터의 영역인 initail 만큼을 다 쓰면 추가로 NEXT SIZE

                          만큼 한번만 더 확장시켜 준다.

            MINEXTENTS  - NEXT영역으로 할당할 수 있는 최소의 개수를 지정해 줄 수 있다.

            MAXEXTENTS  - NEXT영역으로 할당할 수 있는 최대의 개수를 지정해 줄 수 있다.

            PCTCINCREASE - PICINCREASE 10이라고 지정해 두면, 맨 처음에는 NEXT SIZE만큼 영역만을

                          확장시켜 주지만 두번째부터는 NEXT영역의 크기에서 10%만큼 더 크게 확장

                          시켜주게 된다.

           ONLINE / OFFLINE - default는 ONLINE

                              ONLINE으로 설정하여 테이블 스페이스를 생성하면, 생성과 동시에

                              데이터베이스 사용자들이 사용가능함

      수정구문] ADD DATAFILE - 어느파일에 해당 SIZE만큼 추가할 지 절대패스와 파일이름을 지정

                SIZE         - ADD DATAFILE에서 지정할 파일에 SIZE만큼 증가 시킴

 

2. CREATE USER / ALTER  USER

      - 권한 : DBA 권한이 존재 해야만 사용자 생성 및 수정 가능

      - TEMPORARY TABLESPACE : SORT, GROUP BY 등 작업을 수행할 때 사용됨

      - QUOTA UNLIMITED ON   : 해당 사용자 아이디가 지정한 테이블 스페이스의 공간을 모두 사용한다는 의미

      - QUOTA size ON        : 해당 사용자가 지정한 테이블 스페이스를 일정영역(size만큼)만을 사용할 수 있다.

      - DROP USER 사용자 아이디 [ CASCADE ]; CASCADE-해당 사용자로 생성한 테이블생성하거나, 임의의 작업을

                                             수행한 경우의 삭제 시.

 

3. GRANT - 권한 부여

      - CONNECT   : 데이터베이스 내에 접속권한, 생성된 테이블등의 오브젝트들을 조회 권한

      - RESOURCE  : Connect권한과 Create Procedure, Create trigger, Create Table, Create User,

                    Create Table등의 명령을 사용가능

      - DBA       : 데이터베이스 관리자 권한

 

4.1 CREATE TABLE - 테이블 생성

    - ROLLBACK 문으로 취소 할 수 없다.

    - 데이터베이스를 사용할 코드값이 'KO16KSC5601'일 경우 테이블명을 한글로 사용할 수 있다.

4.2 ALTER TABLE

    - MODIFY : . 자료가 없을 경우

                 - 자릿수를 줄이거나 늘릴 수 있다.

               . 자료가 있을 경우

                 - 자릿수를 줄일수는 없고, 늘리수는 있다.? (확인필요)

                 - 타입 변경 불능.

 

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - LOB Type  (0) 2017.01.18
Oracle - Date다루기  (0) 2017.01.18
Oracle - Data_Type_LOB  (0) 2017.01.18
Oracle - Data_Type_유니코드지원  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Posted by 농부지기
,

                              [ LOB Column ]     

☞ 처리 예제

 

LOB SEGMENT 생성 GUIDE
========================
PURPOSE
-------
   이 자료는 LOB SEGMENT 생성에 관한 가이드를 소개한다.

Explanation
------------
Lob 데이타 타입은 대용량 크기를 지원해야 하기 때문에 어떤 데이타 타입
보다도 storage 특성을 잘 이해해야 할 필요성이 있다. 각종 parameter에 대한
적절한 설정은 좋은 performance를 내는 데 중요한 요인이 된다.
다음은 LOB 컬럼을 갖는 table을 생성하는 SQL문이다. 다양한 option을
사용하였는데, 이들 parameter에 대한 자세한 이해를 통해 효과적인 lob
segment를 생성할 수 있다.  참고로 lob에 대한 자세한 정보를 보려면
dba/all/user_lobs를 조회하면 알 수 있다.
 
    CREATE TABLE demolob ( A NUMBER, B CLOB )
    STORAGE (INITIAL 256  NEXT 256)     
    TABLESPACE user_data
    LOB(b) STORE AS   demolob_seg (
           TABLESPACE lob_tb
           STORAGE    (INITIAL 6144  NEXT 6144)
           CHUNK 4
           PCTVERSION 20
           NOCACHE LOGGING
           ENABLE STORAGE IN ROW
           INDEX      demolob_idx (
                      TABLESPACE lob_tb
                      STORAGE ( INITIAL 256  NEXT 256 )
                      )  
           );
 
1) TABLESPACE와  storage parameter
  - lob, lob index에 대한 tablespace를 지정하지 않는 경우, 해당
    table이 저장되는 tablespace에 같이 저장되게 된다. lob 컬럼,
    lob index, table 에 대해 tablespace를 각기 지정하는 것이
    contention을 줄일 수 있어 보다 효과적이다. (최소한 lob 컬럼과
    다른 컬럼들을 구분하여 별개의 tablespace에 저장하도록 지정하는
    것이 바람직하다.)
  - lob index는 lob 컬럼의 내부적 저장 위치를 연결시켜주는
    indicator를 저장한 index이다. default로 제공받는 index명은
    이해하기 어렵기 때문에 lob index명을 지정하여 사용하는 것이
    편하다.
  - lob index에 대한 parameter 변경은 alter index문을 이용하지
    않고, alter table문을 이용하여야 한다. 단, index명을 바꿀 수는
    없다.
 
2) PCTVERSION
  
  - 데이타를 변경할때는 read consistency를 위해 undo 정보를 저장할
    필요가 있다. 그러나 LOB 데이타인 경우, 그 크기가 크기때문에
    undo 정보 유지하기에는 많은 어려움이 따르기 때문에, 대신에
    old version 데이타를 유지하는 방법으로 read consistency를 제공하고
    있다. pctversion은 old version lob data가 차지하는 percentage를
    의미한다. 예를들어 default value가(10) 적용되었다면, 새로운 lob
    data가 old version의 10%가 저장될때 까지는 old version을  간직하고
    있다가, 이 이상 크기가 되면 바로 old version data를 reclaim하고,
    이 space를 재사용 즉, overwrite 하게 된다.
 
  - pctversion을 큰 값을 지정한 경우, old version을 저장하기 위해
    보다 많은 space가 필요하게 된다. 하지만 update가 많은 작업인
    경우에는 이 값을 높게 잡아 다음과 같은 에러를 피할 수 있을 것이다.
    ORA-01555: snapshot too old: rollback segment number
               with name "" too small
    ORA-22924: snapshot too old
  - 만약 lob data가 read-only인 경우라면, pctversion은 0으로
    설정할 수 있다.
  - pctversion 변경
    SQL> ALTER TABLE demolob MODIFY LOB(b) (PCTVERSION 10);
3) CACHE/NOCACHE
  - 자주 access되는 경우라면, cache를 선택하여 사용한다.
    default는 nocache이다.
  - in-line lob은 영향을 받지 않는다. 즉, in-line lob은 다른 데이타와
    마찬가지로 buffer cache에서 바로 읽혀지기 때문이다.
  - CACHE_SIZE_THRESHOLD limit이 적용되지 않기 때문에 cache할 때는
    주의해야 한다.
  - cache/nocache 변경
    SQL> ALTER TABLE demolob MODIFY LOB (b) ( CACHE/NOCACHE );

4) CHUNK
 
  - lob data를 access하는 단위로써, db_block_size의 배수로 설정한다.
    lob 데이타가 저장될 initial extent, next extent는 chunk의 배수로
    설정하는 것이 좋다. 만약 db_block_buffer가 2K이고, chunk를 3K로
    설정했다면 chunk는 4K로 조정 되어 적용된다.
 
  - chunk는 in-line lob에는 영향을 주지 않고, out-line lob에만 영향을
    준다. 예를들어 chuk를 32K로 설정하고, disable storage in row를
    설정했다면 1K의 데이타를 저장할때도 32K가 lob segment에 할당된다.
  - lob table이 생성된 이후에는 변경할 수 없다.

5) LOGGING/NO LOGGING
  - redo 정보를 생성할 것인지 여부를 결정하는 parameter이다. 
  - cache option을 사용하는 경우는 무조건 logging을 의미한다.
  - logging, nologging에 상관 없이 undo 정보는 lob index에 대해서만
    생성되고고, lob 데이타에 대해서는 생성하지 않는다.
  - logging인 경우는 redo 정보를 생성하고, bulk load나 대량의
    insert를 하는 경우 nologging을 설정하여 redo 정보를 생성하지
    않도록 할 수 있다.
 
  - logging/no logging 변경
    SQL> ALTER TABLE demolob MODIFY LOB(b) (NOCACHE NOLOGGING);
 
6) ENABLE/DISABLE STORAGE IN ROW
  - 4k 이하의 data를 in-line에 저장할 지 여부를 결정한다.
  - enable인 경우 (default)
    4k 이하의 lob은 in-line으로, 즉 테이블에 저장하고, 4k 보다
    큰 경우에는 out-line 즉, lob segment에 저장된다. 이때 4K는
    control 정보를 포함한 크기로써, 실제 in-line으로 저장할 수
    있는 최대 크기는 3964 byte이다. 4K 이상의 데이타는 lob
    segment에 저장되지만, 36 - 84 bytes의 information 정보는
    in-line에 남게 된다.
  - disable인 경우
    모든 datas는 out-line으로 저장된다. 20 byte lob locator만
    in-line으로 저장되어 lob index에서 해당 lob block을 찾을 수
    있도록 해준다.
  - in-line lob인 경우에는 다른 데이타 타입처럼 REDO, UNDO 정보가
    기록된다. 그러나 out-line인 경우에는 column locator와 LOB INDEX가
    변경되는 경우에만 UNDO 정보를 기록한다. 즉, lob segment에 대해서는
    undo 정보를 만들지 않는다.
  - lob 컬럼에 대한 access가  많지 않은 경우는 disable을 설정하는 것이
    바람직하다. High Water Mark를 작게 유지될 수 있기 때문에 특히,
    full  table scan을 자주 하는 table인 경우 유용하다.
  - lob table이 생성된 이후에는 변경할 수 없다.


☞ 시한편
 

내용 입력

 

 

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - DDL문  (0) 2017.01.18
Oracle - Date다루기  (0) 2017.01.18
Oracle - Data_Type_LOB  (0) 2017.01.18
Oracle - Data_Type_유니코드지원  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Posted by 농부지기
,

오라클  날짜관련 .....

 

오라클 고객센터에서 퍼 왔습니다.

=====================================================================

Some Examples of Storing Dates in SQL

DATE 타입의 값에 대한 입력 예제

다양한 종류의 DATE 타입의 컬럼을 가지는 테이블을 생성하였다.

 

create table DATE_TEST

(a date vms,

b date ansi,

c time(0)

default TIME '06:00:00',

d timestamp(2),

e interval year(4)

CHECK(e > INTERVAL '10' YEAR)

not deferrable,

f interval day(3) to minute,

g char(16));

 

ANSI/ISO SQL-92 는 date/time 문자열 (DATE VMS, DATE, TIME, TIMESTAMP and

INTERVAL)이 date/time columns에 첨부될 수 있도록 하고 있다. date/time 구문

을 사용하는 INSERT, DELETE, UPDATE, SELECT 그리고 CREATE, ALTER 등의

문장에서 date/time 문자열을 볼 수 있다.

 

insert into DATE_TEST (a) value (DATE VMS'2-APR-1957');

insert into DATE_TEST (b) value (DATE '1993-2-23');

insert into DATE_TEST (c) value (TIME '12:20:00');

insert into DATE_TEST (d) value (TIMESTAMP '1993-2-23 12:20:00.00');

insert into DATE_TEST (e) value (INTERVAL '35' YEAR(4));

insert into DATE_TEST (f) value (INTERVAL '365:10:21' DAY(3) TO MINUTE);

 

DATE VMS 컬럼은 EDIT STRING을 정의하여 다양한 형식으로 표현할 수 있지만,

ANSI/ISO date/time 값은 다음과 같이 CAST 연산자를 이용하여 DATE VMS로

바꾸지 않는 이상 계속 ANSI/ISO 형식으로 볼 수 밖에 없다.

 

SQL> select d, CAST(d as DATE VMS)

cont> from DATE_TEST

cont> where d is not null;

D

1993-02-23 12:20:00.00 23-FEB-1993 12:20:00.00

1 row selected

SQL>

 

Rdb는 DATE VMS에 대한 내부 형식을 제공한다. 이 형식은 TIMESTAMP 형식과

비슷하지만 "-", ":" 의 구두점이 없다.

다음의 예에서는 DATE VMS 컬럼에 CHAR 컬럼을 할당한다. 애플리캐이션에서

CHAR 컬럼은 호스트 변수나 module language 파라미터가 될 수 있다.

 

SQL> insert into DATE_TEST (g) value ('1957020100000000');

1 row inserted

SQL>

SQL> update DATE_TEST

cont> set a = g

cont> where g is not null;

1 row updated

SQL>

SQL> select a, g

cont> from DATE_TEST

cont> where g is not null;

A G

1-FEB-1957 00:00:00.00 1957020100000000

1 row selected

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - DDL문  (0) 2017.01.18
Oracle - LOB Type  (0) 2017.01.18
Oracle - Data_Type_LOB  (0) 2017.01.18
Oracle - Data_Type_유니코드지원  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Posted by 농부지기
,

LOB

 

개요)

LOB은 Oracle8에서 새로 도입된 데이터 형입니다.

LOB은 LONG 데이터 형에 비해 더 좋은 기능을 제공합니다.

따라서 LONG을 사용하는 기존의 어플리케이션들이 LOB을 사용하도록 변환되는 것이 바람직합니다.

이러한 이전 과정을 돕기 위하여 Oracle9i에서는 다양한 기능들을 제공합니다.

 

장점)

LONG 데이터 형으로부터 LOB 데이터 형으로의 변환을 돕습니다.

사용자로 하여금 새로운 어플리케이션에 LONG보다는 LOB을 사용할 수 있도록 유도합니다.

LONG을 사용하던 기존의 어플리케이션이 보다 손쉽게  LOB을 사용하는 어플리케이션으로 이전될 수 있도록 합니다.

 

LONG 에서 LOB이전)

ALTER TABLE 명령이 LONG 형 컬럼을 CLOB으로,  LONG RAW 컬럼을 BLOB으로 수정할 수 있도록 개선되었습니다.

그러한 변환은 ALTER TABLE... MODIFY 명령으로 수행할 수 있습니다.

이 작업은 ALTER TABLE... MOVE 명령과 유사한 방법으로 수행됩니다.

따라서 변환 도중 LONG 과 LOB 데이터 모두를 저장할 수 있는 공간이 필요합니다.

 

    예) ALTER TABLE print_media

     MODIFY (press_release CLOB);

 

LOG이전을 위한 SQL지원)

VARCHAR2 형 인자를 받아들이는 SQL 함수 및 연산자들이 CLOB 또한 인자로 받을 수 있습니다.

RAW 형 인자를 받아들이는 SQL 함수는 BLOB 또한 인자로 받을 수 있습니다.

 

     예)SELECT SUBSTR(press_release, 1, 200)

     FROM print_media;

 

LOB 이전을 위한 PL/SQL 지원)

표준  패키지에 정의되어 LONG 형의 인자를 받아들이는  SUBSTR, INSTR 등의 함수들이 CLOB 형 또한 인자로 받아들일 수 있습니다.

LONG RAW를 받아 들이는 모든 함수들이 BLOB 또한 받아들입니다.

변수 값을 대입하거나 인자를 넘겨줄 때에 LOB과 VARCHAR 또는 RAW 사이의 형 변환이 묵시적으로 수행됩니다.

사용자는  LOB 컬럼을 VARCHAR 및 RAW로 정의하고 바인드할 수 있습니다.

 

지정 및 인자 전달에서의 묵시적 형 변환)

LONG 컬럼에 기반, %TYPE을 이용하여 선언된 변수들은 LONG 컬럼이 LOB 컬럼으로 변환이 된 후에 자동으로 LOB 형의 값들을 지정받을 수 있습니다

LOB, VARCHAR 그리고 RAW 값들은 일단 LONG 컬럼이 LOB 컬럼으로 변환이 된 후에는, LONG 컬럼에 기반, %TYPE을 이용하여 선언된 인자로 전달될 수 있습니다.

사용자는 CLOB 컬럼을 VARCHAR 변수로, BLOB 컬럼을 RAW 변수로 읽어 들일 수 있습니다.

VARCHAR 및 RAW를 받아들이는 내장 함수들 또한 CLOB 및 BLOB 데이터를 받아들일 수

 

   예: LOB의 묵시적 형 변환)

     DECLARE

       v_clob  CLOB;

       v_char  VARCHAR(32500);

     BEGIN

     SELECT ad_sourcetext INTO v_clob

       FROM print_media

      WHERE product_id = 501;

     v_char := rtrim(v_clob);

     END;

 

LOB 이전의 제한)

LOB은 클러스터 테이블에서 사용할 수는 없습니다.

인덱스, 그리고 테이블을 이전할 때 그 테이블에 기초하여 만들어진 Materialized 뷰는 수동으로 재구축해야 합니다.

LOB 컬럼에 대한 UPDATE OF 트리거는 지원되지 않습니다.

뷰에 대한 INSTEAD OF 트리거에서 LOB 컬럼의 삽입 또는 갱신을 위해서 문자열을 지정할 수는 없습니다.

 

기 타)

파티션된 인덱스 구조 테이블에서도 LOB 컬럼을 사용할 수 있습니다.

LOB 컬럼에 대한 함수 기반 인덱스의 사용이 가능합니다.

 

 

 

 

 

 

 

 

 

 

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - LOB Type  (0) 2017.01.18
Oracle - Date다루기  (0) 2017.01.18
Oracle - Data_Type_유니코드지원  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Oracle 기본문법 - PARAMETER LISTS  (0) 2017.01.18
Posted by 농부지기
,

유니 코드 지원

 

정의)

•  Oracle9i에서는 NCHAR 데이터 형을 통하여 유니코드를 지원합니다.

•  NCHAR, NVARCHAR2 그리고 NCLOB 데이터 형은 유니코드만을 사용할 수 있으며, 문자의 개수로 길이가 정의됩니다.

•  NCHAR 데이터 형은 다음과 같은 데이터 형으로 변환할 수 있습니다.

      -  CHAR

      -  NUMBER

      -  DATE

      -  ROWID

      -  CLOB

 

장점)

•  Oracle 데이터베이스에 유니 코드 데이터를 저장해야 할 요구를 만족시킵니다.

•  특히 항상 UTF8 또는 UTF16 인코딩을 사용하는 유니코드 데이터 형을 저장하고, 항상 문자 개수로 길이가 정의되는 데이터 형에 대한 요구를 만족시킵니다.

•  NCHAR 데이터 형을 사용함으로써 데이터베이스 문자 집합과 무관하게 유니코드 데이터를 저장할 수 있습니다.

•  NCHAR 데이터 형을 사용함으로써 Oracle 데이터베이스를 더욱 유연하게 사용할 수 있습니다.

 

Oracle9i NCHAR 데이터 형으로의 이전

•  Oracle9i에서는 NCHAR 데이터 형은 오직 유니코드 문자 집합 인코딩만을 (UTF8 and AL16UTF16) 지원합니다.

•  Oracle8에서 지원되었던 그 외의  NCHAR 데이터 형을 위한 문자 집합은 더 이상 지원되지 않습니다.

•  이러한 이전 과정은 migration utility에 의해 다루어질 수 있습니다.

 

묵시적 형 변환을 위한 SQL 함수 지원

•  CHAR/VARCHAR2를 인자로 받을 수 있는 모든 SQL 함수들은 NCHAR/NVARCHAR2 또한 인자로 받을 수 있습니다.

•  복수의 character 데이터 형을 인자로 받되 복수의 인자를 받을 수 있는 모든 SQL 함수들은 CHAR/VARCHAR2/NCHAR/NVARCHAR2의 임의의 조합을 인자로 받을 수 있습니다.

 

 

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - Date다루기  (0) 2017.01.18
Oracle - Data_Type_LOB  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Oracle 기본문법 - PARAMETER LISTS  (0) 2017.01.18
Oracle 기본문법 - Data_Format  (0) 2017.01.18
Posted by 농부지기
,

[ Oracle - Data_Type ]

 

                                [ DATA TYPE ]

☞ DATA TYPE 개요
 

1. 개요 : 데이터 타입은, 테이블 컬럼을 정의하거나, 프로시져 / 함수의 인자에 사용되는 값이
          저장되는 방식을 결정한다. 오라클에서는, 데이터 타입에 따라 의미상 동일한 값이
          다르게 처리 됩니다. 예를 들어, NUMBER데이터 타입에 저장된 숫자에는 다른 숫자를
          더하거나 뺄 수가 있지만, RAW 데이터 타입에 저장된 숫자 표현에 대해서는 더하거나 뺄
          수가 없다.

2. 이해
   - 성능측면 : 적절한 데이터 타입을 사용하여, 인덱스가 사용되지 못하는 일을 예방
                데이터 터압이 수행속도에 미치는 영향을 이해
   - 자원황용측면 : 적절한 데이터 타입을 사용하여 불필요한 자원낭비를 예방
   - 장애대응측면 : Corruption 등 장애 발생시, 블럭 구조 분석 능력 확보.
                    트랜잭션 처리 내부 구조를 이해하는데 필요한 선행 지식 확보.


☞ DATA TYPE 종류
 

1. 문자, 숫자, 날짜, 기간, 바이너리, ROWID, 사용자정의
2. 문자 TYPE : CHAR, NCHAR, VARCHAR2, NVARCHAR2, CLOB, NCLOB, LONG
3. 숫자 TYPE : Oracle9i기준으로 숫자는 NUMBER Data Type만 제공
4. 날짜 TYPE : DATEINTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, TIMESTAMP
               TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE
5. 바이너리  : BLOB, BFILE, RAW, LONG RAW
6. 특정ROW   : ROWID, UROWID
7. 사용자 정의 데이터 타입 : OBJECT type, COLLECTION Data Type, REFERENCE Data Type으로 구분.
      Object Type은 데이터 타입과 이 데이터들을 조작하기 위한 함수 혹은 프로시져를 묶어서
      사용자가 정의한 새로운 데이터 타입이다.
      Collection Data Type은 VARRAYNESTED TABLE이 해당하며, 다른 Object를 참조하는
      Reference Data Type도 사용자 정의 데이터 타입에 해당된다.

 

◎ 데이터 타입의 선정 지침
   문자열 관련 일반 지침, 숫자, 날짜 관련 일반 지침, LONG/LONG RAW 제약 사항,
   BLOB/CLOB 제약 사항

 

☞ CHAR TYPE

 

1. 정의
   CHAR 타입은, 데이터베이스의 character set 데이터를 고정 길이로 저장하고, NCHAR 타입은
   데이터베이스의 national character set 데이터를 고정길이로 저장하는데 사용되는 데이터
   타입이며, 9i 이상 버전에서는 UNICODE를 사용하여야만 한다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 고정 길이 문자 데이터 타입

3. 설명
   고정 길이 문자 데이터로, 정의할 때 지정된 길이 만큼의 바이트 또는 글자 개수 만큼을 저장.
   CHAR의 경우 데이터베이스 character set이 KO16KSC5601로 지정되어 있을 경우, CHAR(4)는 한글
   2자리 또는 영문 4글자를 저장할 수 있음.
   한편 NCHAR의 경우, NCHAR(4)는 한글 4자리를 모두 저장할 수 있음. (바이트가 아니라 지정된
   글자 만큼)

4. 특징
   지정된 길이보다 적은 길이의 문자열을 저장할 경우, empty byte가 space로 padding 됨.
   CHAR / NCHAR의 데이터 타입 코드는 96번임 (아래 그림 참조)

5. Column Length/Default
   최대 2000바이트까지 저장 가능함.
   CHAR기본 길이는 1바이트. 예를 들어 테이블 생성시 CHAR 만 지정하고 자릿수 지정을 하지 않을
   경우, CHAR(1)로 처리됨. 한편 NCHAR의 경우 기본 길이는 1글자임.

   NCHAR의 경우, national character set이 AL16UTF16일 경우, 2배 만큼의 바이트를 사용하며,
   UTF8의 경우, 3배 만큼의 바이트를 사용한다.

6. 내부저장방식
    

 

 

☞ VARCHAR2 / NVARCHAR2

 

1. 정의
   VARCHAR2 타입은, 데이터베이스의 character set 데이터를 가변 길이로 저장하고,
   NVARCHAR2 타입은 데이터베이스의 national character set 데이터를 가변길이로 저장하는데
   사용되는 데이터 타입이며, 9i 이상 버전에서는 UNICODE를 사용하여야만 한다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 가변 길이 문자 데이터 타입

3. 설명
   - 가변 길이 문자 데이터로, 정의할 때 지정된 길이 만큼의 바이트 또는 글자 개수 까지 저장가능.
   - VARCHAR2의 경우 데이터베이스 character set이 KO16KSC5601로 지정되어 있을 경우,
     VARCHAR2(4)는 한글 2자리 또는 영문 4글자를 저장할 수 있음.
   - 한편 NVARCHAR2의 경우, NVARCHAR2(4)는 한글 4자리를 모두 저장할 수 있음.
     (바이트가 아니라 지정된 글자 만큼)

4. 특징
  - 저장되는 값은, 가변 길이로, empty space가 padding 되지 않음.
  - 테이블에 대한 Full Scan시에도 작은블록을 읽어 성능상 장점이 있으며, Empty Block이
    PADDING되지 않아 정확한 비교를 하는데 유의해야 할 사항이 적다
  - 실제로 저장된 문자data는 각 문자의 ASCII CODE값만 저장되었음을 확인이 하실 수 있다.
  - VARCHAR2 / NVARCHAR2의 데이터 타입 코드는 1번임. (아래 그림 참조)

5. Column Length/Default
  - 최대 4000바이트까지 저장 가능함.
  - VARCHAR2의 경우, 최대 길이는 반드시 지정되어야 함.
  - NVARCHAR2의 경우, 기본 값은 1 글자임.
  - NCHAR의 경우, national character set이 AL16UTF16일경우, 2배 만큼의 바이트를 사용하며,
    UTF8의 경우, 3배 만큼의 바이트를 사용함.

6. 내부저장방식
    

 

7. 참고
   VARCHAR2와 NVARCHAR2의 dump결과 내부코드가 같으나, 구별은 table description으로
   column에 정의된 Data Type에 대한 확인이 가능하며, 또한 한글의 경우 저장된 byte로도 확인이
   가능하다.
   예를 들어 DB characterset이 KO16KSC5601이고 national characterset이 UTF8인 경우,
  “가”를 저장한다고 보면, varchar2 Data Type의 length는 2byte이나 nvarchar2 Data Type은
   3byte로 보인다.
   물론 DB characterset과 national characterset이 같은 UTF8인 경우엔 column에 정의된
   DataType으로만 확인이 가능합니다.

 

☞ CLOB / NCLOB

 

1. 정의
   CLOB/NCLOB은 LOB (Large Object) 데이터 타입의 일부로, 최대 4GB까지의 문자 데이터를
   저장하는데 사용된다. CLOB은 데이터베이스의 character set으로 데이터를 저장하며,
   NCLOB은 national character set으로 데이터를 저장하는데, 9i 이상 버전에서는 UNICODE를
   사용하여야만 한다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ LOB 문자 데이터 타입

3. 설명
   - 변동 길이 문자 데이터로 최대 길이를 지정하지 않음.
   - 다른 문자 데이터 타입과는 달리 SELECT, UPDATE등를 수행하기 위해서는 별도의 PL/SQL 패키지
     또는 API를 사용하여야 함. (DBMS_LOB 등)
   - CLOB / NCLOB의 경우는 INSERT는 다른 데이터타입과 같이 수행 가능.
   - 한 ROW에 여러 LOB 타입 데이터 사용 가능.

4. 특징
   - 8 까지는 테이블 내부 또는 외부에 선택적으로 저장되도록 지정할 수 있었으나,
     8i 이상 버전에서는, 테이블 외부의 별도 LOB 세그먼트에 저장됨.
   - 테이블에는, LOB Locator (20 byte)만 저장되며, 데이터가 저장된 LOB세그먼트와의 중간에
     LOB Inode(최대 16byte) 세그먼트가 존재함. (아래 그림 참조)
   - CLOB/NCLOB의 데이터 타입 코드는 112번임.

5. Column Length/Default
   최대 4 기가 바이트까지 저장 가능함.

6. 내부저장방식
    

 

7. 참고
  - SQLPLUS에서는 4000 BYTE이하인 경우 SELECT, INSERT, UPDATE, DELETE작업이 가능하며,
    PL/SQL에서는 32k까지 가능합니다. 그래서 일반적으로는 Pro*C 또는 JAVA 언어를 사용하여
    Oracle에서 제공하는 API를 이용한 프로그램을 작성한다.

  - 다른 문자 데이터 타입과는 달리 DBMS_LOB과 같은 전용 PL/SQL 패키지 및 API를 제공한다.
    한 ROW에 여러 CLOB/NCLOB Data Type을 사용할 수 있다.

  - Oracle8까지는 LOB INDEX가 TABLE 이 저장되는 곳과 동일한 내부 저장영역 (세그먼트)에 또는
    외부에 선택적으로 저장 되도록 지정할 수 있었으나, Oracle8i이상 부터는 DML보다는
    SELECT 위주로 인접한 블럭으로부터 데이터를 읽어올 수 있도록, LOB INDEX는 LOB 세그먼트가
    같이 저장된다.

  - Internal LOB은 LOB locator, LOB Inode 즉 LOB index와 data인 lob segment로 구성된다.
    CLOB/NCLOB의 내부 저장 코드는 112번 이다.

 

☞ LONG

 

1. 정의
   LONG 데이터 타입은, 하위 버전에 대한 호환성을 위해 존재하며, 역할은 CLOB/NCLOB과 유사하다.
   차이점은, 별도의 세그먼트에 데이터가 존재하는 것이 아니라 동일한 row의 다른 데이터와 함께
   저장된다는 점이다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ LONG 문자 데이터 타입

3. 설명
   - 변동 길이 문자 데이터로 최대 길이를 지정하지 않음.
   - 한 ROW에는 최대 하나의 LONG 데이터 타입만 사용가능.
   - CLOB/NCBLOC 대비 많은 제약 사항을 가짐 (순차적액세스만 허용, 사용자 정의 데이터 타입에
     사용 불가, REPLICATION 사용 불가 등)

4. 특징
   - 테이블 정의할 때 LONG 컬럼은 어느 위치에나 지정 가능하나, 오라클 데이터베이스에서는
     내부적으로 LONG 컬럼의 위치를 맨 뒤에서 저장하는 형태로 물리적으로 처리함
     (사용자에게는 직접 보이지 않음)
   - LONG 데이터 타입 코드는 8번임.

5. Column Length/Default
   최대 2 기가 바이트까지 저장 가능함.

6. 내부저장방식
    

 

7. 참고
   Block dump 결과를 보면 각 문자에 대한 ascii code값으로 저장된 값에 대한 확인이 가능하다.
   내부 저장 코드는 8번이다.
   참고로 화면에 보여지는 결과는 dump() function을 사용한 것이 아니라 , alter system command로
   block dump를 뜬 결과이다

☞ NUMBER

 

1. 정의
   NUMBER 데이터 타입은 가변 길이의 숫자 데이터를 저장하는데 사용된다. 오라클에서는 INTEGER,
   FLOAT, DOUBLE, REAL과 같은 ANSI 데이터 타입도 내부적으로는 NUMBER로 처리되나,
   10g에서 BINARY_FLOAT, BINARY_DOUBLE 데이터 타입이 추가되어, 보다 적은 공간으로
   숫자 데이터를 처리 할 수 있게 향상되었다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 숫자 데이터 타입

3. 설명
  - PRECISION과 SCALE에 의해 표현 가능한 숫자를 저장함.
  - 내부적으로는 변동 길이로 저장됨.

4. 특징
  - NUMBER 데이터 타입은 내부적으로 exponent 부분과, digit부분으로 나누어 저장함.
  - Exponent 부분은, 1 바이트로 저장되며, sign bit / offset / exponent부분으로 구성됨
  - Digit 부분은, 내부적으로는 100진수 방식으로 (base 100 digits)저장되며,
    1 바이트에 2자리까지 저장됨.
  - NUMBER의 데이터 타입 코드는 2번임.

5. Column Length/Default
  - 최대 21바이트까지 사용 가능함.
  - 표현 가능한 범위는 1.0 X 10^-130 부터 1.0 X 10^126 까지이며, precision은 최대 38자리,
    scale은 –84~127까지 지정할 수 있음.

6. 내부저장방식
   

7. 참고
   - Dump결과를 보면 NUMBER의 데이터 타입 코드는 2번이고 , length와 숫자 data가 저장된 형태를
     보여준다.
   - Number Data Type은 단순히 ASCII 또는 UNICODE로 저장하는 문자열 데이터 타입과는 달리
     Oracle의 내부알고리즘에 따라 계산하여 저장되며, 상세한 내용은 오라클 교육 센타의 별도의
     DSI강의를 통해서 접하실 수 있다.


 

☞ DATE

 

1. 정의
   DATE 데이터 타입은 날짜와 시간을 고정 길이로 표현하는데 사용된다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 날짜 데이터 타입

3. 설명
   - 세기 / 년 / 월 / 일 / 시 / 분 / 초 데이터를 저장할 수 있음.
   - 초 이하 단위 (밀리초 등)과, Timezone과 관련된 정보를 저장하지 않음.

4. 특징
   - 전체 7바이트 가운데, 첫 두 바이트는 세기와 연도를 나타내고, 다음 두 바이트는 월,
     일을 나타내며, 나머지 세 바이트는 시, 분, 초를 나타냄.
   - DATE의 데이터 타입 코드는 12번임.

5. Column Length/Default
    - 기원전 4712년 1월 1일부터, 기원후 9999년 12월31일까지 표현 가능.
    - 항상 7바이트의 고정 길이를 사용함.

6. 내부저장방식
   

 

 

7. 참고
   - 내부 저장방식을 보면 화면과 같습니다. 내부 type code는 12번이며, length는 언제나
     7 byte이다. 데이터는 표현하고자 하는 세기, 연도, 월,일,시,분,초로 구성되어 있다.
   - 각각의 BYTE의 내용은 마찬가지로 Oracle의 내부 알고리즘에 의해 계산되어 저장된다.

 

☞ TIMESTAMP

 

1. 정의
   TIMESTAMP 데이터 타입은, 특정 시점을 나타내는데 사용되며, TIMEZONE과 관련된 정보를 어떤
   방식으로 저장하는지에 따라 3가지 세부 유형으로 구분된다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 타임스탬프 데이터 타입

3. 설명
   - 세기 / 년 / 월 / 일 / 시 / 분 / 초 데이터를 저장할 수 있음.
   - 초 이하 단위를 9자리까지 저장할 수 있으며, Timezone과 관련된 정보를 선택적으로 저장할 수
     있음.
   - TIMESTAMP (TIMEZONE과 관련된 정보를 저장하지 않음)
   - TIMESTAMP WITH TIMEZONE (TIMEZONE과 관련된 정보를 저장)
   - TIMESTAMP WITH LOCAL TIMEZONE (세션의 기본 TIMEZONE값을 사용)

4. 특징
   - TIMEZONE에서 첫 7바이트는 DATETIME과 동일하며, 마지막 4바이트는 초 이하 단위 (9자리)를
     저장하는데 사용됨.
   - TIMEZONE을 명시적으로 저장하는 경우 (TIMESTAMP WITH TIMEZONE) 추가적으로 2바이트를 더
     사용하는데, 각 바이트는 TIMEZONE HOUR와 TIMEZONE MINUTE를 저장하는데 사용됨.
   - TIMESTAMP의 데이터 타입 코드는 180번임.
   - TIMESTAMP WITH TIMEZONE의 데이터 타입 코드는 181번임.
   - TIMESTAMP WITH LOCAL TIMESZONE의 데이터 타입 코드는 231번임.

5. Column Length/Default
   - 기원전 4712년 1월 1일부터, 기원후 9999년 12월 31일까지 표현 가능.
   - TIMEZONE 정보를 저장하는지 여부에 따라 필요로 하는 저장 공간이 달라짐.

6. 내부저장방식
   

 

 

7. 참고
   - TIMESTAMP의 데이터 타입 코드는 180번, TIMESTAMP WITH TIMEZONE의 데이터 타입 코드는 181번,
     TIMESTAMP WITH LOCAL TIMESZONE의 데이터 타입 코드는 231번이며, Oracle에서 내부적으로
     사용하는 알고리즘에 의해 계산되어 값이 저장된다.
8. Create 예문)
   - col_name1  TIMESTAMP(7)   --저장된 값형태 : [02/11/25 15:16:57.0000000]

                               --7자리 이므로 Fractional Second가 7자리로 표현

 

☞ INTERVAL

 

1. 정의
   INTERVAL은 TIMESTAMP간의 차이를 나타내는데 사용되는 데이터 타입으로, YEAR-MONTH INTERVAL과
   DAY-SECOND INTERVAL로 나뉘어 진다. YEAR-MONTH는 YEAR와 MONTH 필드의 차이를 나타내는 반면,
   DAY-SECOND는 DAY, HOUR, MINUTE, SECOND 필드의 차이를 나타낸다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 기간 데이터 타입

3. 설명
   - INTERVAL YEAR TO MONTH는 두 TIMESTAMP간의 차이(기간)를 ‘몇 년 몇 개월’로 나타냄.
   - INTERVAL DAY TO SECOND는 두 TIMESTAMP간의 차이(기간)를 ‘몇 일, 몇 시간 몇 분 몇 초’로
     나타냄.

4. 특징
   - INTERVAL YEAR TO MONTH는 년도의 차이를 4바이트로 저장하고, 1바이트를 월을 차이로 나타내며,
     저장되는 값이 항상 양수 형태로 저장될 수 있도록 일정 오프셋으로 더해 저장함.
   - INTERVAL DAY TO SECOND는 날짜 차이로 4바이트, 시분초의 차이로 1바이트 4바이트를 초 이하
     단위의 차이를 저장하는데 사용함.
   - INTERVAL YEAR TO MONTH의 데이터 타입 코드는 182번임.
   - INTERVAL DAY TO SECOND의 데이터 타입 코드는 183번임.

5. Column Length/Default
   - INTERVAL YEAR TO MONTH는 5바이트 고정 길이 사용
   - INTERVAL DAY TO SECOND는 11바이트 고정 길이 사용.

6. 내부저장방식
   

 

 

7. 참고
   Dump를 떠 보면 INTERVAL YEAR TO MONTH의 데이터 타입 코드는 182번이며,
   INTERVAL DAY TO SECOND는 183번이다.
8. Create 예문)
 - col_name1  INTERVAL YEAR(3) TO MONTH  --저장된 값형태 : [+010-03]

                                         --월 3자리 123개월을 YEAR와 MONTH로 환산하면 10년3개월
 - col_name2  INTERVAL DAY TO SECOND(3)  --저장된 값형태 : [+00 00:03:06.000000]

                                         --초 3자리 186초를 DAY, HOUR, MINUTE, SECOND로
                                           환산하면 3분 6초

 

☞ BLOB / BFILE

 

1. 정의
   BLOB/BFILE은 LOB (Large Object) 데이터 타입의 일부로, 최대 4GB까지의 바이너리 데이터를
   저장하는데 사용된다.
   BLOB은 바이너리 데이터를 데이터베이스 내부에 저장하며, BFILE은 바이너리 데이터를
   데이터베이스 외부인 OS 에 저장 한다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 바이너리 데이터 타입

3. 설명
   - 변동 길이 바이너리 데이터로 최대 길이를 지정하지 않음.
   - 다른 LOB 데이터 타입과 같이 INSERT, SELECT, UPDATE 등을 수행하기 위해서는 별도의
     PL/SQL 패키지 또는 API를 사용하여야 함. (DBMS_LOB 등)
   - 한 ROW에 여러 LOB 타입 데이터 사용 가능.

4. 특징
   - BLOB에 저장된 데이터는 다른 데이터 타입과 마찬가지로 트랜잭션에 참여함.
   - BFILE에 저장된 데이터는 READ-ONLY이며 DURABILITY 역시 OS에서 보장되어야 함.
   - BLOB과 BFILE의 내부 처리 구조는 완전히 다름.
   - BFILE은 최대 30바이트의 디렉토리 알리아스와, 최대 256바이트의 파일 이름 표현 가능.
   - BLOB의 데이터 타입 코드는 113번임.
   - BFILE의 데이터 타입 코드는 114번임.

5. Column Length/Default
   - BLOB 데이터는 최대 4기가 바이트까지 저장 가능함.
   - BFILE은 OS의 제약이 없다면 최대 4 기가바이트까지 저장 가능함.

6. 내부저장방식
   - BFILE 구조 예시, BLOB의 구조는 CLOB 구조와 개념적으로는 동일함.
   

 

 

7. 참고
   - BLOB Data Type의 내부 저장 방식은 CLOB Data Type과 유사하며, 저장되는 data성격만
     바이너리 데이터를 저장한다. BFILE은 최대 30바이트의 디렉토리 알리아스와,
     최대 256바이트의 파일 이름 표현이 가능하다. Dump를 떠 보면 BLOB의 데이터 타입 코드는
     113번이며, BFILE의 데이터 타입 코드는 114번이다.

 

☞ RAW / LONG RAW

 

1. 정의
   RAW 및 LONG RAW는 바이너리 이미지, 데이터를 저장하는데 사용되는 데이터 타입으로, 역 호환성을
   위해 사용된다. 현재 는 BLOB 및 BFILE 데이터타입을 사용하는 것이 권고된다.

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 바이너리 데이터 타입

3. 설명
   RAW와 LONG RAW는 바이너리 데이터를 저장하는데 사용됨.

4. 특징
   - 데이터베이스에서는, 내용에 대한 해석이나, 변환을 하지않음. 예를 들어, 내용으로 문자를
     입력 하였다고 하더라도 자동적인 character set conversion등은 수행하지 않음.
   - LOB과는 달리, ROW내 다른 데이터와 함께 저장 되므로 (in-line) row chaining이 많이 발생함.
   - RAW의 데이터 타입 코드는 23번임.
   - LONG RAW의 데이터 타입 코드는 24번임.

5. Column Length/Default
   - RAW는 최대 2000바이트까지 저장 가능.
   - LONG RAW는 최대 2기가바이트까지 저장 가능.

6. 내부저장방식
   

 

 

7. 참고
   - LOB과는 달리, ROW내 다른 데이터와 함께 저장 되므로(in-line) row chaining이 많이 발생한다.
   - Dump 결과 RAW의 데이터 타입 코드는 23번임을 알 수 있으며, LONG RAW의 데이터 타입 코드는
     24번이다.


 

☞ ROWID, UROWID

 

1. 정의
   - ROWID 및 UROWID는 테이블의 ROW에 대한 고유 식별자로, 특정 ROW의 물리적 위치를 직접
     저장하지는 않지만, 특정 행을 찾는 가장 빠른 메커니즘을 제공한다.
   -
Pseudo 칼럼으로 ROWID는 테이블 내의 한 행에 대한 논리적인 주소값을 가지는 데이터 유형으로
       오라클에서 자동으로 할당하여 생기는 Pseudo 칼럼

2. 유형
   내장 데이터 타입 ▶ 스칼라 타입 ▶ 데이터베이스 내부 처리용 데이터 타입

3. 설명
   - ROWID는 Database에 있는 각 행에 대한 고유 식별자임.
   - ROWID는 명시적으로 컬럼 값으로서 저장되지 않음.
   - ROWID는 행의 물리적 주소를 직접 부여하지는 않지만 행 위치를 지정하는 데 사용될 수 있음.
   - ROWID를 사용하면 가장 빠르게 테이블의 행을 액세스할 수 있음.
   - ROWID는 주어진 키 값의 집합을 가진 행을 지정하기 위해 인덱스에 저장됨.
   - UROWID는 오라클 데이터베이스 이외 DB 테이블의 ROWID 및 IOT (Index Organized Table)의
     ROWID를 처리할 수 있음.

4. 특징
   - ROWID는 3가지 타입이 존재함.
     o SHORT : RDBA와 ROW 정보로 구성
     o LONG : OBJECT ID와 RDBA, ROW 정보로 구성
     o UNIVERSAL
   - UNIVERSAL ROWID (UROWID)에는 다시 3가지 타입이 존재함
     o PHYSICAL : 일반 테이블 및 클러스터, 파티션, 인덱스, 인덱스 파티션 및 서브파티션에
                  대한 주소
     o LOGICAL: Index Organized Table의 주소
     o REMOTE: 오라클 이외 데이터베이스에 대한 ROWID
   - ROWID의 데이터 타입 코드는 69번이며 UROWID는 208번임.

5. Column Length/Default
   - SHORT ROWID는 6바이트 16진수 문자열로 나타내짐.
   - LONG ROWID는 10바이트 16진수 문자열로 나타내짐.
   - UNIVERSAL ROWID는 최대 3950바이트까지를 차지할 수 있음.

6. 내부저장방식
   

 

 

7. 참고
   - SHORT ROWID는 Restricted Rowid라고도 하며, Oracle7 이하와의 역 호환성을 위해 존재한다.
     4 byte의 RDBA와 2byte의 ROW 정보로 구성된다.
   - LONG rowid는 extended rowid라고도 불리며,4byte의 OBJECT ID와 4byte의 RDBA와 2byte의
     ROW 정보로 구성된다.
   - CharToRowId() , RowIdToChar()

 

◎ User Defined Data Type

☞ OBJECT TYPE

 

1. 정의
   OBJECT TYPE은 사용자가 정의한 복합 데이터 타입으로 (composite data type), 데이터 타입과
   이 데이터들을 조작하기 위한 함수 혹은 프로시져를 묶어서 사용자가 정의한 새로운 데이터
   타입이다. VARRAY, NESTED TABLE 및 REF는 OBJECT TYPE과 밀접한 관계를 가지며, OBJECT TYPE
   자체를 테이블이나 컬럼으로 사용할 수 있다.

2. 유형
   사용자 정의 데이터 타입

3. 설명
   - OBJEC TYPE은 자동차의 경우, 차종, 년식, 배기량과 같은 속성과, 전진, 후진, 정지와 같은
     행동을 지원하는데, 이러한 일반적인 객체지향 관점을 OBJECT TYPE에서 지원함.
   - OBJECT TYPE은, OBJECT TABLE 또는 특정 컬럼의 타입으로 활용할 수 있으며, VARRAY 또는
     NESTED TABLE의 구성 요소로 사용할 수 있음. ( VARRARY나 NESTED TABLE은, OBJECT TYPE
     이외에도 BUILT-IN TYPE 및, PL/SQL 변수나, 파라미터, 결과값 등으로 구성 가능함)

4. 특징
   - OBJECT TYPE은, 3가지 구성 요소로 이루어짐.
     o NAME : OBJECT TYPE에 대한 고유 식별자
     o ATTRIBUTE : BUILT-IN TYPE 또는 다른 OBJECT TYPE
     o METHOD : PL/SQL, C, JAVA와 같은 언어로 작성된 모듈
   - 사용자가 정의할 때 마다 생성되므로, 정해진 데이터 타입 코드는 없음.
   - 내부적으로는 일반 테이블 형태로 변환되어 저장되며, 최 하단 (leaf) 데이터 타입이
     BUILT-IN 데이터 타입이 될 때 까지 확장 (explode) 됨.
   - 실제 데이터는 최 하단 (leaf)의 BUILT-IN 데이터 타입으로 저장됨.

5. 적용형태1 - OBJECT TABLE
    

 

 

6. 작용형태2 - COLUMN OBJECT
    

 

 

7. 참고>
Object table을 예로 보면, 맨 끝 가지 레벨의 scalar는 (leaf-level scalar) 테이블의 컬럼에
대응합니다. 그리고 시스템에서 자동으로 생성한 2개 컬럼이 테이블에 추가된다.
SYS_NC_OID$ : 테이블의 row와 연관된 object ID
SYS_NC_OWINFO$ : 각 row의 constructor를 보여 주기 위한 pseudo column
이 pseudo column이 테이블의 저장에 공간을 차지 하지는 않으나 (아래 블럭 덤프 참조) object에
대한 상세한 정보를 얻기 위해 이 컬럼을 쿼리에 사용할 수 있다.

SQL> select sys_nc_oid$ from employees1;
SYS_NC_OID$
--------------------------------------
5DCC862136C2484CE0340800207ECAE5
SQL> select sys_nc_rowinfo$ from employees1;
SYS_NC_ROWINFO$ (EMPNO, ENAME)
--------------------------------------
EMP_TYP(1, ‘peter’)
덤프 결과
--------
col 0 : [16] 5d cc 86 21 36 c2 48 4c e0 34 08 00 20 7e ca e5 <- OID
col 1 : [ 2] c1 02 <- Empno
col 2 : [ 5] 70 65 74 65 72 <- Ename


☞ VARRAY

 

1. 정의
   VARRAY 타입은, 순서를 갖는 엘리먼트들의 배열을 저장하는데 사용된다.

2. 유형
   내장 데이터 타입 ▶ 컬랙션 타입 ▶ 순서를 갖는 배열

3. 설명
 - VARRAY 컬럼 자체는 스칼라 타입의 컬럼처럼, 단일 값처럼 간주 되며, DML에 의해 조작할 수 있음.
 - 각 엘리먼트에는 인덱스가 있으며 배열상의 순서를 나타냄.
 - UPPER BOUND는 정의할 때 지정되며 한번 정의된 후에는 변경할 수 없음.
 - 엘리먼트들은 배열의 맨 끝부터 삭제할 수 있음.

4. 특징
   - 4000바이트 미만일 경우, IN-LINE 형태로 저장되며, 내부적인 구현은 RAW 타입에 저장하는
     방식을 사용함.
   - 4000바이트 이상일 경우, OUT-OF-LINE 형태로 저장되며 내부적으로는 BLOB 형태로 저장하는
     방식을 사용함.

5. Column Length/Default
   스칼라 타입과 같이 정해진 크기나, 기본 값은 없음.

6. 내부저장방식
   

 

7. 참고>

Create or replace type person_typ as object
(a number, b varchar2(10));
Create or replace type v_person_typ as varray(5);
Create table person
(col1 number,
col2 varchar2(10).
col3 v_person_typ)
varry col3 store as lob person_tab;
Oracle Data Types
이 덤프는, person_typ에 대한 VARRAY(5)에 대한 내용으로, person_typ은 두개 attribute로 정의
되어 있다: a NUMBER, b VARCHAR2(10)
col 3 : [32] 88 01 20 01 01 00 02
0b 84 01 0b 02 c1 02 04 70 61 75 6c
0c 84 01 0c 02 c1 03 05 70 65 74 65 72

Byte 1 – 6 VARRAY overhead (byte 3(20) -> 전체 VARRAY column(32 bytes))
Byte 7 (02) VARRAY의 element의 갯수(2 person_typ elements)
Byte 8 (0b) 첫번째 array element의 길이 (11 bytes)
Byte 9 – 11 Object overhead(84 01 0b)
Byte 12 – 14 Length (02) + data (c1,02) -> 1
Byte 15 – 19 Length (04) + data (70,61,75,6c) -> paul
Byte 20 (0c) 두번째 element의 길이 (12 bytes)
Byte 21 – 23 Object overhead(84 01 0c)
Byte 24 – 26 Length (02) + data (c1,03) -> 2
Byte 27 – 32 Length (05) + data (70,65,74,65,72) -> peter


☞ NESTED TABLE

 

1. 정의
   NESTED TABLE 데이터 타입은, 테이블을 하나의 컬럼에 저장할 때 사용된다.

2. 유형
   내장 데이터 타입 ▶ 컬랙션 타입 ▶ 중첩 테이블

3. 설명
   - NESTED TABLE순서를 지정하지 않은 레코드나 행의 집합임.
   - NESTED TABLE의 행은 동일한 구조를 가짐.
   - NESTED TABLE 의 행은 상위 테이블에 있는 해당 행의 포인터와 함께 상위 테이블과는 별도로
     저장됨.
   - NESTED TABLE 의 저장 영역 특성은 Database 관리자가 정의할 수 있음.
   - NESTED TABLE 에 대해 미리 정의된 최대 크기는 없음.

4. 특징
   - NESTED TABLE 을 STORE TABLE이라고 하며, 원래 테이블과는 별도 영역에 저장됨.
   - STORE TABLE 생성시 STORAGE 절을 지정할 수 있음.
   - STORE TABLE의 특정 ROW는 직접 액세스 할 수없으며,PARENT TABLE을 활용해 액세스 하여야만 함.

5. Column Length/Default
   - 스칼라 타입과 같이 정해진 크기나, 기본 값은 없음.
   - STORE TABLE에는, 시스템에서 자동적으로 생성하는 컬럼이 추가됨.(SYS_NC_ROWINFO$, OBJECT_ID)
   - PARENT TABLE 입장에서는, RAW(16) 형태로 저장함.

6. 내부저장방식
   

 

7. 참고 >

store table 내의 row는 직접 엑세스 불가능합니다. 다음은 그 예입니다.
SQL> create table storage (
2 salesman number (4),
3 elem_id number (6),
4 ordered date,
5 items elements_tab)
6 nested table items store as items_tab;
Table created

SQL> insert into storage
2 values(100,123456,SYSDATE,
3 ELEMENTS_TAB (ELEMENTS(175692,120.12),
4 ELEMENTS(167295,130.45),
5 ELEMENTS(127569,99.99)));
1 row created
SQL> select * from items_tab;
select * from items_tab
*
ERROR at line 1 :
ORA-22812: cannot reference nested table column’s storage table


☞ REF

 

1. 정의
   REF (“reference”의 줄임)은, 데이터베이스 테이블에 저장된 object에 대한 참조이며 object
   그 자체는 아니다. REF 타입은, relational column으로 사용될 수 있으며, object type을
   구성하는 데이터 타입으로도 사용될 수 있다.

2. 유형
   내장 데이터 타입 ▶참조 타입 ▶ 참조 타입

3. 설명
   - OBJECT TABLE에 저장된 각각의 객체는 OID (Object ID)를 갖고 있음.
   - OID는 마치 관계형 데이터베이스에서 처럼 다른 객체에서 참조할 수 있으며, 참조할 때
   - 사용하는 데이터 타입이 REF임.

4. 특징
   - 참조 대상 객체가 삭제되었을 경우, REF는 dangling 상태가 되었다고 하며, OBJECT TABLE에
     대해 ANALYZE를 시켜 해결 할 수 있음.
   - REF는 OID 뿐만 아니라, 메타 정보와 참조되는 ROW의 ROWID 정보를 포함함.
   - REF 데이터 타입의 코드는 111번임.

5. Column Length/Default
   - 표준 REF 타입의 크기는, 42바이트임. (참조되는 객체의 OID 16 바이트, 객체를 포함하는
     테이블의 OID 16바이트, ROWID 힌트 10 바이트로 구성됨)
   - 그러나, PRIMARY KEY에 기반을 둔 OID에 대한 REF 컬럼은, 42 바이트가 아닐 수 있음.

6. 내부저장방식
   

 

7. 참고>
 예를 들어 department table이 두개 컬럼으로 구성되어 있을 경우 : dname(VARCHAR2),
 mgr(REF EMP_TYP) 테이블에 한 개 row를 추가한 후에는 다음과 같은 저장 특성을 볼 수 있다.

Oracle Data Types
SQL> select dump (mgr, 16) from department;
DUMP(MGR,16)
--------------------------------------
Typ=111 Len=36: 0,22,2,8,5d,cc,86,21,36,c2,48,4c,e0,34,8
0,20,7e,ca,e5,5d,cc,86,21,36,c1,48,4c,e0,34,8,0,20,7e,ca,e5
SQL> select mgr from department;
MGR
------------------------------------00002202085DCC862136C2484CE0340800207
ECAE55DCC862136C1484CE0340800207ECAE5
SQL> selec deref(mgr) from department;
DEREF(MGR) (EMPNO,ENAME)
------------------------------------
EMP_TYP(1,’peter’)
REF 데이터 타입의 코드는 111번으로 확인이 가능합니다.

 

◎ 데이터 타입의 선정 지침

문자열 관련 일반 지침

 

1. 정의
   
문자 데이터와 관련된 데이터 타입 선정시, (1) 소요 공간, (2) 유니코드, (3) 데이터 내용, (4) 비

교 방식 등을 고려해야 한다.

2. 형태
   

3. 참고
   문자 데이터와 관련된 데이터 타입 선정 시에는 (1) 소요 공간, (2) 유니코드, (3) 데이터 내용,
  (4) 비교 방식 등을 고려해야 합니다.
   소요공간이란 저장되어야 하는 user data의 size를 고려하여 각 문자 Data Type별 최대 size를 알고
   선정하는 것을 의미한다.
   Oracle9i기준 Char Data Type은 최대 2KB저장이 가능하며, VARCHAR2는 4KB까지,
   Long Data Type은 2GB까지, clob Data Type은 4GB까지 가능하다.
   기본 database characterset에 해당하는 값이 아닌, 유니코드 national characterset 형태로
   데이터를 저장할 필요가 있는 경우에는 NCHAR, NVARCHAR2, NCLOB 데이터 타입에 대한 고려가 필요.

   문자 데이터의 내용에 따라서 저장되는 문자 데이터가 고정길이이면서 한자리거나 짧은 경우엔
   CHAR Data Type을 고려 할 필요가 있다.
   그러나 가변길이인 경우엔 char에 비해 varchar2 Data Type을 사용하시는 것이 자원의 낭비를
   줄이고, 테이블에 대한 full scan시 읽어야 할 블럭 갯수를 줄여 성능저하를 막을 수 있다.
   비교방식을 고려해보면, Char Data Type은 비교시 실제 데이터만 가지고 비교하는 것이 아니라
   padding된 blank를 넣어야 올바른 비교가 되므로 , 사용자 어플리케이션 작성시 유의해야 한다.

   테이블 설계 시, NULL column들이 많은 Column들을 물리적으로 뒤로 두는 것이 Space절약을
   위해 바람직하다. 또한 초기에 Null이었다가 Update시 Row길이가 늘어난다면 PCTFREE를 크게
   주어야 한다.


☞ 숫자, 날짜 관련 일반 지침

 

1. 정의
   오라클 9i 까지 모든 숫자는 내부적으로 NUMBER 타입에 저장된다. 날짜를 나타내는데는,
   DATE, TIMESTAMP를 사용할 수 있으며 경우에 따라 문자열 데이터 타입을 사용하는 경우도 있다.

2. 숫자 관련 일반 지침
   1. 반올림과 관련된 사항을 고려.
      – 예를 들어 유효 자릿수가 소수점 두자리 숫자에 대한 연산을 할 경우, 소수점 두자리
        숫자끼리 연산을 해서 결과값 역시 소수점 두자리 값으로 계산되도록 할 것.
      – 나눗셈 연산시, (예 1/3) 유효 자릿수를 지정하지 않을 경우, 소수점 자릿수를 많이
        소요하게 되므로, 자릿수 지정에 유의.Row-Chaining 유발.

3. 날짜 관련 일반 지침
 1. 초 이하 단위에 대한 저장이 필요할 경우, TIMESTAMP를 고려.
 2. 날짜 관련 연산이 빈번할 경우, DATE또는 TIMESTAMP를 고려할 것.
 3. 년월일에 대한 LIKE 나 = 과 같은 조건을 자주 사용할 경우, CHAR, VARCHAR2 고려. 단 유효한
    날짜인지 여부는 사용자 애플리케이션에서 확인 하여야 함.

4. 참고
   10g에서는 IEEE 754 형태의 BINARY_FLOAT과, BINARY_DOUBLE이 추가 되었음.


☞ LONG/LONG RAW 제약 사항

 

1. 정의
   크기가 큰 데이터를 저장하는데 LONG 또는 LONG RAW에는 많은 제약 사항이 따르므로, 새로운
   테이블을 설계할 경우, LOB을 우선 고려하고, 기존의 LONG 또는 LONG RAW또한 LOB으로의
   전환이 고려될 필요 가 있다.

2. LONG, LONG RAW의 제약 사항
   1. 테이블의 한 ROW에 여러 LOB 컬럼이 있을 수 있는 반면, LONG 또는 LONG RAW
      컬럼은 한 ROW에 하나 밖에 사용될 수 없음.
   2. LONG 또는 LONG RAW는 값 전체가 테이블 내에 저장이 되는 반면, LOB는 테이블 컬럼
      내에 LOB locator만 저장이됨 BLOB과 CLOB (내부 LOB) 데이터는 별도의 테이블스페이스에
      저장시킬 수 있으며, BFILE (외부 LOB) 데이터는 데이터베이스 외부의 별도 파일로 존재함.
   3. LOB 데이터는 4GB까지 저장이 가능하며, BFILE 컬럼이 가리키는 파일 크기는 4GB 이내에서
      OS에서 지원하는 최대 크기까지 가능함.. 한편 LONG이나 LONG RAW 데이터 타입에서는 2GB
      까지만 지원이 가능함.
   4. LOB는 랜덤 액세스가 가능한 반면, LONG 타입에 저장된 데이터는 처음부터 원하는 지점까지
      순차적으로 읽어 처리하여야 한다.
   5. LOB 데이터에 대한 replication을 local 또는 remote에서 수행할 수 있는 반면,
      LONG / LONG RAW 컬럼 데이터는 replication이 되지 않음.
   6. LONG 컬럼의 데이터는 TO_LOB()라는 함수를 사용하여 LOB로 변환 가능하지만,
      LOB를 LONG / LONG RAW로 변환 하는 기능은 제공되지 않음.
   7. LOB는 사용자 정의 데이터 타입 (userdefined Data Type)의 속성 (attribute) 으로
      사용될 수 있는 반면, LONG이나 LONG RAW는 속성으로 사용될 수 없음.


☞ BLOB/CLOB 제약 사항

 

1. 정의
   한편, LOB 또한 제약 사항이 있으므로, 데이터 타입 선정 시 장단점 비교가 필요하다.

2. LOB의 제약 사항
   1. LOB는 클러스터 테이블에서는 사용할 수 없으며, 따라서 클러스터 키로도 사용할 수 없음.
   2. LOB 컬럼은 GROUP BY, ORDER BY, AGGREGATE function, SELECT DISTINCT 등에 사용할 수
      없으며 JOIN 에도 사용할 수 없음. 그러나 LOB 컬럼을 사용하는 테이블에 대한 UNION ALL은
      지원됨. UNION MINUS나 SELECT DISTINCT는 OBJECT TYPE의 MAP이나 ORDER 함수가 정의된
      경우 사용할 수 있음.
   3. LOB 컬럼은 ANALYZE ... COMPUTE/ESTIMATE STATISTICS 명령 사용 시에도 analyze 되지 않음.
   4. LOB는 VARRAY에는 사용할 수 없음.
   5. NCLOB은 OBJECT TYPE의 속성(attribute)으로 사용될 수 없으나, 메소드 정의를하는 데는
      NCLOB 파라미터를 사용할 수 있음.

참고자료 : 한국 오라클 (주) 제품지원실 작성문서

Posted by 농부지기
,

[ Oracle 기본문법 - PARAMETER LISTS ]

 

1. PARAMETER LISTS

O7_DICTIONARY_ACCESSIBILITY

 딕셔너리에 접근가능한 PRIVILEGE 설정

ALLOW_PARTIAL_SN_RESULTS

 PARALLEL SERVER PARAMETER

ALWAYS_ANTI_JOIN

 ANTI-JOIN 질의에 대하여 JOIN 방법을 설정

ALWAYS_SEMI_JOIN

 SEMI-JOIN 질의에 대하여 JOIN 방법을 설정

AQ_TM_PROCESSES

 QUE MONITOR 생성여부

ARCH_IO_SLAVES

 아카이브 SLAVE 프로세스의 숫자를 설정

AUDIT_FILE_DEST

 AUDIT FILE 의 위치설정

AUDIT_TRAIL

 AUDIT TRAIL 의 수행여부

B_TREE_BITMAP_PLANS

 BITMAP PLAN 의 사용여부를 COST BASE

BACKGROUND_CORE_DUMP

 SGA 정보의 덤프여부 설정

BACKGROUND_DUMP_DEST

 SGA 정보의 덤프화일 설정

BACKUP_DISK_IO_SLAVES

 RECOVERY MANAGER SLAVE 프로세스의 숫자를 설정

BACKUP_TAPE_IO_SLAVES

 RECOVERY MANAGER SLAVE 프로세스의 숫자를 설정(tape)

BITMAP_MERGE_AREA_SIZE

 BITMAP MERGE AREA 크기설정

BLANK_TRIMMING

 SOURCE 데이터길이가 DESTINATION 길이보다 큰 경우에 대한 허용여부 설정

BUFFER_POOL_KEEP

 버퍼CACHE 내용의 유지여부설정

BUFFER_POOL_RECYCLE

 유지될 버퍼CACHE 의 크기를 설정

CACHE_SIZE_THRESHOLD

 CACHE PARTITION 의 최대값(SINGLE/MULTI INSTANCES)

CLEANUP_ROLLBACK_ENTRIES

 록백작업시 단번에 처리되는 REDO RECORD 의 갯수

CLOSE_CACHED_OPEN_CURSORS

 자주 사용되는 CURSOR 의 지속적인(CACHED OPEN CURSOR) OPEN 여부

COMMIT_POINT_STRENGTH

 분산 TRANSACTION에서 COMMIT POINT를 설정

COMPATIBLE

 이전버젼에 대한 호환성

COMPATIBLE_NO_RECOVERY

 이전버젼의 RECOVERY 호환성 여부를 설정

COMPLEX_VIEW_MERGING

 복잡한 VIEW / SUBQUERY 에 대한 MERGE JOIN 사용여부

CONTROL_FILE_RECORD_KEEP_TIME

 REUSE 이전에 CONTROL FILE RECORD 의 최소유지기간()

CONTROL_FILES

 CONTROL FILE 의 명칭을 기술

CORE_DUMP_DEST

 CONTROL FILE 의 위치를 기술

CPU_COUNT

 오라클이 사용할 수 있는 CPU 갯수

CREATE_BITMAP_AREA_SIZE

 BITMAP INJDEX 생성에 사용되는 MEMORY 크기를 설정

CURSOR_SPACE_FOR_TIME

 SHARED POOL 공간에서 SHARED SQL AREA의 유지여부

DB_BLOCK_BUFFERS

 BUFFER CACHE 내에서 사용가능한 DATABASE BUFFER 의 갯수

DB_BLOCK_CHECKPOINT_BATCH

 DBWR PROCESS가 작동하기위한 DB BUFFER 갯수

DB_BLOCK_CHECKSUM

 CHECKSUM 사용여부

DB_BLOCK_LRU_EXTENDED_STATISTICS

 DB_BLOCK_BUFFER에 대하여 통계정보로부터의 확장여부

DB_BLOCK_LRU_LATCHES

 LATCH 갯숫설정 ( CPU갯수/2 - CPU갯수)

DB_BLOCK_LRU_STATISTICS

 통계정보의 사용(COMPILE) 여부

DB_BLOCK_MAX_DIRTY_TARGET

 DIRTY 버퍼의 갯수설정

DB_BLOCK_SIZE

 ORACLE DATABASE BUFFER 의 크기를 설정

DB_DOMAIN

 DOMAIN 설정

DB_FILES

 DBMS OPEN 가능한 최대 FILE 갯수

DB_FILE_DIRECT_IO_COUNT

 I/O OPERATION 작업시의 블록갯수

DB_FILE_MULTIBLOCK_READ_COUNT

 SEQUENTIAL READ에 적용되는 블록갯수의 최대값

DB_FILE_NAME_CONVERT

 STANDARD DATABASE FILE명의 변경

DB_FILE_SIMULTANEOUS_WRITES

 동시에 쓰기가 가능한 화일갯수

DB_NAME

 DATABASE

DB_WRITER_PROCESSES

 DBWR 프로세스 갯수의 초기설정값

DBLINK_ENCRYPT_LOGIN

 DB LINK를 통한 연결시 암호화된 PASSWROD 사용여부 설정

DBWR_IO_SLAVES

 DBWR SLAVE 프로세스의 갯수

DELAYED_LOGGING_BLOCK_CLEANOUTS

 LOGGING BLOCK 말소처리 여부

DISCRETE_TRANSACTIONS_ENABLED

 롤백 메커니즘의 설정

DISK_ASYNCH_IO

 데이타화일/컨트롤화일/로그화일의 ASYNC I/O 적용여부

DISTRIBUTED_LOCK_TIMEOUT

 분산 처리에서 LOCK WAIT TIME OUT 시간의 설정

DISTRIBUTED_RECOVERY_CONNECTION_HOLD_TIME

 분산처리(DISTRIBUTED TRANSACTION)실패시 REMOTE CONNECTION이 유지되는 시간의 설정

DISTRIBUTED_TRANSACTIONS

 동시에 처리가능한 분산처리 최대갯수를 설정

DML_LOCKS

 단일테이블에 대한 DML LOCK 의 최대갯수

ENQUEUE_RESOURCES

 LOCK MANAGER에 의하여 동시에 LOCK처리가 가능한 RES0URCE의 갯수

EVENT

 시스템 디버그에 사용

FAST_FULL_SCAN_ENABLED

 FAST FULL SCAN의 사용여부

FIXED_DATE

 SYSDATE 대신 사용될 날자를 고정시킴

FREEZE_DB_FOR_FAST_INSTANCE_RECOVERY

 ORACLE INSTANCE RECOVERY발생시에 전체 오라클DB의 동결

GC_DEFER_TIME

 SERVER WAIT 시간의 설정

GC_FILES_TO_LOCK

 PCM LOCK 의 데이터화일에 대한 MAPPINIG CONTROL

GC_LATCHES

 개개의 LCK PROCESS에 대한 LOCK ELEMENT 갯수

GC_LCK_PROCS

 백그라운드 LCK 프로세스의 갯수

GC_RELEASABLE_LOCKS

 LOCK RELEASE를 위한 SPACE ALLICATE SIZE 설정

GC_ROLLBACK_LOCKS

 분산환경에서 ROLLBACK작업이 가능한 갯수

GLOBAL_NAMES

 접속할 DB명과 DB LINK의 명칭이 동일한지의 여부를 설정

HASH_AREA_SIZE

 해쉬조인에 사용될 MEMORY최대값

HASH_JOIN_ENABLED

 옵티마이저가 해쉬조인을 사용할지의 여부

HASH_MULTIBLOCK_IO_COUNT

 해쉬조인시 읽을 블럭갯수

HI_SHARED_MEMORY_ADDRESS

 RUNTIME SGA메모리의 시작주소

IFILE

 파라메터화일내에 기술된 다른 파라메터화일의 명칭을 기술

INSTANCE_GROUPS

 OPS에서 INSTANCE에 대한 GROUP 명칭 부여

INSTANCE_NUMBER

 DBMS EXTENT 관리에 사용됨.

JOB_QUEUE_INTERVAL

 SNPs BACKGROUND PROCESS 들 사이에서의 INTERVAL

JOB_QUEUE_PROCESSES

 INSTANCE 에 대한 SNPs 갯수설정

LARGE_POOL_MIN_ALLOC

 LARGE POOL 에 대한 MINIMUM ALLOCATION SIZE

LARGE_POOL_SIZE

 LARGE POOL ALLOCLTION HEAP의 크기를 설정

LGWR_IO_SLAVES

 LGWR SLAVE PROCESS의 갯수

LICENSE_MAX_SESSIONS

 동시에 발생하는 사용자 세션의 최대허용갯수

LICENSE_MAX_USERS

 최대 사용자수

LICENSE_SESSIONS_WARNING

 동시에 발생하는 사용자 세션에 대한 WARNING LIMIT

LM_LOCKS

 LOCK MANAGER 가 생성하는 LOCK 갯수

LM_PROCS

 프로세스 파라메터와 INSTANCE의 최대값의 합

LM_RESS

 LOCK MANAGER 에 의하여 LOCK 가능한 RESOURCE 갯수

LOCAL_LISTENER

 리스너 파라메터

LOCK_NAME_SPACE

 DLM(DISTRIBUTED LOCK MANAGER)에 의하여 생성될 LOCK NAME 의 장소

LOCK_SGA

 전체 SGA에 대한 LOCK 가능여부

LOCK_SGA_AREAS

 SGA요소에 대한 LOCK 에 사용

LOG_ARCHIVE_BUFFER_SIZE

 REDO LOG BLOCK ARCHIVE BUFFER크기

LOG_ARCHIVE_BUFFERS

 ARCHIVE 에 할당될 버퍼갯수

LOG_ARCHIVE_DEST

 ARCHIVE LOG 파일의 저장위치

LOG_ARCHIVE_DUPLEX_DEST

 두 번째의 ARCHIVE LOG의 저장위치

LOG_ARCHIVE_FORMAT

 ARCHIVE LOG화일명칭의 FORMAT

LOG_ARCHIVE_MIN_SUCCEED_DEST

 LOG ARCHIVE DEST 위치들중에서 최소한 성공하여야  할 갯수

LOG_ARCHIVE_START

 ARCHIVELOGMODE 사용(시작)여부

LOG_BLOCK_CHECKSUM

 LOG BLOCK CHECKSUM부여 여부

LOG_BUFFER

 REDOLOG 화일의 BUFFERING 에 사용될 메모리크기(BYTE)

LOG_CHECKPOINT_INTERVAL

 CHECKPOINT를 발생시킬 REDOLOG BLOCK 갯수를 설정

LOG_CHECKPOINT_TIMEOUT

 CHECKPOINT를 발생시킬 시간()을 설정

LOG_CHECKPOINTS_TO_ALERT

 CHECKPOINT에 의하여 FILE 이 바뀔 경우 LOG처리

LOG_FILE_NAME_CONVERT

 STANBY DATABASE LOGFILE 명칭의 변경

LOG_FILES

 LOG GROUP 의 최대갯수

LOG_SIMULTANEOUS_COPIES

 LOG ENTRIES에 동시에 쓰기가능한 최대 REDO BUFFER 갯수

LOG_SMALL_ENTRY_MAX_SIZE

 LOG_SMALL_ENTRY_MAX_SIZE specifies the size in bytes of the largest copy to the log buffers that can occur under the redo allocation latch without obtaining the redo buffer copy latch.  If the redo entry is copied on the redo allocation latch, the user process releases the latch after the copy. If the redo entry is larger than this parameter, the user process releases the latch after allocating space in the buffer and getting a redo copy latch.(번역하신분 매일부탁합니다.)

MAX_COMMIT_PROPAGATION_DELAY

 scn instance LGWR process에 의하여 refresh 되기 전까지 sga에 남아있는 최대시간

MAX_DUMP_FILE_SIZE

 trace file 의 최대크기

MAX_ENABLED_ROLES

 ROLE 의 최대갯수

MAX_ROLLBACK_SEGMENTS

 SGA CACHE 가능한 ROLLBACK SEGMENT 의 최대크기

MAX_TRANSACTION_BRANCHES

 DISTRIBUTED TRANSACTION 환경에서 BRANCH의 최대갯수

MTS_DISPATCHERS

 MTS SERVER에서 DISPATCHER 의 초기갯수

MTS_LISTENER_ADDRESS

 LISTNER PROCESS 환경기술

MTS_MAX_DISPATCHERS

 MTS SERVER에서 DISPATCHER 의 최대갯수

MTS_MAX_SERVERS

 MTS SERVER에서 SHARED SERVER의 초기갯수

MTS_MULTIPLE_LISTENERS

 LOCAL_LISTENERS 파라메터를 사용하며 현재 사용되지 않음

MTS_RATE_LOG_SIZE

 MTS 통계계산을 위한 SAMPLE SIZE

MTS_RATE_SCALE

 DISPATCHER RATE 리포팅을 위한 SCALE 지정

MTS_SERVERS

 START UP에 생성되는 SERVER PROCESS 갯수

MTS_SERVICE

 SERVICE NAME

NLS_CALENDAR

 ORACLE 이 사용하는 CALANDER SYSTEM 명칭

NLS_CURRENCY

 통화 SYMBOL

NLS_DATE_FORMAT

 일자형식

NLS_DATE_LANGUAGE

 날짜 기술에 사용될 언어정의

NLS_ISO_CURRENCY

 국제통화 표시

NLS_LANGUAGE

 DEFAULT DATABASE LANGUAGE

NLS_NUMERIC_CHARACTERS

 일정한 숫자단위 단위에 대한 구분자(,백만,...)

NLS_SORT

 SORT 방식

NLS_TERRITORY

 영토,국가설정

OBJECT_CACHE_MAX_SIZE_PERCENT

 최적 CACHE SIZE 의 증가율

OBJECT_CACHE_OPTIMAL_SIZE

 최적 CACHE SIZE

OGMS_HOME

 GMS key file PATHNAME

OPEN_CURSORS

 OPEN CURSOR의 최대갯수

OPEN_LINKS

 한 SESSION에서 CONCURRENT REMOTE CONNECTION의 최대갯수

OPEN_LINKS_PER_INSTANCE

 이동가능한(MIGRATABLE) OPEN CONNECTION 의 최대갯수

OPS_ADMIN_GROUP

 GV$에서 질의에 대하여 출력되는 INSTANCE GROUP 명칭

OPTIMIZER_FEATURES_ENABLE

 OPTIMIZER  의하여 INIT.ORA의 내용변경 가능여부(8.x 이상)

OPTIMIZER_MODE

 OPTIMIZER 방식설정

OPTIMIZER_PERCENT_PARALLEL

 PARALLEL AMOUNT 설정(0:SERIAL PLAN, N: PARALLEL PLAN)

OPTIMIZER_SEARCH_LIMIT

 OPTIMIZER 의 탐색한도

ORACLE_TRACE_COLLECTION_NAME

 TRACE FILE (.CDF, .DAT)

ORACLE_TRACE_COLLECTION_PATH

 TRACE FILE 의 경로명

ORACLE_TRACE_COLLECTION_SIZE

 TRACE FILE 의 최대크기

ORACLE_TRACE_ENABLE

 ORACLE TRACE 사용여부

ORACLE_TRACE_FACILITY_NAME

 FDF화일 명칭

ORACLE_TRACE_FACILITY_PATH

 FDF화일 경로

OS_AUTHENT_PREFIX

 CONNECT OSUSER/PASS를 밝힘.

OS_ROLES

 OS에 의한 권한통제

PARALLEL_ADAPTIVE_MULTI_USER

 MULTI USER PARALLEL QUERY 환경에서 ADAPTIVE ALGORISM사용여부

PARALLEL_BROADCAST_ENABLED

 대량의 결과를 가져오는 쿼리에 대하여 BROADCAST OPTION 사용

PARALLEL_DEFAULT_MAX_INSTANCES

 PQ(PARALLEL QUERY) 에서의 DEFAULT INSTANCE갯수

PARALLEL_EXECUTION_MESSAGE_SIZE

 PQ사용시 메시지크기

PARALLEL_INSTANCE_GROUP

 PARALLEL SLAVE PROCESS 생성이 가능한 INSTANCE GROUP

PARALLEL_MAX_SERVERS

 PQ에서 SLAVE의 최대갯수

PARALLEL_MIN_MESSAGE_POOL

 paralle 실행시 메시지처리를 위한 shared pool 에 할당될 최소 memory size

PARALLEL_MIN_PERCENT

 PQ에 의하여 요청되는 THREAD의 최소 비율(50%, 30  요청시 15)

PARALLEL_MIN_SERVERS

 INSTANCE 에 대한 QUERY SERVER PROCESS 의 최소갯수

PARALLEL_SERVER

 PARALLEL SERVER 사용여부

PARALLEL_SERVER_IDLE_TIME

 PARALLE OPERATIN 종료후 의IDLE TIME 시간()

PARALLEL_TRANSACTION_RESOURCE_TIMEOUT

 RESOURCE WAIT 발생시 지체되는 최대시간

PARTITION_VIEW_ENABLED

 PATITION VIEW 접근시 불필요한 테이블에 대한 접근을 하지않게함.

PLSQL_V2_COMPATIBILITY

 버젼 호환성

PRE_PAGE_SGA

 This parameter touches all the SGA pages, causing them to be brought into memory.(번역하신분 매일부탁합니다.)

PROCESSES

 동시에 oracle 에 접속하는 os user 의 최대값

PUSH_JOIN_PREDICATE

 [COST]PUSH_JOIN_PREDICATE 최적화 방식의 도입여부

READ_ONLY_OPEN_DELAYED

 DATABASE OPEN 이전에 READ ONLY TABLESPACE 에 대한 접근여부

RECOVERY_PARALLELISM

 RECOVERY PROCESS  의 갯수

REDUCE_ALARM

 REDUCE_ALARM is an initialization parameter.

REMOTE_DEPENDENCIES_MODE

 원격DB stored procedure 사용방법

REMOTE_LOGIN_PASSWORDFILE

 패스워드 파일점검여부와 다수의 db에 의한 공유여부

REMOTE_OS_AUTHENT

 OS_AUTHENT_PREFIX에 의한 CLIENT 확인여부

REMOTE_OS_ROLES

 REMOTE_OS_ROLES to TRUE allows operating system roles for remote clients.

REPLICATION_DEPENDENCY_TRACKING

 REPLICATION SERVER의 의존성

RESOURCE_LIMIT

 DATABASE PROFILE 에 설정되어 있는 RESOURCE LIMIT 의 변경가능성

ROLLBACK_SEGMENTS

 ROLLBACK SEGMENT 명칭

ROW_CACHE_CURSORS

 DD로부터 SELECT 되는 행들에 대하여 DCM에 의하여 사용되는 반복적인 CACHED 커서의 최대갯수

ROW_LOCKING

 UPDATE시에 ROW LOCK 여부

SEQUENCE_CACHE_ENTRIES

 사용되지 않음

SEQUENCE_CACHE_HASH_BUCKETS

 사용되지 않음. SGA에 즉시 접근가능한 CACHED SEQUENCE의 갯수

SERIAL _REUSE

 SQL문의 유형에 의하여 연속적으로 재사용가능한 메모리 특성의 사용여부. CURSOR_SPACE_FOR_TIME=TRUE 인 경우 이 파라메터는 DISABLE값으로 인식된다.

SESSION_CACHED_CURSORS

 CACHE 되는 SESSION CURSOR 갯수

SESSION_MAX_OPEN_FILES

 SESSION에서 OPEN 가능한 BFILE의 최대갯수

SESSIONS

 USER,SYSTEM  SESSION의 총 갯수

SHADOW_CORE_DUMP

 SGA CORE DUMP에 포함시킬지의 여부

SHARED_MEMORY_ADDRESS

 시작시에 SGA의 시작 메모리 어드레스

SHARED_POOL_RESERVED_MIN_ALLOC

 RESERVED MEMOYRY ALLOCATION를 통제

SHARED_POOL_RESERVED_SIZE

 예비 공유 POOL의 사이즈 정의

SHARED_POOL_SIZE

 공유 POOL의 사이즈 정의

SORT_AREA_RETAINED_SIZE

 SORT 작업이 종료된후 UGA(USER GLOBAL AREA)가 유지되는 최대 바이트.

SORT_AREA_SIZE

 PGA 메모리  내에서 SORT  에 사용될 MEMORY 의 크기

SORT_DIRECT_WRITES

 디스크상에서의 중간소트여부

SORT_READ_FAC

 TIME TO READ SINGLE DB BLOCK/BLOCK TRANSFER RATE

SORT_SPACEMAP_SIZE

 SORT SPACE MAP의 크기(BYTE)

SORT_WRITE_BUFFER_SIZE

 SORT I/O BUFFER 의 크기

SORT_WRITE_BUFFERS

 SORT BUFFER의 갯수

SPIN_COUNT

 A process continues to request a latch until it obtains one. If the number of requests reaches SPIN_COUNT, the process fails to acquire the latch, sleeps, then tries to acquire the latch again. Because a latch is a low-level lock, a process does not hold it long. It is less expensive to use CPU time by spinning a process than it is to make a process sleep.(번역하신분 매일부탁합니다.)

SQL_TRACE

 TRACE 수행여부

SQL92_SECURITY

 UPDATE/DELETE작업 수행시에 TABLE LEVEL SELECT 권한부여여부

STAR_TRANSFORMATION_ENABLED

 STAR TRANSFORMAIN 여부(스타쿼리/COST BASE)

TAPE_ASYNCH_IO

 TAPE DEVICE 에 대한 기술

TEXT_ENABLE

 CONTEXT OPETION 사용여부

TEMPORARY_TABLE_LOCKS

 TEMPORY SEGMENT SPACE 에 생성 가능한 TEMPORY TABLE 갯수

THREAD

 REDO THREAD 의 갯수

TIMED_OS_STATISTICS

 OS 통계자료의 획득

TIMED_STATISTICS

 통계자료의 생성

TRANSACTION_AUDITING

 REDO RECORD의 생성 및 AUDIT 여부

TRANSACTIONS

 동시적인 TRANSACTION의 최대갯수

TRANSACTIONS_PER_ROLLBACK_SEGMENT

 개별적인 ROLLBACK SEGMENT 에 허용가능한 동시적인 TRANSACTION 의 갯수

USE_INDIRECT_DATA_BUFFERS

 EXTENDED BUFFER CACHE의 사용여부(32BIT, 4GIGA이상의 기종에서만.)

USE_ISM

 SHARED PAGE TABLE 의 사용

USER_DUMP_DEST

 DEBUGGING TRACE FILE 의 물리적인 경로

UTL_FILE_DIR

 PL/SQL 에서의 FILE I/O를 위하여 설정되는 DIRECTORY

 

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - Data_Type_유니코드지원  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Oracle 기본문법 - Data_Format  (0) 2017.01.18
Oracle 기본문법 - 문자셋과_언어셋  (0) 2017.01.18
Oracle 기본문법 - 시스템_관련  (0) 2017.01.18
Posted by 농부지기
,

[ Oracle 기본문법 - Data_Format ]

 

Data Format 변경하는 방법

 

DATE Format 을 변경하는 방법은 크게는 4가지 방법이 있습니다.

 

1. INIT[dbname].ora 화일 수정

    NLS_DATE_FORMAT = 'RR-MM-DD' 이와 같이 변수와 값을 추가.

 

2. Shell 프로그램 이용

    - C Shell: OS 상태에서 setenv NLS_DATE_FORMAT 'RR/MM/DD'추가.

    - Born Shell: NLS_DATE_FORMAT='RR/MM/DD'

    export NLS_DATE_FORMAT 추가.

    - Korn Shell:

    Born Shell 방법과 추가로 export NLS_DATE_FORMAT='RR/MM/DD' 로 표현 가능

 

3. SYS.PROPS$ VIEW를 이용하여 UPDATE하는 방법

 

4. Session 에서 set 하는 방법

    sqlplus 상태에서 alter session set nls_date_format='RR/MM/DD' 실행(단 SESSION 내에서만 활용가능)

 

* 여기서 4번은 일회성이고 나머지 1-3은 반 영구적인 변경방법 입니다  

http://itc.honam.ac.kr/board/viewbody.html?code=club_board&indx=49&page_num=2&number=9&keyfield=&key=

Posted by 농부지기
,

[Oracle 기본문법 - 문자셋과_언어셋]

 

 

1. 초기 생성당시 ID 및 PASS

      - scott / tiger :

      - system / manager : 데이터베이스의 운영자의 권한

 

2. 시스템 테이블 (system table)

      - all_users;           //존재하는 사용자 아이디

      - dba_free_space;      //테이블 스패이스에 대한 SIZE, BLOCK등 확인

      - dba_data_file;       //

 

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - Data_Type_유니코드지원  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Oracle 기본문법 - PARAMETER LISTS  (0) 2017.01.18
Oracle 기본문법 - Data_Format  (0) 2017.01.18
Oracle 기본문법 - 시스템_관련  (0) 2017.01.18
Posted by 농부지기
,

[Oracle 기본문법 - 시스템_관련]

 

1. 초기 생성당시 ID 및 PASS

      - scott / tiger :

      - system / manager : 데이터베이스의 운영자의 권한

 

2. 시스템 테이블 (system table)

      - all_users;           //존재하는 사용자 아이디

      - dba_free_space;      //테이블 스패이스에 대한 SIZE, BLOCK등 확인

      - dba_data_file;       //

'(DB) Oracle > 기본문법' 카테고리의 다른 글

Oracle - Data_Type_유니코드지원  (0) 2017.01.18
Oracle - Data_Type  (0) 2017.01.18
Oracle 기본문법 - PARAMETER LISTS  (0) 2017.01.18
Oracle 기본문법 - Data_Format  (0) 2017.01.18
Oracle 기본문법 - 문자셋과_언어셋  (0) 2017.01.18
Posted by 농부지기
,