Oracle 表空间数据文件容量与 db_block_size 设置有关,这个参数在创建数据库实例的时候就已经指定了。
可以使用如下命令查看 Oracle 的数据块大小:
VALUE
--------------------------------------------------------------
8192
一般情况下,db_block_size 的大小是 8K。而 Oracle 的物理文件最大只允许 4194304 个数据块。
所以,4194304*8=33554432(单位是K)=32G
也就是说,即使创建表空间时设置了“autoextend on next 50M maxsize unlimited”,其最大空间也不会超过 32G。
当数据文件超过 32G 时,将无法继续写入数据,从而报“ORA-01653: 表 xxx 无法通过 8192 (在表空间 xxx 中) 扩展”错误。
为了演示方便,我这里创建了一个比较小的表空间(只有 3M):
create tablespace blog
datafile 'F:\DB_Data\blog.dbf'
size 3M;
create user blog identified by p2021#DBA
default tablespace blog;
grant connect, resource, exp_full_database, imp_full_database to blog;
然后,添加数据进去:
很快,表空间就被撑爆了。
接下来,使用两种方法给表空间增加数据文件,扩展表空间。
方法一:使用命令
add datafile 'F:\DB_Data\blog_new.dbf'
size 50M
autoextend on
next 50M maxsize unlimited;
从 Toad 上可以看到表空间已经扩展到 53M,而且最大是 32G 了:
方法二:使用 Toad 可视化客户端工具
点击添加数据文件按钮:
指定一个数据文件名,初始大小同样为 50M,超过时按每 50M 大小进行自动扩展:
可以看到,跟刚才使用命令的结果是一样的:
现在表空间已经扩展到 103M,而且最大是 64G 了:
经测试,使用均正常:
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.