【问题标题】:How to add the datafile to tablespace which is already full?如何将数据文件添加到已经满的表空间?
【发布时间】:2017-04-28 01:33:03
【问题描述】:

考虑声明为的初始表空间

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加200M的值。但是当我们用扩展的数据文件改变表空间时,会成功吗?或者在这种情况下是否有另一种方式来扩展或改变。

【问题讨论】:

  • 在我的回答中,更改数据文件大小的语句是错误的。我修好了

标签: oracle oracle12c


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    ASM 中add datafile 的步骤:

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

    显示参数db_create_filedest;

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

    Maxsize: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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2019-03-07
      • 2016-08-17
      • 2019-05-22
      • 2021-09-02
      • 2016-01-16
      • 1970-01-01
      相关资源
      最近更新 更多