[ 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 농부지기
,