🤔 문제발생
오라클 테이블 생성방법에 대해서 알아보자!
🎉 해결방법 1 - 테이블 복사
- 테이블을 복사하여 새로운 테이블을 만드는 방법이다.
- 새로 만들려는 테이블이 복사할 테이블과 유사도가 높으면 해당 방법을 사용한다.
CREATE TABLE 테이블이름
AS
SELECT *
FROM 복사할 테이블 명
CREATE TABLE 테이블이름
AS
SELECT A.NAME, A.AGE, A.JOB, B.ADDRESS, B.EMAIL
FROM 복사할 테이블1 A, 복사할 테이블2 B
🎉 해결방법 2 - 새로운 테이블 생성
- 컬럼 타입과 null 가능여부, 디폴트 값을 설정한다.
- 키를 설정한다.
- 코맨트를 입력한다.
CREATE TABLE "TGMADM"."TB_MONEY_FLOW"
(
"SVDATE" VARCHAR2(8) NOT NULL ENABLE
, "CATRGORIE" VARCHAR2(20) NOT NULL ENABLE
, "INSTITUTION" VARCHAR2(20) NOT NULL ENABLE
, "NAME" VARCHAR2(20) NOT NULL ENABLE
, "MONEY" NUMBER(11,0) DEFAULT 0
, "NOTE" VARCHAR2(40)
, "CRTDATE" DATE
, "UPTDATE" DATE
, "EMPTY1" VARCHAR2(20)
, "EMPTY2" VARCHAR2(20)
, CONSTRAINT PK_TB_MONEY_FLOW PRIMARY KEY ("SVDATE", "NAME")
);
COMMENT ON TABLE TGMADM.TB_MONEY_FLOW IS '자산포트폴리오';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.SVDATE IS '날짜';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.CATRGORIE IS '카테고리';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.INSTITUTION IS '기관';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.NAME IS '명';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.MONEY IS '금액';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.NOTE IS '특기사항';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.CRTDATE IS '생성일자';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.UPTDATE IS '업데이트일자';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.EMPTY1 IS '비고1';
COMMENT ON COLUMN TGMADM.TB_MONEY_FLOW.EMPTY2 IS '비고1';
👏 결과
새로운 테이블을 만들 때 블록, 트랜잭션 등에 대한 설정에 대한 STUDY가 필요하다.
참고 : https://chinggin.tistory.com/533
참고 : https://code-lab1.tistory.com/342
SEGMENT CREATION IMMEDIATE - 테이블 생성 후 바로 조회가 가능하다. 만약 DEFREAD로 생성한 다면 바로 조회가 불가능하다. PCTFREE - 사용 가능한 공간에서 데이터 행의 갱신을 대비하여 확보해 놓는 블록 값(%) 데이터 블록의 설정한 % 값만큼을 사용 가능한 공간으로 유지하여 각 블록에 있는 행을 갱신한다. PCTUSED - 테이블의 각 데이터 블록에 대해 유지하려는 사용 공간의 최소 백분율이다. 데이터 블록의 사용 영역이 설정한 %값보다 적어야만 새로운 행을 삽입할 수 있다. INITRANS - 하나의 데이터 블록에 지정될 초기 트랜잭션 값이며, 최소 수준의 동시성을 보장하는 옵션이다. 만약 1이 아닌 다른 값으로 설정 시 설정 값만큼 트랜잭션이 동시에 해당 블록을 갱신할 수 있다. MAXTRANS - 데이터나 인덱스 블록을 동시에 갱신할 수 있는 트랜잭션의 수이다 255로 설정하면, 255미만의 트랜잭션만 실행되며, 나머지 트랜잭션은 실행 중인 트랜잭션이 종료되어 실행할 수 있을 때까지 기다리는 상태가 된다. NOCOMPRESS 종류: [ (COMPRESS, 압축), (NOCOMPRESS , 압축을 하지 않는다) , (LOGGING, 데이터베이스 내의 데이터에 대한 모든 변경 사항을 기록하기 위해 사용한다. ) ]; STORAGE (INITIAL : 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645) (etc. Tablespace라는 논리적 저장공간) 1) INITIAL : 테이블 스페이스의 맨 첫번째 Extents의 크기 2) NEXT : 다음 Extents의 크기이며 할당되는 크기는 PCTINCREASE와 관련한다. 3) MINEXTENTS : 생성할 Extents의 최소 값 4) MAXEXTENTS : 생성할 Extents의 최대 값 5) PCTINCREASE : 가장 최근에 할당된 Extents에 증가되는 백분율(%)이며, 0이면 NEXT는 동일한 값으로 할당, default : 50 BUFFER_POOL - KEEP : 가능한 하나의 Memory에 오랫동안 유지되어야하는 Segment를 위해 사용되어야 합니다. 자주 사용되며, Cache size의 약 10% 전후의 크기를 가진 Segment가 이 Pool을 사용하기가 적당 - Recycle : 자주 사용되지 않거나 buffer_pool의 두배보다 큰 정도의 큰 Segment가 Index Serach를 하는 작업 등에 사용되도록 한다. 랜덤 액세스를 하는 큰 테이블에 사용하면 좋은 버퍼 - Default : 위의 두 Buffer Pool에 할당되지 않은 나머지는 Default가 된다. 일반적인 버퍼캐시 영역을 뜻한다. FLASH_CACHE - 내부의 플래시 SSD를 나타내며, 영구 저장소대신 임시 캐싱으로 처리한다. CELL_FLASH_CACHE - ESFC ( Exadata Smart Flash Cache)는 DISK I/O가 수행될 때 STORAGE 서버에서 해당 블록을 빨리 검색하여 DISK I/O에 대한 효율을 향상하기 위해 사용된다. - CELL_FLASH_CACHE는 ESFC에 대한 Object Caching 정책을 지정하는 옵션이며 NONE : NO Caching , DEFAULT : LRU 알고리즘에 처리, KEEP : 처음 검색한 블록을 캐싱한후 계속 캐싱 유지 옵션이 있다.
'DB > 오라클' 카테고리의 다른 글
오라클 데이터, 테이블 복구하는 방법 (0) | 2024.04.04 |
---|