我需要确定 MAXSIZE
在创建表空间时为其设置(Oracle 10g)
我确信我遗漏了一些明显的东西,但信息并没有立即显示在信息中 DBA_TABLESPACES
。
我需要确定 MAXSIZE
在创建表空间时为其设置(Oracle 10g)
我确信我遗漏了一些明显的东西,但信息并没有立即显示在信息中 DBA_TABLESPACES
。
在11g这个查询会给你答案,但我注意到你在10g和唉 缺少有用的列。
select tablespace_name, max_size
from dba_tablespaces
/
在10克你将不得不
select tablespace_name
, initial_extent + (next_extent * (max_extents-1)) as calc_max_size
from dba_tablespaces
/
请记住,这是 默认 最大尺寸。实际上,您将受到分配给表空间的数据文件大小的限制,这可能远小于此理论最大值。
编辑
@Paul的评论是恰当的。我想正确的答案是说表空间的最大大小是一个毫无意义的,实际上几乎是虚构的概念。表空间的大小实际上由其数据文件确定,其潜在的最大最大大小由可分配的最大数据文件数决定。该 SQL参考 有这个话题:
所以也许这是一个更有用的查询......
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关键字的原因 filespec子句的文档 而不是在CREATE TABLESPACE下。
在11g这个查询会给你答案,但我注意到你在10g和唉 缺少有用的列。
select tablespace_name, max_size
from dba_tablespaces
/
在10克你将不得不
select tablespace_name
, initial_extent + (next_extent * (max_extents-1)) as calc_max_size
from dba_tablespaces
/
请记住,这是 默认 最大尺寸。实际上,您将受到分配给表空间的数据文件大小的限制,这可能远小于此理论最大值。
编辑
@Paul的评论是恰当的。我想正确的答案是说表空间的最大大小是一个毫无意义的,实际上几乎是虚构的概念。表空间的大小实际上由其数据文件确定,其潜在的最大最大大小由可分配的最大数据文件数决定。该 SQL参考 有这个话题:
所以也许这是一个更有用的查询......
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关键字的原因 filespec子句的文档 而不是在CREATE TABLESPACE下。
这完全取决于数据文件是否可自动扩展。
因此,您可以从DBA_DATA_FILES获取正确的信息:
如果AUTOEXTENSIBLE设置为YES,那么您需要MAXBYTES的总和。
如果AUTOEXTENSIBLE设置为NO,则需要BYTES的总和。
DBA_TABLESPACES中的MAX_SIZE与表空间本身的最大大小无关。根据 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;
Maxsize是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;