oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...
一、一次更新或者删除大量数据,这些数据需要保存在undo表空间中(直到提交或回滚后这些undo表空间中的数据才允许被覆盖),如果undo表空间不足,就会报ORA-30036错误。
下面是两种解决办法:
1、增加undo表空间大小,或将undo表空间数据文件设置为自动扩展(如果磁盘空间不足也会导致该问题)
2、批量更新或删除数据
二、数据库中存在大量未提交的事物(更新或删除操作)
解决办法:
1、找出这些占用undo回滚段的操作(使用下面语句)
SELECT s.username,
s.sid,
pr.PID,
s.OSUSER,
s.MACHINE,
s.PROGRAM,
rs.segment_id,
r.usn,
rs.segment_name,
r.rssize/1024/1024,
sq.sql_text
FROM v$transaction t, v$session s, v$rollstat r, dba_rollback_segs rs ,v$sql sq,v$process pr
WHERE s.saddr = t.ses_addr
AND t.xidusn = r.usn
AND rs.segment_id = t.xidusn
AND s.sql_address=sq.address
AND s.sql_hash_value = sq.hash_value
AND s.PADDR=pr.ADDR
ORDER BY t.used_ublk DESC;
USERNAME SID PID OSUSER MACHINE PROGRAM SEGMENT_ID USN SEGMENT_NAME R.RSSIZE/1024/1024 SQL_TEXT
-------- --- --- ------ ------- ------- ---------- --- ------------ ------------------ ------------------------
SCOTT 36 25 oracle rhel5 sqlplus@rhel5 (TNS V1-V3) 14 14 _SYSSMU14_55430887$ 5.3671875 update t set object_name='aaaa' where rownum<10000
SCOTT 30 23 oracle rhel5 sqlplus@rhel5 (TNS V1-V3) 12 12 _SYSSMU12_2606085817$ 2.6171875 update b set object_name='aaaa'
找出导致这些语句未提交的原因(如调用存储过程逻辑问题),进行处理
三、在使用数据泵导入数据时,如果数据中存在大量约束和索引,导入数据时维护索引会产生大量undo数据
Import datapump will perform index maintenance and this can increase undo usage especially if there is other DML occurring on the database。
解决办法:导入数据时使用下面两个参数排除约束和索引,导入数据成功后再创建相应的约束和索引:
EXCLUDE=CONSTRAINT
EXCLUDE=INDEX
备注:
关于undo表空间的大小,可以根据下面的计算做一个预算
1.计算业务高峰期每秒产生undo数据块的个数:
select max(undoblks / ((end_time - begin_time)*24*3600)) from v$undostat;
2.得到undo数据块在undo表空间中可以保留的最长时间
show parameter undo_retention
3.得到数据块大小
show parameter db_block;
4.将以上三者的数据相乘就是所需undo表空间的大小数。
查看undo数据块的历史使用情况(每10分钟使用的数据块数量)
SQL> select begin_time,end_time,undoblks from v$undostat;
16-MAY-16 16-MAY-16 827
16-MAY-16 16-MAY-16 1065
16-MAY-16 16-MAY-16 23
16-MAY-16 16-MAY-16 2279
16-MAY-16 16-MAY-16 8665
16-MAY-16 16-MAY-16 3245
16-MAY-16 16-MAY-16 1011
......
......
......
查看正在运行的事物所需要的undo数据块
SQL> select addr,used_ublk from v$transaction;
ADDR USED_UBLK
---------------- ----------
000000007DC55940 296
000000007DC5F108 580
查看UNDO表空间占用情况
SQL> select tablespace_name,status,round(sum(bytes)/1024/1024,2) MB,count(*) extent_count from dba_undo_extents group by tablespace_name,status order by tablespace_name,status;
TABLESPACE_NAME STATUS MB EXTENT_COUNT
------------------------------ --------- ---------- ------------
UNDOTBS1 ACTIVE 10.69 36
UNDOTBS1 EXPIRED .5 8
UNDOTBS1 UNEXPIRED 72.81 112
UNDOTBS2 EXPIRED 2.94 32
UNDOTBS2 UNEXPIRED 3.44 10
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30373263/viewspace-2100947/,如需转载,请注明出处,否则将追究法律责任。
oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...相关推荐
- Oracle - ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'
一.原因 有较大的事务量让 Oracle Undo 自动扩展,产生过度占用磁盘空间的情况 有较大事务没有收缩或提交,导致没有足够大的空间来容纳新事务的 Undo 数据 二.分析 ...
- oracle 撤销回退,Oracle 回滚(ROLLBACK)和撤销(UNDO)
五.计算UNDO表空间的大小 计算公式: MAX(undoblks)/600 * MAX(maxquerylen)位于v$undostat * db_block_size位于v$parameter - ...
- Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)
UNDO表空间用于存放UNDO数据,当执行DML操作时,oracle会将这些操作的旧数据写入到UNDO段,以保证可以回滚或者一致读等,而临时表空间主要用来做查询和存放一些缓冲区数据.你听说UNDO也是 ...
- oracle如何添加undo,ORACLE RAC 11G 添加以及删除UNDO表空间
在生产环境上,由于闪存盘的容量有限,现在需要将闪存盘里面的UNDO表空间,替换到非闪存的磁盘里面. 磁盘的使用情况如下: 表空间使用情况如下: RAC两个节点占用将近167G的空间. 操作步骤如下: ...
- oracle创建表空间 扩展表空间文件 修改表空间自动增长
1. 创建表空间 create tablespace SIRM2 datafile 'D:\oracle\product\10.2.0\oradata\orcl\SIRM2.dbf' size 10 ...
- oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息
查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * fr ...
- oracle 给表空间改名,Oracle重命名表空间和删除表空间
在需要的情况下,可以对表空间的名称进行修改.修改表空间的名称,不会影响到表空间中的数据.但不能修改系统表空间system与sysa Oracle重命名表空间和删除表空间 [日期:2015-03-10] ...
- Oracle的SQL基础之用户与表空间
前排提示:数据库对象不理解的,可以查看我的关于数据库对象的博文 1.用户 1.1四个系统默认用户 Oracle的安装完成会产生四个系统默认用户,其级别依次是 sys > system > ...
- oracle创建表不在对应表空间,oracle创建表空间
创建表空间参数详解 语法描述: CREATE [UNDO] TABLESPACE tablespace_name [DATAFILE datefile_spec1 [,datefile_spec2] ...
最新文章
- 卡尔曼滤波——车定位(GPS与车运动方程)
- jenkins内置变量的使用
- 记录 之 跨服务器上传和下载文件
- 视频异常检测算法 python_使用Python进行异常检测
- raft中集群成员变更
- linux可以http安装么,Linux 5下 http的安装
- php字符串如何比较大小写,PHP字符串函数strcmp(二进制安全比较字符串,区分大小写)...
- 【机器学习】机器学习的主要挑战与应对方式
- vue-admin-study1学习总结
- webstorm快捷键大全
- autosar架构_(1)Testing-Autosar架构及模块描述
- 【Django 2021年最新版教程28】前端模板中 时间日期星期格式化
- redis 正则匹配value_Java-19-Redis
- Android手势监听类GestureDetector的使用
- CentOS 桌面版安装配置(以CentOS 7为例)
- 《人人都在说谎:赤裸裸的数据真相》读书笔记1
- 快手上的音乐计算机,快手本地音乐显示只能从电脑导入怎么办
- kmplayer音轨切换(换配音)
- c语言用fun函数求最大公约数,c语言求最大公约数
- Win10踩坑-开机0xc0000225
热门文章
- 你真的懂break和continue吗?这篇文章让你明白
- java实现rsa欧几里得算法求d_RSA算法中利用欧几里得算法求d详细过程
- 三位数除以两位数怎么算竖式_青岛版三年级上册数学5.6三位数除以一位数(最高位商后有余数)微课知识点精讲+练习...
- html邮件和纯文本邮件区别,邮件营销必读系列五--纯文本和HTML邮件类型——哪一种邮件类型更适合你?...
- CTF-杂项题-伪加密
- python3.6里有xhr吗_python – XHR请求URL在尝试解析其内容时不存在
- 部门名称部门结构叠用_金属结构分公司三部门联合开展工会小组活动
- @bean注解和@component注解的区别_通过源码查看 @Component,@Service 等注解是如何被解析的...
- python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条
- c语言getch() 头文件,用getch()需要头文件吗?