개발
[Oracle] Cause: java.sql.SQLException: ORA-01659: 7 을(를) 넘어서 테이블스페이스 TS_MM_DATA01에 MINEXTENTS를 할당할 수 없습니다
쩨이엠
2023. 10. 16. 18:14
728x90
반응형
오랜만에 Oracle을 썼더니 아무것도 기억이 안난다
그 와중에 이상한 에러가 생겼다
Cause: java.sql.SQLException: ORA-01659: 7 을(를) 넘어서 테이블스페이스 TS_MM_DATA01에 MINEXTENTS를 할당할 수 없습니다
이게 뭔가 했더니 테이블스페이스에 용량이 적을 때 생긴다고 한다
oracle 접속
$ sqlplus / as sysdba
sysdba로 안들어가고 그냥 일반 유저에서 테이블 찾았더니 아무것도 안떴다
이런 DB 관련은 모두 sysdba에 할당되어있다
테이블 스페이스 정보 확인
SELECT A.TABLESPACE_NAME AS "테이블스페이스명",
A.FILE_NAME AS "파일경로",
A.BYTES/1024/1024/1024 AS "총크기",
(A.BYTES - B.FREE)/1024/1024/1024 AS "사용공간",
B.FREE/1024/1024/1024 AS "여유 공간",
TO_CHAR( (B.FREE / A.BYTES * 100) , '999.99')||'%' AS "여유공간"
FROM
(
SELECT FILE_ID,
TABLESPACE_NAME,
FILE_NAME,
SUBSTR(FILE_NAME,1,200) AS FILE_NM,
SUM(BYTES) BYTES
FROM DBA_DATA_FILES
GROUP BY FILE_ID,TABLESPACE_NAME,FILE_NAME,SUBSTR(FILE_NAME,1,200)
) A,
(
SELECT TABLESPACE_NAME,
FILE_ID,
SUM(NVL(BYTES,0)) AS FREE
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 A.TABLESPACE_NAME;
고대로 붙여넣었더니 TS_MM_DATA01은 여유공간이 0.53% 남았다
그래서 할당 할 수 없다고 한다
그럼 여유공간을 할당해주기
1. 여유공간 할당 + 자동증가
ALTER TABLESPACE TS_MM_DATA01 add datafile '{DATA_FILE_이름}' SIZE 100M AUTOEXTEND ON NEXT {SIZE} MAXSIZE {MAX_SIZE}
ALTER TABLESPACE TS_MM_DATA01 add datafile '/data/ts_mm_data01_02.dtf' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 5G
자동증가를 하지 않으려면 AUTOEXTEND 부분부터 지우면 된다
2. 여유공간 할당이 되어있을 때 자동증가시키기
자동증가 여부 확인
SELECT TABLESPACE_NAME, AUTOEXTENSIBLE, FILE_NAME FROM DBA_DATA_FILES;
자동증가로 변경
ALTER DATABASE DATAFILE '/data/ts_mm_data01_02.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE 5G;
728x90
반응형