ORA-03233: 无法扩展表 SIS_HIS_PERFEVAL.TB_JX_INDEX_HIS 的子分区 PART_9_SUB_1 (通过 1024, 在表空间 SIS_HIS_PERFEVAL...

问题:
某一表空间,就一个表,是一个分区表,当数据文件达到35G左右时,就无法写入数据了,磁盘空间也没满,抛出:
ORA-03233: 无法扩展表 SIS_HIS_PERFEVAL.TB_JX_INDEX_HIS 的子分区 PART_9_SUB_1 (通过 1024, 在表空间 SIS_HIS_PERFEVAL 中)
[@more@]
解决方案:
SQL> alter tablespace SIS_HIS_PERFEVAL add datafile '+DATADG/ora11gr2/datafile/SIS_HIS_PERFEVAL2.dbf' SIZE 1M AUTOEXTEND ON;
Tablespace altered.
思考:
1、获取创建表空间的sql语句
SQL>set long 10000 (在sqlplus设置变量,不然显示的内容不全)
SQL> select dbms_metadata.get_ddl('TABLESPACE','SYSTEM') from dual;

DBMS_METADATA.GET_DDL('TABLESPACE','SYSTEM')
--------------------------------------------------------------------------------
CREATE TABLESPACE "SYSTEM" DATAFILE
'E:PROGRAMFILESORACLEPRODUCT10.2.0ORADATAMZLSYSTEM01.DBF' SIZE 314572800
AUTOEXTEND ON NEXT 10485760 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT MANUAL
ALTER DATABASE DATAFILE
'E:PROGRAMFILESORACLEPRODUCT10.2.0ORADATAMZLSYSTEM01.DBF' RESIZE 503316

发现创建的数据文件大小都不能大于32GB?

默认创建数据库有5个表空间:
系统表空间system,默认的数据文件为480MB
辅助表空间sysaux,默认的数据库文件为240MB
回滚表空间undotbs1,默认的数据库文件为25MB
临时表空间temp,默认的数据库文件为,20MB
用户默认使用的表空间:users,默认的数据库文件为5M

2、查看各表空间的数据文件的位置、大小
SQL> select file_name,tablespace_name,bytes/1024/1024 "bytes MB",
2 autoextensible,maxbytes/1024/1024 "maxbytes MB" from dba_data_files;

临时表空间的位置、大小
SQL> select file_name,tablespace_name,bytes/1024/1024 "bytes MB",
2 autoextensible,maxbytes/1024/1024 "maxbytes MB" from dba_temp_files;

3、创建一个自动扩展的表空间
SQL> l
1 create tablespace test
2 datafile 'E:PROGRAMFILESORACLEPRODUCT10.2.0ORADATAMZLtest.dbf'
3* size 2M autoextend on
SQL> /

表空间已创建。

SQL> select dbms_metadata.get_ddl('TABLESPACE','TEST') from dual;

DBMS_METADATA.GET_DDL('TABLESPACE','TEST')
--------------------------------------------------------------------------------

CREATE TABLESPACE "TEST" DATAFILE
'E:PROGRAMFILESORACLEPRODUCT10.2.0ORADATAMZLTEST.DBF' SIZE 2097152
AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO

刚才创建了一个自动扩展的表空间:查看只能最大MAXSIZE 32767M,大约32GB(31.999GB),
原来数据库的db_block_size为8192字节,也就是8KB,但为什么最大只能小于32GB。
Oracle中每个small file数据文件最多只能包含2的22次方 - 1 个数据块,所以数据库最大为8KB*(2^22-1)=32GB-8KB
所以数据库的db_block_size为8KB时,数据文件的最大值为32GB-8KB,
如果Oracle的db_block_size为16KB时,数据文件的最大值为64GB-16KB(16KB*(2^22-1))


注:查看数据库表空间的各参数:数据块大小、初始化区大小、递增区大小、状态、区管理、段管理、是否大文件
select * from dba_tablespaces;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24870090/viewspace-1058994/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24870090/viewspace-1058994/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值