datafile 관리하기
datafile 저장영역 구조
- 모든 Datafile은 Tablespace로 감싸져있어야한다
- Tablespace : 논리적 저장 영역 구조
- Tablespace 개수 ≤ Datafile 개수
- Tablespace개수가 Datafile개수보다 더 많을 수 없다.
- DB생성시 system데이터파일/system테이블스페이스와 undo데이터파일/undo테이블스페이스는 필수이다.
- 두 용어의 차이. 헷갈리지말 것
- extent : segment(객체)의 확장단위·할당단위
- extend : datafile의 확장단위
datafile 내용 보기
- 데이터파일안의 구성은 v$datafile와 v$tempfile를 통해서 알 수 있다.
1 | SQL> select name from v$datafile; |
system.dbf
: Data dictionarysysaux.dbf
: 통계 데이터을 모아놓은 파일,undo.dbf
: undo데이터, DML작업은 COMMIT도 되지만 ROLLBACK도 되기때문에 오라클은 변경작업하기전에 이전 데이터의 복사본을 UNDO데이터 파일에 올려놓는다.users.dbf
: 일반 user 소유의 object를 보관하기 위한 파일temp.tmp
: 임시데이터. sub쿼리의 결과값을 저장하는 파일(메인쿼리실행할때 참조함), order by절이나 group by절을 실행하면 정렬을 해야하므로 임시데이터를 생성함. dist 중복된 값 제거를 위해서 정렬을 해야하기때문에 임시데이터를 생성함.- 일반적인 회사는
system.dbf
,sysaux.dbf
,undo.dbf
,temp.tmp
는 기본으로 있고 회사의 규모에 따라users.dbf
파일의 개수가 차이난다.
Tablespace이름과 datafile이름을 함께 보는 쿼리
- tablespace의 개수와 tablespace이름, 데이터파일이름을 알아보는 쿼리이다.
1 | 1 select d.ts#, t.name as "T/S name", d.name "Datafile name" |
DB공간관리, DB공간 늘리는 3가지 방법
- 새로운 Tablespace를 추가해서 DB공간을 늘릴 수 있다.
- why? Tablespace를 추가하려면 반드시 하나이상의 데이터파일이 속해있어야한다.
- 따라서 데이터파일의 물리적 크기만큼 DB공간을 늘릴 수 있다.
- 기존 Tablespace에 데이터파일을 추가하여 DB공간을 늘릴 수 있다.
- 기존 데이터파일의 크기를 늘려서 DB공간을 늘릴 수 있다.
EM을 이용하여 새로운 Tablespace를 추가해서 DB공간을 늘리기
- EM접속 -> storage탭 -> Tablespace 클릭 -> create버튼 클릭 -> 속성 설정하고 OK
EM을 이용하여 기존 Tablespace에 데이터파일을 추가하여 DB공간 늘리기
- EM접속 -> storage탭 -> Tablespace 클릭 -> 기존테이블스페이스 클릭 -> add datafile 버튼 클릭 -> 속성 설정하고 OK
EM을 이용하여 기존 데이터파일의 크기를 늘려서 DB공간을 늘리기
- EM접속 -> storage탭 -> Tablespace 클릭 -> 기존 데이터파일의 클릭 -> action 버튼 클릭 -> resize 클릭 -> 속성 설정하고 OK
명령어로 새로운 Tablespace를 추가해서 DB공간을 늘리기
autoextend on
: 자동확장기능 옵션, 기존사이즈 100M가 다 차면 10M씩 최대 500M까지 늘어난다- maxsize지정안하면 사이즈가 무한대다.
1 | SQL> create tablespace appuser |
명령어로 기존 Tablespace에 데이터파일을 추가하여 DB공간 늘리기
1 | SQL> alter tablespace appuser |
명령어로 기존 데이터파일의 크기를 늘려서 DB공간을 늘리기
1 | SQL> alter database datafile '/u01/app/oracle/oradata/ORCL/datafile/appuser01.dbf' |
Tablespace 삭제
- EM사용할 경우
drop
버튼 클릭하면 끝! - 명령어인 경우
and datafiles
옵션: 데이터파일은rm
명령어로 따로 지워여하는데 옵션을 사용하면 함께 삭제가능cascade constraints
옵션: PK컬럼에 FK가 걸려있으면 삭제시 에러가 발생한다. PK컬럼에 FK가 걸려있는데도 삭제하고싶을 때 해당 옵션을 사용하여 FK제약조건을 삭제하여 PK컬럼도 삭제가능- FK걸려있는 제약조건만 삭제되지 FK걸려있던 해당 컬럼은 그대로 유지된다.
1 | drop tablespace appuser including contents |