千家信息网

ORA-1653 oracle单个数据文件超过最大限制该怎么办

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章将为大家详细讲解有关ORA-1653 oracle单个数据文件超过最大限制该怎么办,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。早上开发反映无
千家信息网最后更新 2025年12月01日ORA-1653 oracle单个数据文件超过最大限制该怎么办

这篇文章将为大家详细讲解有关ORA-1653 oracle单个数据文件超过最大限制该怎么办,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

早上开发反映无法向数据库表中填写日志,提示数据库ORA-1653错误。
查询数据库告警日志,报错如下:
ORA-1653: unable to extend table CMTSMAIN.T0501_LOG by 128 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0501_LOG by 8192 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0502_LOG by 128 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0502_LOG by 8192 in tablespace CMTSMAIN_TS
查询数据库表空间使用率,如下
SQL> select total.tablespace_name,round(total.MB,2) as Total_MB,round(total.MB-free.MB, 2) as Used_MB,round((1-free.MB/total.MB)*100, 2) as Used_Pct from (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_free_space group by tablespace_name) free,(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name) total where free.tablespace_name=total.tablespace_name;
TABLESPACE_NAME TOTAL_MB USED_MB USED_PCT
------------------------------ ---------- ---------- ----------
CMTSMAIN_TS 32757.06 32730 99.92
表空间使用率为99.92%。
查询表空间的数据文件,及自动扩展属性
SQL> select TABLESPACE_NAME, FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
TABLESPACE_NAME FILE_NAME AUT
------------------------------ ---------------------------------------- ---
CMTSMAIN_TS /u01/data/orcl/CMTSMAIN_TS01.dbf YES
此表空间只包含一个数据文件,文件大小已经达到oracle单个数据文件的最大限制。
因此, 添加数据文件
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS02.dbf' size 3G autoextend on;
和研发人员沟通后,此表空间有两张表进行大量数据插入,因此增大数据文件至30G
SQL> alter database datafile '/u01/data/orcl/CMTSMAIN_TS02.dbf' resize 30G;
同时继续增加两个数据文件
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS03.dbf' size 30G autoextend on;
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS04.dbf' size 30G autoextend on;
查看数据库表空间使用率
SQL> select total.tablespace_name,round(total.MB,2) as Total_MB,round(total.MB-free.MB, 2) as Used_MB,round((1-free.MB/total.MB)*100, 2) as Used_Pct from (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_free_space group by tablespace_name) free,(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name) total where free.tablespace_name=total.tablespace_name;
TABLESPACE_NAME TOTAL_MB USED_MB USED_PCT
------------------------------ ---------- ---------- ----------
CMTSMAIN_TS 124917.06 34269 27.43
涉及知识点,单个数据文件大小最大为32G,原理如下
A smallfile tablespace is a traditional Oracle tablespace, which can contain 1022 datafiles or tempfiles, each of which can contain up to approximately 4 million (2^22) blocks.
数据库数据块是大小是8k ,
SQL> show parameter block
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
那么能创建的最大的数据文件大小是:2^22*8K=32G,而单个数据文件已经达到32G了,超过限制了,无法扩展,所以报错。而2^22是由于Oracle的Rowid中使用22位来代表Block号,这22位最多只能代表2^22-1(4194303)个数据块。
又及:为了扩展数据文件的大小,Oracle10g中引入了大文件表空间,在大文件表空间下,Oracle使用32位来代表Block号,也就是说,大文件表空间下每个文件最多可以容纳4G个Block。
那么也就是说当Block_size为8k时,数据文件可以达到32T 。

关于ORA-1653 oracle单个数据文件超过最大限制该怎么办就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 文件 空间 数据库 最大 单个 大小 限制 代表 使用率 知识 查询 怎么办 也就是 也就是说 内容 文章 日志 更多 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 邮件系统网络安全管理措施方案 网络安全宣传周看漫画 网络安全策略研究报告怎么写 护网络安全构建和谐校园 软件开发主持人的主要工作 管理打印服务器实验报告 与网络技术基础相关的软件 数据库从联机制 内蒙古信息化软件开发服务价钱 php主从数据库配置 浙江筱满互联网科技评价 软件开发多久能完成 住房和建设领域专业人才数据库 文明网络安全知识竞赛答案 天天微视系统模式定制软件开发 美国网络安全信息漏洞统计 项目突然连接不上数据库 软件开发流程文档模板 服务器 杀毒软件 供应商网络技术架构 实验室数据管理与分析软件开发 软件开发实施质量指标 敏捷软件开发中外案例 串口服务器死连接怎么解决 统计局网络安全工作重要性 软件开发的法律要求 环球美家网络技术有限公司 新的网络安全零信任安全 plsql数据库连接数查询 滨州服装库存软件开发
0