쩨이엠 개발 블로그

[Oracle] Cause: java.sql.SQLException: ORA-01659: 7 을(를) 넘어서 테이블스페이스 TS_MM_DATA01에 MINEXTENTS를 할당할 수 없습니다 본문

개발

[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
반응형
Comments