본문 바로가기
Oracle/이벤트

ora-01686: max # files (1023) reached for the tablespace

by 취미툰 2023. 4. 7.
반응형
01686, 00000, "max # files (%s) reached for the tablespace %s"
// *Cause:  The number of files for a given tablespace has reached its maximum
//          value
// *Action: Resize existing files in the tablespace, or partition the objects
//          among multiple tablespaces, or move some objects to a different
//          tablespace.

원인 : 테이블스페이스 당 허용된 데이터파일의 갯수를 넘어서서 나는 에러.

 

오라클 매뉴얼에 따르면, Maximum per tablespace 는 Operating system dependent; usually 1022라고 나옵니다.

1022개가 일반적입니다.

출처 :

https://docs.oracle.com/database/121/REFRN/GUID-939CB455-783E-458A-A2E8-81172B990FE9.htm#REFRN0042

 

Physical Database Limits

Bigfile Tablespaces Number of blocks A bigfile tablespace contains only one datafile or tempfile, which can contain up to approximately 4 billion ( 232 ) blocks. The maximum size of the single datafile or tempfile is 128 terabytes (TB) for a tablespace wit

docs.oracle.com

 

저는 이때까지 db_files라는 db 파라미터와 controlfile 내에 있는 maxdatafiles의 갯수가 중요한 줄 알았는데, 그거와 별개로 한 테이블스페이스 당 데이터파일의 갯수가 제한이 있다는 것이 새로 알게된 사실입니다. 문제가 발생한 DB에서는 db_files는 10000개, maxdatafiles는 32767개입니다.

select name,value,description from v$parameter where name like '%db_files%';


NAME      VALUE   DESCRIPTION               
--------- ------- --------------------------
db_files  10000   max allowable # db files

 

controlfile의 정보 
...
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DBXXXXX" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 1024
    MAXLOGMEMBERS 5
    MAXDATAFILES 32767
    MAXINSTANCES 32
    MAXLOGHISTORY 33012
...

해결 : 데이터파일을 추가하지 않고 테이블 삭제 or reorg하여 용량을 확보하거나, 다른 테이블스페이스를 사용합니다.

 

 

 

반응형

댓글