加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle修改表空间大小

发布时间:2020-12-12 16:42:32 所属栏目:百科 来源:网络整理
导读:问题描述 在向orale数据库导入数据的时候报 ORA-01658: 无法为表空间 XXX中的段创建 INITIAL 区错误。 这是由于表空间对应的数据文件中数据量超过Oracle在创建表空间的时候数据文件初始化大小值,当数据量达到这个值,再向数据库中导入数据就会报错。 解决方案
  1. 问题描述
    在向orale数据库导入数据的时候报 ORA-01658: 无法为表空间 XXX中的段创建 INITIAL 区错误。
    这是由于表空间对应的数据文件中数据量超过Oracle在创建表空间的时候数据文件初始化大小值,当数据量达到这个值,再向数据库中导入数据就会报错。
  2. 解决方案
    解决办法就是扩展表空间,可以选择将表容量扩大,比如扩展到5000MB,或者当表空间不够时每次自动增加一定的容量,如每次自增200M。
--查看表空间大小
SELECT FILE_NAME as 数据文件,TABLESPACE_NAME as 表空间名称,AUTOEXTENSIBLE as 自动扩展,STATUS as 状态,MAXBYTES as 可扩展最大值,USER_BYTES as 已使用大小,INCREMENT_BY as 自动扩展增量 FROM dba_data_files
--扩展空间,将数据文件扩大至5000MB
 alter database datafile 'D:DataBaseTest.DBF' resize 5000m;
--自动增长,表空间不足时增加200MB,最大扩展5000MB
 alter database datafile 'D:DataBaseTest.DBF' autoextend on next 200m maxsize 5000m;
--扩展无限大空间
alter database DATAFILE 'D:DataBaseTest.DBF' autoextend on maxsize unlimited;
  • 注意表空间大小限制
    表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定)
    即:
    4k最大表空间为:16384M
    8K最大表空间为:32768M
    16k最大表空间为:65536M
    32K最大表空间为:131072M
    64k最大表空间为:262144M

所以将maxsize设置为unlimited也并非能无限扩展,还受限于区块大小,即blocksize大小,如一般blocksize默认8k,数据文件大小最大也只能扩展到32GB。当然可以设置bigfile(大文件表空间),8k的blocksize表空间文件理论上最大可以扩展32TB,但是实际上受操作系统的文件系统限制。使用大文件表空间(bigfile tablespace)可以大幅度增强Oracle数据库的存储能力,简化数据库管理工作。与此同时,付出的代价是增加备份与恢复的时间。如果是中小型项目,数据量在TB级以内,建议使用小文件表空间。一个小文件表空间(smallfile tablespace)最多可以包含1022个数据文件(datafile)。详细可看Oracle物理文件限制大小表格Physical Database Limits
添加表空间数据文件sql脚本如下:

--增加数据文件,TestTablespace是这里测试使用的表空间名称
   alter tablespace TestTablespace add datafile 'D:DataBaseTest2.DBF' size 1024m;

——————————————————————————————————————————
参考源:

Oracle11gR2Physical Database Limits

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读