filespec : 시스템 디렉토리에 만들고자 하는 테이터파일명을 기술한다. 테이터파일은 여러 개를 가술할 수 있다.
filename : 이미 존해하는 데이터파일의 이름을 다른 이름으로 변경한다.
테이블 스페이스에서 테이터파일 변경
100M 추가
ALTER TABLESPACE TS_TEST01T
ADD DATAFILE '/ORA8/ORADATA/DB1/DF_TEST02.dbf' SIZE 100M
DEFAULT STORAGE (INITIAL 10K
NEXT 10K
MINEXTENTS 5
MAXEXTENTS 5
PCTINCREASE 0 )
|
변경
ALTER TABLESPACE TS_TEST01
RESIZE DATAFILE '/ORA8/ORADATA/DB1/DF_TEST02.dbf' SIZE 1G
|
테이블 스페이스의 삭제
테이블 스페이스를 한번 삭제하면 그 안에 있는 내용을 복구할 수 없다.
반드시 삭제가 필요한 경우인지 확인하고 삭제하며 만일을 위해서 데이터는 백업을 받고 삭제하도록 한다.
삭제
DROP TABLESPACE tablespace
[ INCLUDING CONTENTS [CASCADE CONSTRAINTS]]
|
tablespace : 삭제하고자 하는 테이블 스페페이스명을 기술한다.
INCLUDING CONTENTS : 테이블 스페이스 내에 존재하는 모든 ( 테이블, 인덱스 등)도 같이 삭제된다.
CASCADE CONSTRAINTS : 다른 테이블 스페이스와 연결된 참조 무결성도 같이 삭제된다.
DBA_DATA_FILES : 데이터 사전에서 데이터파일이 사용중인 조회한 수 존재하지 않으면 삭제도록한다.
만약 계속 사용중인 데이터파일을 삭제한다면 데이터베이스가 정상적으로 운영된다 하더라도 삭제된 데이터파일에서 데이터를 검색하면 에러가 발생한다.
또한 데이터베이스르 종료시켰다가 다시 기동하면 데이터파일 깨짐 에러가 발생한다.
테이블 스페이스와 데이터파일 삭제
테이블 스페이스 삭제 와 데이터파일 삭제
1) DROP TABLESPACE TS_TEST01;
2) /ORA8/ORADATA/DB1 디렉토리에서 DF_TEST01.DBF 파일 삭제
|
테이블 관리
테이블 : 테이블스페이스에 생성되고 각 테이블마다 별도의 저장 옵션을 부여할 수 있다.
테이블마다 용량을 지정할 수 있으나 테이블 스페이스에서 확보한 저장 공간 용량을 초과할 수없다.
생성, 변경 삭제가 가능하고 테이블 내 컬럼에 NULL 값의 허용 여부와 기본값을 지정할 수 있다.
또한 PK를 지정할 수 있고 다른 테이블과 참조 무결성 관계를 지정한다.
1) ITEMNM 컬럼 NOT NULL로 변경
ALTER TABLE ITEM
MODIFY ( ITEMNM VARCHAR2(40) NOT NULL );
2) ITEMCLCD 컬럼 추가
ALTER TABLE ITEM
ADD( ITEMCLCD VARCHAR2(20) DEFAULT '01' NULL );
(2) 테이블 컬럼 변경
1) PRIMARY KEY 삭제( DROP )
ALTER TABLE ITEM
DROP PRIMARY KEY;
2) PRIMARY KEY 추가
ALTER TABLE ITEM
ADD( PRIMARY KEY (ITEMCLCD) );
테이블 삭제 : 테이블 삭제( DROP )는 데이터 삭제( Delete )와 다르게 롤백되지 않음에 유의한다.
[그림 10-28] 테이블 삭제
DROP TABLE [schema.]table
[CASCADE CONSTRAINTS]
|
테이블만 삭제할 수도 있고, 테이블이 참조되는 참조 무결성 제약을 삭제할 수도 있다.
CASCADE CONSTRAINTS는 자시이참조되는, 즉 FK로 연뎔되어 있는 자식 테이블에 데이터가 있음에도
자신의 테이블을 삭제할 수 있는 것을 말한다. 연결된 자식 테이블의 데이터를 지우거나 자식 테이블을 삭제하지 않을을 기억하자
참조되는 테이블의 데이터가 있는데, 'DROP TABLE'만 할 경우 참조 무결성 제약 위반 에러가 발생한다.
테이블 삭제
1) FOREIGN KEY에 참조되지 않을 때
DROP TABLE ITEM;
2) FOREIGN KEY에 참조될 때
DROP TABLE ITEM CASCADE CONSTRAINTS;
테이블 이름 변경
이미 생성된 테이블의 이름을 바꾼다. 테이블 이름이 바뀌면서 관련된 사전 정보가 바뀌므로 모든 제약 사항은 그대로 유지된다.
만약 ITEM 테이블이 'ALTER TABLE ORDERITEM ADD( FOREIGN KEY ( ITEMCD ) REFERENCE ITEM );' 라는 문장에 의해 참조 무결성 관계를 가지고 있어도 이름이 변경되면 ITEM -> ITEM1으로 데이터 사전에 수정되어 참조 무결성을 유지한다.
WITH CHECK OPTION: 뷰를 통해서만 INSERT, DELETE, UPDATE가 가능하게 지정한다.
WITH READ ONLY: 이 뷰를 통해서는 INSERT, DELETE, UPDATE가 불가능하다.
(1) 뷰 생성
CREATE VIEW V_ORDER AS
SELECT ORDERNO, ITEMCD, ITEMNM, PRICE, QTY
FROM ORDERITEM
WHERE PRICE > 10000;
(2) 조인 뷰 생성
CREATE VIEW V_ORDER AS
SELECT A.ORDERNO, A.ORDERDATE, A.CUSTNM, A.ORDERTYPE
, B.ITEMCD, B.ITEMNM, B.PRICE, B.QTY
FROM ITEM A, ORDERITEM B
WHERE A.ORDERNO = B.ORDERNO
(3) 그룹 뷰 생성
CREATE VIEW V_ORDERTYPE_SUM AS
SELECT A.ORDERTYPE, SUM( B.PRICE )
FROM ITEM A, ORDERITEM B
WHERE A.ORDERNO = B.ORDERNO
GROUPBY A.ORDERTYPE
뷰 삭제
[그림 10-32] 뷰 삭제
DROP VIEW[SCHEMA.]VIEW
|
주문 뷰( V_ORDER )를 삭제하라
DROP VIEW V_ORDER
|
SQL 구문별 상세 설명 - 트랜잭션 컨트롤
트랜잭션: 논리적인 작업 단위( Logical Unit Of Work )라고 '7장. 트랜잭션 분석'에서 설명했다.
SQL문장에서 트랜잭션 처리는 테이터베이스에 반영하는 커밋과 롤백단위로 이루어진다.
오라클에서 트랜잭셔을 종료시키는 경우
* 컷밋이나 로백이 실행될 때
* DML 문장이 실행되었고 트랜잭션이 종료되지 않았는데, CRETE, DROP, RENAME, ALTER와 같은 DDL 문장이 실행되는 경우 DML 문장은 자동으로 커밋된다.
* 트랜잭션이 종료되지 않았는데 사용자가 오라클 접속에 빠져나갈 때 트랜잭션은 자동으로 컷민된다.
* 비정상적으로 시스템이 종료되는경우 현 트랜잭션을 롤백된다.
|
트랜잭션 컨트롤 문장 4가지 ( [그림 10-33] 트랜잭션 컨트롤 명령어 )
COMMIT : 테이터베이스에 DML 작업 내용르 반영한다.
ROLLBACK : 테이터베이스에 DML 작업 내용을 취소한다.
SAVEPOINT : 긴 트랜잭션 중간 중간에 롤백을 대비하여 기록한다.
SET TRANSACTION : 트랜잭션의 종류를 읽기 전용으로 할 것인지 읽기 / 쓰기로 할 것인지 지정한다.