更改表空间增量大小

时间:2017-05-27 22:27:15

标签: oracle tablespace

我们的一个数据文件最高可达32G。因此,我们在该表空间中创建了第二个数据文件。

但是,我们忘了给出默认的NEXT大小。因此,文件1的NEXT为50MB。文件2的NEXT为8k。

这些都是本地管理的,因此,我猜测唯一要做的就是创建一个新的表空间,然后移动所有对象。还是有其他解决方案吗?一个问题:我如何移动TYPES?我是否需要放弃&再创造那些?这将使大量的事情失效.......

有什么建议吗?我可以隔离该数据文件中的对象吗?

感谢你。

1 个答案:

答案 0 :(得分:2)

您应该首先咨询Oracle documentation。你要求的是一个直截了当的single-SQL-command-involving action。您错过的关键知识是您不会更改表空间alter a datafile

概念证明

首先,我只是查询我的example表空间的块大小,因为我将使用该值来证明我的数据文件已被正确更改。

SQL> select tablespace_name, block_size
SQL> from dba_tablespaces
SQL> where tablespace_name = 'EXAMPLE';

TABLESPACE_NAME                BLOCK_SIZE
------------------------------ ----------
EXAMPLE                              8192

好的,tbs使用的块大小为8KB。

现在,我的example数据文件是什么样的?

SQL> select file_name, file_id, tablespace_name, autoextensible, increment_by * &example_tbs_block_size_b / 1048576 as increment_by_mbytes
SQL> from dba_data_files
SQL> where tablespace_name = 'EXAMPLE';

FILE_NAME                          FILE_ID    TABLESPACE_NAME AUTOEXTENSIBLE INCREMENT_BY_MBYTES
---------------------------------- ---------- --------------- -------------- -------------------
D:\ORA\MY_CDB\MY_PDB\EXAMPLE01.DBF         10 EXAMPLE         YES                              1

好的,我只看到一个自动扩展为1MB的数据文件。

现在改变数据文件......

SQL> alter database datafile 10 autoextend on next &target_autoextend maxsize unlimited;

Database altered

再次重新检查tbs数据文件

SQL> select file_name, file_id, tablespace_name, autoextensible, increment_by * &example_tbs_block_size_b / 1048576 as increment_by_mbytes
SQL> from dba_data_files
SQL> where tablespace_name = 'EXAMPLE';

FILE_NAME                          FILE_ID    TABLESPACE_NAME AUTOEXTENSIBLE INCREMENT_BY_MBYTES
---------------------------------- ---------- --------------- -------------- -------------------
D:\ORA\MY_CDB\MY_PDB\EXAMPLE01.DBF         10 EXAMPLE         YES                              8

而且,瞧,我有一个8MB的自动扩展。