如何将数据文件添加到已满的表空间?

时间:2017-04-28 01:33:04

标签: oracle oracle12c

考虑声明为

的初始表空间
CREATE TABLESPACE tbs_perm_02
  DATAFILE 'tbs_perm_02.dat' 
    SIZE 10M
    REUSE
    AUTOEXTEND ON NEXT 10M MAXSIZE 200M;

声明的空间已用尽,我需要添加更多数据文件。

作为

ALTER TABLESPACE tbs_perm_02
ADD DATAFILE 'tbs_perm_02.dat'
  SIZE 20M
  AUTOEXTEND ON;

这里的要点是表格位置已经用尽其最初声明的10M Plus 200M值。但是当我们使用扩展数据文件改变表空间时,这会有效吗?或者在这种情况下是否存在另一种扩展或改变的方式。

2 个答案:

答案 0 :(得分:3)

这不起作用,因为您添加的数据文件与第一个数据文件具有相同的名称。 size / autoextend / maxsize - 子句引用数据文件,而不是表空间。因此数据文件已耗尽,而不是表空间。您可以向表空间添加第二个数据文件

ALTER TABLESPACE tbs_perm_02 ADD DATAFILE 'tbs_perm_02_02.dat' 
    SIZE 20M AUTOEXTEND ON NEXT 10M MAXSIZE 200M;

或者您可以更改表空间数据文件的MAXSIZE

ALTER DATABASE DATAFILE 'tbs_perm_02.dat' RESIZE 
    AUTOEXTEND ON  NEXT 10M  MAXSIZE 400M;

答案 1 :(得分:0)

数据文件可以是文件系统或ASM存储的一部分。如果数据库使用的是ASM存储,则需要检查磁盘组名称以添加数据文件。

在ASM中转到add datafile的地方:

检查磁盘组位置以添加数据文件:

显示参数db_create_filedest;

ALTER TABLESPACE tablespace_name ADD DATAFILE 'LOCATION' SIZE 10M AUTOEXTEND ON MAXSIZE 10G;

最大大小:对于8k块大小,最大为32G,对于16K块大小,最大为64G。

要添加位于file_system上的数据文件:

select file_name, bytes/1024/1024/1024,MAXBYTES/1024/1024/1024, autoextensible from dba_data_files where TABLESPACE_NAME='&TABLESPACE_NAME';

ALTER TABLESPACE tablespace_name ADD DATAFILE 'location' SIZE 10M AUTOEXTEND ON MAXSIZE 10G; 

例如:

ALTER TABLESPACE tablespace_name ADD DATAFILE '/U01/ORACLE/DATAFILES/TESTDB/users02.dbf' SIZE 10M AUTOEXTEND ON MAXSIZE 10G;