2

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

CREATE TABLESPACE users;

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

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

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

4

3 回答 3

1

Oracle 没有真正的限制

ALTER DATABASE DATAFILE <'data_file_name' | data_file_number> 自动扩展 K|M|G|T|P|E MAXSIZE <无限| K|M|G|T|P|E>;

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

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;

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

于 2011-03-02T14:05:05.990 回答
1

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

请注意:oracle 中的“无限”运算符实际上并不是无限的。它仅意味着不受 oracle 对数据文件大小的硬上限的限制,这取决于您的db_block_size参数。默认数据库将具有 8k 块大小并使用小文件表空间,这意味着数据文件不会超过 32GB。

一旦数据文件达到硬限制,即使您已经AUTOEXTEND MAXSIZE UNLIMITED设置,您仍然必须手动添加新的数据文件。

有关更多信息,请参阅本文中的表格:

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

于 2016-01-27T14:36:08.340 回答
0

我们当然可以,但我们为什么要这样做?通常有限制的原因。对于数据文件的最大大小,我们可以创建一个大文件表空间,稍微扩大文件大小限制。这对备份/恢复有影响,但从 11gR2 开始,我们可以并行备份这些文件,其中大文件被分割成块并分布在各个通道上。

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

罗纳德。

于 2011-03-02T13:55:09.170 回答