oracle error 30036,Oracle 数据库 ORA-30036 解决办法

Oracle 数据库 ORA-30036 解决办法

ORA-30036:unable to extend segment by 8 in undo tablespace 'UNDOTBS1'

出现问题原因:

大批量导入某表时 imp 报错如下:Exportfile createdbyEXPORT:V11.02.00via conventional path

importdoneinZHS16GBK charactersetandAL16UTF16 NCHAR characterset

importserver uses WE8MSWIN1252 characterset(possible charset conversion)

.....

IMP-00058:Oracleerror30036encountered

ORA-30036:unable to extend segmentby8inundo tablespace'UNDOTBS1'

IMP-00028:partialimportofprevious table rolled back:814416rows rolled back

IMP-00057:Warning:Dumpfile maynotcontain dataofall partitionsofthistable

Importterminated successfullywithwarnings.

字面意思翻译就是: 无法按 8 扩展字段

首先了解了一下 UNDO 的作用:

1. 什么是还原表空间?

还原表空间即 Undo 表空间, 是 Oracle 特有的概念, Undo 表空间会自动分配 Undo 段, 用来保存事务中 DML( Insert,Update 或 Delete) 语句的 Undo 数据. 在 Oracle9i 前, 管理 Undo 数据只能使用 Rollback Segment. 从 Oracle9i 开始, 管理 Undo 数据不仅可以使用回滚段, 还可以使用 Undo 表空间. 而由于管理里规划回滚段太过复杂, Oracle10g 已经弃用回滚段, 仅使用 Undo 表空间来管理 Undo 数据.

2. 什么是 Undo 数据?

Undo 数据也称回滚数据, 当执行 DML 语句时, 事务操作过程中的数据被称为 Undo 数据, 主要有两个作用:

1, 确保事务一致性: 如果事务发生错误或者用户想要取消数据库操作, 则可以通过 Rollback 回到修改前的值.

2, 提供一致性读: 如表 T 有 100 条记录, 用户 A 在表 T 执行了语句删除掉 10 条记录, 尚未提交, 此时用户 B 执行查询语句, 将返回 100 条记录而不是 90 条.

再来谈一下解决办法:

1, 在原有数据文件中增加扩展容量:alter database datafile'/opt/oracle/oradata/orcl/undotbs01.dbf'resize30G;

(注意:如果原有数据文件大小是30G的话,这个方法就不能用了,因为oralce最大文件只让配置成30G一个数据文件)

2. 新增数据文件 (通用):alter tablespace UNDOTBS1adddatafile'/opt/oracle/oradata/orcl/undotbs01_01.dbf'size30G;

--autoextend onnext1Mmaxsize5000M;// 可选项; 目的是设置文件的自动扩展属性, 从最小 1M 到最大 5000M

3. 如果有需求要创建有多个 undotbs 表空间, 可以定时检查 undo 表空间, 并进行切换:alter systemsetundo_tablespace=undotbs02;

(注意undotbs02需要提前新建,并设置相应的数据文件大小即可)

来源: http://www.linuxidc.com/Linux/2018-09/154489.htm

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值