DataBase TableSpace

S_H_H·2023년 2월 23일
0
늘 언제나 방심하고 있으면 나타나는 오류들...
이번엔 TabeleSpace

Error 발생

TableSpace에러는 Log를 쌓는 테이블에 있던 일이라
이번에도 그려려니 하고 있었지만 처음 발생하는 에러로 보였다

내가 알고 있는 에러의 종류
ORA-01653: USERNAME.테이블명 테이블 스페이스를 확장할 수 없습니다.

이번에 발생한 에러의 종류
ORA-01691: USERNAME.SYS_LOB4314013????? 테이블 스페이스를 확장할 수 없습니다.

어떤 테이블에서 공간이 부족한지 보여주지만, 이번에는 만든적도 없는 테이블에서 공간이 부족하다고 하니 왜 저런 문제가 발생했는지 궁금해졌다

Error 파악

원인을 정확히 알기 위해서는 TableSpace부터 무엇인지 알아보자

TableSpace

저도 깊게 이해한게 아니니 짧고 간략하게 설명하고, 정확한 설명은 글 아래 출처에서 보시는게 좋습니다.

Database를 데이터 구조는 아래와 같이 되어있습니다.
Database > TableSpace > Segments > Extents > Blocks

Blocks은 데이터를 저장하는 가장 작은 단위
Extents는 여러 Blocks이 모여 만들어진 저장 단위 (연속된 공간으로 만들어진 공간이 아니라 여러 블록 구조가 합쳐진 개념)
Segments는 여러Extents가 모여진 단위 + 인덱스 세그먼스 + 임시 세그먼트
TableSpaceSegments + (SYSTEM + UNDO + TEMP) Space 에 대한 정보

TableSpace는 위와 같이 가지고 있고, 데이터를 실제 물리적인 경로에 저장을 하고 있다. (dbf 확장자)

TableSpace과 Table의 연관성

SELECT * FROM dba_data_files;

위 쿼리를 조회해 보면 FILE NAMETable Space가 저장된 경로가 보이고, 나머지 컬럼을 통해 필요한 정보를 얻을 수 있다.

SELECT * FROM dba_segments WHERE SEGMENT_NAME = '테이블명';

위 쿼리는 테이블에 대한 Segments 정보를 조회할 수 있다.
현재 몇개의 Extents, Blocks가 할당되었는지, 어떤 TableSpace 파일(물리 경로)을 보고 있는지도 확인이 가능합니다.

CLOB 데이터 구조

로그를 찾아보니 A테이블에 INSERT 할 때 문제가 발생하고 있었다.
그렇지만 A테이블 공간은 충분한 걸로 보이는데??

LOB 데이터는 테이블에 같이 저장되는 것이 아니라 SYS_LOB123136531?????dba_segments 테이블에 따로 관리가 되고 있었다.

문제가 발생한 테이블이 아닌 CLOB을 따로 관리하고 있는곳에서 공간이 부족하다고 에러가 발생한 것

SELECT * FROM dba_lobs WHERE TABLE_NAME = '테이블명';

조회 시 테이블에 사용되는 LOBSegments를 알 수 있다.

여기가 포인트

테이블스페이스 공간이 부족하니 dbf 파일을 생성해 문제는 해결했지만
문제 있는 Table은 예전에 만든 dbf파일 경로를 보고 있는데....?
CLOB 컬럼은 다른 테이블에서도 사용하고 있는데 왜 해당 테이블만???

dba_segments 테이블을 조회하니 예전에 생성한 dbf을 보고있었다
해당 파일은 이미 용량이 꽉 찼는데, 문제는 왜 해결된걸까

SELECT * FROM DBA_EXTENTS WHERE SEGMENT_NAME = '테이블명';

Segments는 여러 Extents가 모여진 단위라고 했다.
저장할 공간이 부족하면 새로운 Segments를 할당받는게 아닌 새로운 Extents를 할당받는 것
위 쿼리를 조회해보면 Extents가 저장되고 있는 dbf파일을 알 수 있었다.

새롭게 생성한 파일의 경로가 생겨난걸 확인할 수 있었다.

CLOB 컬럼은 테이블 별로 Segments가 생겨난다고 한다
다른 테이블은 이미 할당 받는 Extents 공간에 여유가 있어서 문제가 발행하지 않았지만 새롭게 할당을 받을려면 동일한 문제가 발생했을 것 같다.

출처

데이터 블록 출처
테이블 스페이스 출처
논리적/물리적 구조의 이해
테이블 컬럼 설명

profile
LEVEL UP

0개의 댓글