programing

기존 테이블스페이스의 MAXSIZE를 결정하는 방법

iphone6s 2023. 9. 9. 09:10
반응형

기존 테이블스페이스의 MAXSIZE를 결정하는 방법

제가 판단해야 할 것은MAXSIZE생성시 테이블스페이스로 설정되어 있던 것 (오라클 10g)

제가 뭔가 명백한 것을 놓치고 있다고 확신합니다만, 그 정보는 즉시 정보에 나타나지 않습니다.DBA_TABLESPACES.

11g에서는 이 쿼리가 답을 알려주겠지만 10g에 있고 유용한 열이 누락되어 있다는 것을 알게 되었습니다.

select tablespace_name, max_size 
from dba_tablespaces
/

10g 안에 당신은 해야할 것입니다.

select tablespace_name
       , initial_extent + (next_extent * (max_extents-1)) as calc_max_size
from dba_tablespaces 
/

기본 최대 크기입니다.실제로 테이블스페이스에 할당된 데이터 파일의 크기에 따라 제한을 받게 되며, 이는 이론적 최대치보다 훨씬 적을 수 있습니다.

편집하다

@폴의 발언은 타당합니다.제 생각에 정확한 답은 테이블 스페이스의 최대 크기는 무의미하고, 정말로 거의 허구적인 개념이라고 말하는 것입니다.테이블스페이스의 크기는 실제로 해당 데이터 파일에 의해 결정되며 잠재적인 최대 크기는 할당할 수 있는 최대 데이터 파일 수에 의해 결정됩니다.SQL Reference에서는 이 주제에 대해 다음과 같이 말합니다.

  • 빅 파일 테이블 공간에는 최대 약 40억(232개)의 블록을 포함할 수 있는 데이터 파일 또는 임시 파일이 하나만 포함됩니다.단일 데이터 파일 또는 임시 파일의 최대 크기는 32K 블록이 있는 테이블 공간의 경우 128TB(TB)이고 8K 블록이 있는 테이블 공간의 경우 32TB입니다.
  • 작은 파일 테이블 공간은 기존 Oracle 테이블 공간으로, 1022개의 데이터 파일 또는 임시 파일을 포함할 수 있으며, 각 파일은 약 400만 개([2에서 22]의 힘)의 블록을 포함할 수 있습니다.

그래서 아마도 이것이 더 유용한 질문일 것입니다.

select tablespace_name
       , count(*) as no_of_data_files
       , sum(maxblocks) as max_size
from dba_data_files
group by tablespace_name
/

...현재 할당된 데이터 파일에만 적용된다는 점에 유의해야 합니다.

편집2

MAXSIZE는 테이블스페이스가 아닌 데이터 파일에 적용됩니다.그렇기 때문에 MAXSIZE 키워드는 CREATE TABLESPACE가 아닌 filespec 절에 대한 설명서에서 논의됩니다.

이 모든 것은 데이터 파일이 자동 확장 가능한지 여부에 달려 있습니다.

따라서 DBA로부터 올바른 정보를 얻을 수 있습니다.DATA_FILES:

  • AUTOEXTENSIVEL이 YES로 설정되어 있으면 MAXBYTE의 총 합계가 필요합니다.

  • AUTOEXTIBLE이 NO로 설정되어 있으면 바이트의 총합이 필요합니다.

DBA에서 MAX_SIZE_TABLESPACE는 테이블스페이스 자체의 최대 크기와는 무관합니다.Oracle 문서에 따르면 다음과 같습니다.

"세그먼트의 기본 최대 크기"

따라서 올바른 질문은 다음과 같습니다.

select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from   DBA_DATA_FILES
group  by TABLESPACE_NAME;

이것은 11g에서 테스트가 완료되었지만 10g에서도 작동할 것입니다.각 테이블스페이스의 최대 크기를 바이트 단위로 제공합니다.

TEMP 테이블스페이스에 대해서도 마찬가지입니다.

select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from   DBA_TEMP_FILES
group  by TABLESPACE_NAME;

최대 크기는 dba_data_files 속성입니다.

dba_data_files에서 tablespace_name, maxbytes/1024/1024 MAX_SIZE 선택;

select tablespace_name, round(sum(bytes)/1024/1024, 2) as free_space from dba_free_space group by tablespace_name;

언급URL : https://stackoverflow.com/questions/2364024/how-to-determine-maxsize-of-existing-tablespace

반응형