-
오라클 DB 테이블스페이스 용량 늘리기개발/Database 2018. 8. 2. 16:21
휴가철을 맞아 팔자에도 없는 DBA 노릇을 갑자기 하느라 쩜 마니 당황했다ㅎ.....
한번 해보면 별거 아닌데 한번도 안 해봐서 진짜 쌩난리를 치면서 했다. 담부터는 그러지 말자ㅠ
1. 테이블스페이스의 이름 확인
SELECT TABLESPACE_NAME, DATAFILE_COUNT, BLOCK_SIZE
FROM DBA_TABLESPACES
;
2. 데이터 파일의 이름 확인
1에서 확인한 테이블스페이스의 이름을 가지고 아래 쿼리를 실행
FILE_NAME 컬럼의 값이 바로 데이터 파일의 이름임
SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME, STATUS
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = '<테이블스페이스 이름>'
;
3. 테이블스페이스의 용량을 늘려주기
-> 무려 3가지 옵션이 있다!
2에서 얻은 데이터 파일 네임을 쓰면 ㅇㅋ
3-1. 데이터 파일의 크기를 바꿔줌
ALTER DATABASE DATAFILE '<데이터 파일 이름>' RESIZE <원하는 크기>;
3-2. 데이터 파일의 크기가 자동으로 늘어나도록 옵션 걸어줌
--데이터 파일에 선언한 사이즈를 추가
ALTER DATABASE DATAFILE '<데이터 파일 이름>' AUTOEXTEND ON NEXT '<사이즈>';
--데이터 파일의 사이즈를 선언한 사이즈로 변경
ALTER DATABASE DATAFILE '<데이터 파일 이름>' AUTOEXTEND ON MAXSIZE '<사이즈>';
3-3. 데이터 파일을 추가함
ALTER TABLESAPCE '<테이블스페이스명>' ADD DATAFILE '<데이터 파일 이름>' SIZE '<사이즈>';
* 참고 : 테이블스페이스의 총 용량, 사용 중인 용량 및 남은 용량 확인 쿼리
SELECT A.TABLESPACE_NAME, A.FILE_ID,
ROUND(A.BYTES/1024/1024/1024, 2)||'G' USABLE,
ROUND( B.BYTES/1024/1024/1024,2)||'G' FREE,
TRUNC(100-(B.BYTES/A.BYTES*100),2)||'%' USED_RATE,
TRUNC(B.BYTES/A.BYTES*100,2)||'%' FREE_RATE
FROM ( SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTES
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME, FILE_ID ) A,
( SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTES
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME, FILE_ID ) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
AND A.FILE_ID = B.FILE_ID(+)
ORDER BY USED_RATE DESC;
'개발 > Database' 카테고리의 다른 글
PL/SQL 실행 블럭에서 동적 쿼리 작성하기 (0) 2018.08.08 PL/SQL 에서의 FUNCTION vs PROCEDURE (0) 2018.08.08 SQL을 활용해서 스네이크 케이스를 카멜 케이스로 바꾸기 (0) 2018.07.26 나도 WITH절을 써보자 (0) 2018.07.26 DELETE VS TRUNCATE VS DROP (0) 2018.07.26 댓글