oracle表空间可以自动添加smallfile数据文件吗?

时间:2011-03-02 11:57:58

标签: oracle tablespace

使用Oracle托管文件我可以像这样创建我的表空间:

CREATE TABLESPACE users;

它将自动扩展,但据我所知,smallfile数据文件具有最大大小。所以我需要这样做:

ALTER TABLESPACE users ADD DATAFILE;
ALTER TABLESPACE users ADD DATAFILE;
ALTER TABLESPACE users ADD DATAFILE;

只是想知道是否有办法让oracle在尝试自动扩展超过其最大可能大小时自动添加另一个数据文件?

4 个答案:

答案 0 :(得分:1)

Oracle没有实际限制

ALTER DATABASE DATAFILE<'data_file_name'| data_file_number> AUTOEXTEND K | M | G | T | P | E. MAXSIZE< UNLIMITED | K | M | G | T | P | E&GT ;;

操作系统或操作系统操作员可以阻止您和数据库。 比你可以编写的工作,可以在使用百分比后自动将新文件添加到表空间。像这样的东西(伪代码)。

SELECT tablespace_name,maxbytes,bytes INTO v_tbs_info FROM dba_data_files;

FOR tbs_inf IN v_tbs_info LOOP
  IF tbs_inf.bytes/tbs_inf.maxbytes > 0.99
  excecute immediate 'ALTER TABLESPACE '|| tbs_inf.tablespcae_name ||' ADD DATAFILE SIZE 1M aUTOEXTEND ON NEXT 10M MAXSIZE 10G';
END LOOP;

当然你不应该写这份工作并使用它。您应该提供数据占用的空间量,并将适当数量的文件分配给表空间。

答案 1 :(得分:0)

确定我们可以,但为什么要这样呢? 通常有限制的理由。对于数据文件的最大大小,我们可以创建一个扩展文件大小限制的bigfile表空间。这会对备份/恢复产生影响,但是从11gR2开始,我们可以并行备份这些文件,其中bigfiles被切成块并分布在各种通道上。

另外,一个问题是什么是最大可能的尺寸?它是由文件系统,ASM,数据库支持的大小,还是由dba设置的maxsize?

罗纳德。

答案 2 :(得分:0)

oracle没有内置的方法来自动添加数据文件。

当心:"无限制" oracle中的运算符实际上并不是无限的。它只意味着无限制地达到oracle对数据文件大小的硬性限制,这取决于您的select * from sometable where column1 = 'somevalue' or selet * from sometable where column2 = 'someothervalue' and column1 > 'somevalue'; 参数。默认数据库将具有8k块大小并使用smallfile表空间,这意味着数据文件不会超过32GB。

一旦数据文件达到硬限制,即使设置了db_block_size,您仍然需要手动添加新的数据文件。

有关详细信息,请参阅此帖中的表格:

https://community.oracle.com/message/1900237#1900237

答案 3 :(得分:-1)

我非常恼火,ORACLE没有自动添加新文件 - 所以我修复了它。 在我的博客中找到解决方案: http://www.ora-00000.com/2013/02/21/ora-30036-real-automatic-datafile-management/