使用Oracle托管文件我可以像这样创建我的表空间:
CREATE TABLESPACE users;
它将自动扩展,但据我所知,smallfile数据文件具有最大大小。所以我需要这样做:
ALTER TABLESPACE users ADD DATAFILE;
ALTER TABLESPACE users ADD DATAFILE;
ALTER TABLESPACE users ADD DATAFILE;
只是想知道是否有办法让oracle在尝试自动扩展超过其最大可能大小时自动添加另一个数据文件?
答案 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)
另外,一个问题是什么是最大可能的尺寸?它是由文件系统,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
,您仍然需要手动添加新的数据文件。
有关详细信息,请参阅此帖中的表格:
答案 3 :(得分:-1)
我非常恼火,ORACLE没有自动添加新文件 - 所以我修复了它。 在我的博客中找到解决方案: http://www.ora-00000.com/2013/02/21/ora-30036-real-automatic-datafile-management/