● 개요
● 스키마
- 특정한 유저가 소유한 데이터베이스 객체의 집단.
- 유저를 만들면 같은 이름의 스키마가 생성.
- sys, system 스키마
- hr, oe, pm, sh 등의 sample스키마가 있다.
● 데이터 타입
◎ 테이블 내의 데이터 타입
○ CHAR(size [BYTE|CHAR]
: 기본은 BYTE, 예) CHAR(10)인 경우, 10byte, 영어 10자리, 한글 5자리
CHAR[size CHAR]로 표현가능
○ VARCHAR2
○ DATE
○ NUMBER(p, s)
○ BINARY_FLOAT : 10g부터 나옴
○ BINARY_DOUBLE
○ FLOAT
○ INTEGER
○ NCHAR(length)
○ NVARCHAR2(size [BYTE|CHAR])
○ LONG
○ LONG RAW
○ RAW(size)
○ ROWID
○ UROWID
○ BLOB
○ CLOB
○ NCLOB
○ BFILE
○ TIMESTAMP
● 테이블의 생성과 수정
◎ EM을 이용한 테이블의 생성과 수정을 알아본다.
- database instance > tables > create table
● 제약
◎ 제약의 종류
○ NOT NULL
○ UNIQUE Key
○ PRIMARY KEY
○ FOREIGN KEY
○ Check
○ type
- immediate
- deferrable : 지연가능(commit시에 제약을 검사한다.)
○ status
- disable novalidate
- disable validate : 테이블에 insert를 금지할 수 있는 효과
- enable novalidate : 여기에 한번 거쳐서 enable validate로 갈 것
- enable validate
예)
※ exceptions 테이블을 이용한 제약 활성화
: @?/rdbms/admin/utlexcpt.sql 실행 -> exceptions테이블의 생성.
문제가 있는 데이터의 rowid가 보관됨
◎ EM을 이용해 제약을 정의하는 방법
- database instance > tables > create table
◎ SQL로 제약을 정의하는 방법
● 테이블 (table)
◎ DROP TABLE
- 공간 할당은 반환되지 않음
- EM에서 실습하기
: database instance > tables -> delete with options 버튼 클릭
-> Delete the table definition, all its data, and dependent objects (DROP)선택 ->yes버튼 클릭
◎ TRUNCATE TABLE
- 최초 테이블을 만든 상태와 같이 된다. 최초 할당받은 extent만 남음
- EM에서 실습하기
: database instance > tables -> delete with options 버튼 클릭 ->
-> Delete only the data with no Rollback support (TRUNCATE) -> yes버튼 클릭
기타참고사항
관련 내용 : 오라클 교재 Administration Workshop I 7장
INDEX 크기관련 동영상 : 1. index 크기관련 part1
2. index 크기관련 part2
3. index 크기관련 part3
INDEX SPLIT 관련 동영상 : 1. index split part1
2. index split part2
3. index split part3
- 스키마란 무엇인가?
- 데이터 타입은 무엇이고, 종류는 어떤 것들이 있는가?
- 테이블의 생성과 수정은 어떻게 하는가?
- 제약을 정의하는 방법은?
- 컬럼과 테이블의 내용을 보자
- 인덱스는 어떻게 생성하는가?
- 뷰는 어떻게 생성하는가?
- 시퀀스는 어떻게 생성하는가?
- 템프테이블은 어떻게 사용하는가?
- 데이터 딕셔너리를 사용할 수 있다.
- 데이터 타입은 무엇이고, 종류는 어떤 것들이 있는가?
- 테이블의 생성과 수정은 어떻게 하는가?
- 제약을 정의하는 방법은?
- 컬럼과 테이블의 내용을 보자
- 인덱스는 어떻게 생성하는가?
- 뷰는 어떻게 생성하는가?
- 시퀀스는 어떻게 생성하는가?
- 템프테이블은 어떻게 사용하는가?
- 데이터 딕셔너리를 사용할 수 있다.
● 스키마
- 특정한 유저가 소유한 데이터베이스 객체의 집단.
- 유저를 만들면 같은 이름의 스키마가 생성.
- sys, system 스키마
- hr, oe, pm, sh 등의 sample스키마가 있다.
● 데이터 타입
◎ 테이블 내의 데이터 타입
○ CHAR(size [BYTE|CHAR]
: 기본은 BYTE, 예) CHAR(10)인 경우, 10byte, 영어 10자리, 한글 5자리
CHAR[size CHAR]로 표현가능
○ VARCHAR2
○ DATE
○ NUMBER(p, s)
○ BINARY_FLOAT : 10g부터 나옴
○ BINARY_DOUBLE
○ FLOAT
○ INTEGER
○ NCHAR(length)
○ NVARCHAR2(size [BYTE|CHAR])
○ LONG
○ LONG RAW
○ RAW(size)
○ ROWID
○ UROWID
○ BLOB
○ CLOB
○ NCLOB
○ BFILE
○ TIMESTAMP
● 테이블의 생성과 수정
◎ EM을 이용한 테이블의 생성과 수정을 알아본다.
- database instance > tables > create table
● 제약
◎ 제약의 종류
○ NOT NULL
○ UNIQUE Key
○ PRIMARY KEY
○ FOREIGN KEY
○ Check
○ type
- immediate
- deferrable : 지연가능(commit시에 제약을 검사한다.)
○ status
- disable novalidate
- disable validate : 테이블에 insert를 금지할 수 있는 효과
- enable novalidate : 여기에 한번 거쳐서 enable validate로 갈 것
- enable validate
예)
SQL> drop table t1 purge;
SQL> create index t1_col1_idx on t1(col1);
SQL> alter table add constraint t1_col1_pk primary key
SQL> create index t1_col1_idx on t1(col1);
SQL> alter table add constraint t1_col1_pk primary key
SQL> create table t1 (col1 number)
SQL> alter table add constraint t1_col1_pk primary key enable
SQL> alter table add constraint t1_col1_pk primary key enable
SQL> insert into t1 values (1);
SQL> insert into t1 values (2);
SQL> insert into t1 values (3);
SQL> commit;
SQL> insert into t1 values (2);
SQL> insert into t1 values (3);
SQL> commit;
SQL> select * from t1;
COL1
----------
1
2
3
COL1
----------
1
2
3
SQL> insert into t1 values (3); --> 에러
SQL> alter table t1 disable constraint t1_col1_pk; --> 제약 해제
SQL> insert into t1 values (3); --> 성공
SQL> insert into t1 values (3); --> 성공
SQL> commit;
SQL> insert into t1 values (3); --> 성공
SQL> commit;
SQL> select * from t1;
COL1
----------
1
2
3
3
3
SQL> alter table t1 enable constraint t1_col1_pk; --> 제약을 enable validate로 변경하려고 하지만 에러!!!
SQL> alter table t1 enable novalidate constraint t1_col1_pk
SQL> insert into t1 values (3); -- ORA-00001: unique constraint (PHIL.T1_COL1_PK) violated
COL1
----------
1
2
3
3
3
SQL> alter table t1 enable constraint t1_col1_pk; --> 제약을 enable validate로 변경하려고 하지만 에러!!!
SQL> alter table t1 enable novalidate constraint t1_col1_pk
SQL> insert into t1 values (3); -- ORA-00001: unique constraint (PHIL.T1_COL1_PK) violated
※ exceptions 테이블을 이용한 제약 활성화
: @?/rdbms/admin/utlexcpt.sql 실행 -> exceptions테이블의 생성.
문제가 있는 데이터의 rowid가 보관됨
SQL> alter table t1 enable validate constraint t1_col1_pk EXCEPTIONS INTO phil.exceptions;
SQL> set lines 200
SQL> select * from exceptions;
SQL> select * from t1, t1.* from t1
where rowid in (select row_id from exceptions);
ROWID COL1
------------------ ----------
AAACxtAAGAAAALYAAC 3
AAACxtAAGAAAALYAAD 3
AAACxtAAGAAAALYAAE 3
SQL> update t1 set col1=13 where rowid='AAACxtAAGAAAALYAAD';
SQL> update t1 set col1=23 where rowid='AAACxtAAGAAAALYAAE';
SQL> alter table t1 enable validate constraint t1_col1_pk EXCEPTIONS INTO phil.exceptions;
SQL> set lines 200
SQL> select * from exceptions;
SQL> select * from t1, t1.* from t1
where rowid in (select row_id from exceptions);
ROWID COL1
------------------ ----------
AAACxtAAGAAAALYAAC 3
AAACxtAAGAAAALYAAD 3
AAACxtAAGAAAALYAAE 3
SQL> update t1 set col1=13 where rowid='AAACxtAAGAAAALYAAD';
SQL> update t1 set col1=23 where rowid='AAACxtAAGAAAALYAAE';
SQL> alter table t1 enable validate constraint t1_col1_pk EXCEPTIONS INTO phil.exceptions;
◎ EM을 이용해 제약을 정의하는 방법
- database instance > tables > create table
◎ SQL로 제약을 정의하는 방법
SQL> alter table e1 add constraint e1_empno_pk primary key (empno);
SQL> alter table e1 add constraint e1_sal_ck check (sal >= 0);
SQL> alter table e1 add constraint e1_hphone_uk unique (hphone);
SQL> alter table e1 add constraint e1_deptno_fk foreign key(deptno) references d1(deptno);
SQL> alter table e1 modify(ename constraint e1_ename_nn not null);
SQL> alter table e1 add constraint e1_sal_ck check (sal >= 0);
SQL> alter table e1 add constraint e1_hphone_uk unique (hphone);
SQL> alter table e1 add constraint e1_deptno_fk foreign key(deptno) references d1(deptno);
SQL> alter table e1 modify(ename constraint e1_ename_nn not null);
● 테이블 (table)
◎ DROP TABLE
- 공간 할당은 반환되지 않음
- EM에서 실습하기
: database instance > tables -> delete with options 버튼 클릭
-> Delete the table definition, all its data, and dependent objects (DROP)선택 ->yes버튼 클릭
◎ TRUNCATE TABLE
- 최초 테이블을 만든 상태와 같이 된다. 최초 할당받은 extent만 남음
- EM에서 실습하기
: database instance > tables -> delete with options 버튼 클릭 ->
-> Delete only the data with no Rollback support (TRUNCATE) -> yes버튼 클릭
기타참고사항
관련 내용 : 오라클 교재 Administration Workshop I 7장
INDEX 크기관련 동영상 : 1. index 크기관련 part1
2. index 크기관련 part2
3. index 크기관련 part3
INDEX SPLIT 관련 동영상 : 1. index split part1
2. index split part2
3. index split part3
'Oracle > Admin' 카테고리의 다른 글
Managing Schema Objects-2 (0) | 2009.12.02 |
---|---|
Managing Data and Concurrency (주요내용 : Lock) (0) | 2009.12.01 |
Administering User Security (0) | 2009.11.27 |
2009년 11월 26일 수업내용 (0) | 2009.11.26 |
2009년 11월 25일 수업내용 (0) | 2009.11.25 |