이 기능은 신기하고 유용한 기능이다. External Table 이란 외부 파일시스템의 파일(TEXT)을 오라클의 테이블과 연결하여 그 데이터에 질의를 수행할 수 있는 개념이다. 쉽게 말해서 엑셀파일을 특정 테이블과 연결하여 사용자는 일반 테이블에 조회하듯 사용하여 엑셀파일을 사용중인지 인지하지도 못한다. 물론 read-only 이다. 그 외부 파일은 여러가지 포멧을 지원하며 *.dat *.txt도 가능하다. 오라클에서는 외부의 데이터에 엑세스 하기 위해 두가지 방법을 지원한다. 첫번째는 SQL*Loader utility 이고 두번째는 ORACLE_DATAPUMP 이다. 절차 1. DIRECTORY 생성 일단 파일 시스템의 경로를 나타내는 DIRECTORY을 생성한다. 임의로 'c:\external_da..
Oracle10g부터 테이블을 삭제하면 바로 삭제되지 않고 일종의 윈도우의 휴지통처럼 상태가 바뀌게 된다. 이를 확인하려면 테이블을 DROP 해보고 SELECT * FROM TAB 을 해보자. 그러면 삭제한 테이블 대신에 BIN$.... 같은 테이블이 보일것이다. 이것은 완전히 삭제가 된것이 아니고 휴지통에 들어가있는 것처럼 된건데 복구도 가능하다. 현재 삭제된 테이블을 보려면 'show recyclebin' 이나 'select * from recyclebin' 으로 조회하면 알수 있다. 테이블 삭제 recyclebin 으로 보내지 않고 바로 삭제 하려면 아래와 같이 'PURGE' 키워드를 사용하여 삭제 한다. DROP TABLE tableName PURGE; 휴지통 비우기 recyclebin에 있는 내..
인덱스란, DB의 색인을 만드는 작업으로 Optimizer가 참고하여 실행계획을 세우는데 사용된다. 예를 두꺼운 책의 목차라고 생각해보면 이해가 빠를것이다. 빗대어보자면 사람이 서버프로세스, 목차가 인덱스, 페이지번호가 rowid 에 해당한다고 볼 수 있다. 만약 목차가 없다면 원하는 내용을 찾기 위해 책을 훑어봐야 할것이다 . DB도 인덱스가 없다면 해당 테이블의 데이터 블록을 모두 메모리로 올려서 해당 row가 있는지 전부 검사하게 된다. 바로 Table Full Scan 이다. (full scan 이 나은 경우도 있지만 논외로 하자.) 하지만 무조건 만든다고 좋은것이 아니며 적재적소에 사용해야 성능을 극대화시킬 수 있다. 잘못 사용하면 본전도 못찾는 경우도 있다. 인덱스를 사용을 추천하는 경우 - ..
alter table 은 테이블을 수정하는 명령어이다. ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype]...); ALTER TABLE table MODIFY (column datatype [DEFAULT expr] [, column datatype]...); ALTER TABLE table DROP (column); Adding a Column (컬럼 추가) 컬럼을 추가하게 되면 테이블의 제일 마지막에 생성된다. 추가된 컬럼의 순서는 변경할 수 없으며 순서를 변경하려면 'DROP' 후 다시 생성해야 한다. Modifying a Column (컬럼 수정) 사용자는 data Type, size, default value 를 ..
GRANT와 REVOKE 는 권한과 관련된 예약어이다. GRANT 는 권한을 부여할 때 사용하고 REVOKE는 부여된 권한을 뺏을때 사용한다. 예를들어 DBA가 사용자 계정을 생성 할 때 'CREATE USER' 라는 명령어를 사용한다. 하지만 이렇게 생성된 사용자는 DB에 접속하지 못한다. 접속이 가능하게 하려면 'GRANT'명령어로 'CREATE 'SESSION' 권한(Privilege)을 부여하면 그제서야 그 사용자는 디비에 접근이 가능하다. SYSTEM PRIVILEGE DBA만 부여 할 수 있는 권한을 SYSTEM PRIVILEGE 라고 한다. 대표적인 SYSTEM PRIVILEGE는 'CREATE SESSION', 'CREATE TABLE', 'CREATE SEQUENCE', 'CREATE V..
Oracle date formatWith the functions to_char and to_date, a date format can be used. Example: select to_char(sysdate,'DD/MM/YYYY HH24:MI:SS') from dual; will return something like: 24/03/2006 14:36:43 Here is a list of all the formats that can be used: Format maskDescription CC Century SCC Century BC prefixed with - YYYY Year with 4 numbers SYYY Year BC prefixed with - IYYY ISO Year with 4 numbe..