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

How to add the datafile to tablespace which is already full?

考虑初始 Tablespace 声明为

CREATE TABLESPACE tbs_perm_02
  DATAFILE 'tbs_perm_02.dat' 
    SIZE 10M
    REUSE
    AUTOEXTEND ON NEXT 10M MAXSIZE 200M;

声明的 space 已用完,我需要添加更多数据文件。

作为

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

这里的重点是table地方已经用完了它最初声明的10M加200M的价值。但是当我们用扩展数据文件改变 tablespace 时,会成功吗?或者在这种情况下是否有另一种扩展或更改的方法。

这将不起作用,因为您添加的数据文件与第一个数据文件同名。 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;

数据文件可以是文件系统或 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;