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
  • 1
  • 2
 --扩展空间,将数据文件扩大至5000MB
 alter database datafile 'D:\DataBase\Test.DBF' resize 5000m;
  • 1
  • 2
--自动增长,表空间不足时增加200MB,最大扩展5000MB
 alter database datafile 'D:\DataBase\Test.DBF' autoextend on next 200m maxsize 5000m;  
  • 1
  • 2
--扩展无限大空间
alter database DATAFILE 'D:\DataBase\Test.DBF'  autoextend on maxsize unlimited;  
  • 1
  • 2
  • 3
  • 注意表空间大小限制 
    表空间数据文件容量与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:\DataBase\Test2.DBF' size 1024m;   

猜你喜欢

转载自blog.csdn.net/mzy755423868/article/details/80638349