- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
导数据遇见ORA-01555错误
昨天在对CALLCENTER系统的主库导入CUSTOMER数据的时候,遇到了ORA-01555
错误。
软件环境:两台DB都是oracle9.2.0.4
导入工具使用:powercenter8.6
主库是redhat? linux4.7
备库是windows2003(32位)环境
在导入过程中,报:
ORA-01555: 快照过旧: 回退段号 1 在名称为 _SYSSMU1$ 过小
错误。
1555错误产生的原因,就需要知道 ORACLE的两个特性:一致性读(Consistent Get)和延迟块清除(Delayed Block Cleanout)。此外,还要知道关于回滚段的一些配置参数:
相关参数
先看下Oracle中关于UNDO有哪些配置参数:
SQL show parameter undo
NAME TYPE VALUE
undo_management string MANUAL
undo_retention integer 900
undo_suppress_errors Boolean FALSE
undo_tablespace string UNDOTBS1
undo_management
回滚段的 管理方式。值可以为MANUAL/AUTO。9i中默认是MANUAL, 10g中默认是AUTO。
从9i后,回滚段就以表空间的形式管理,并且支持系统自动管理回滚段。一个回滚表空间上可以创建多个回滚段,一个 数据库可以创建多个回滚表空间。但是,一个实例(Instance)只能使用一个回滚表空间。
如果undo_management设置为MANUAL,就是手动创建回滚段:
SQL create rollback segment undo1 tablespace UNDOTBS1;
如果设置为AUTO,Oracle就自动管理回滚段的创建,而手工创建就会失败。
undo_retention
这个参数设置回滚段中的被提交或回滚的数据强制保留时间,单位是秒。请注意,这个参数和1555错误有非常大的关系。但是,需要提醒的是,并不是回滚段中的数据超过这个时间以后就会被清除掉,而是等到后面事务产生的回滚数据覆盖掉“超期”数据。所以这就是为什么我们往往看到系统的回滚表空间占有率始终是100%的原因了。
undo_suppress_errors
是否报与回滚段有关的错误。如果为FALSE,就不会产生与回滚段有关的错误。但是,请注意,并不是不会发生回滚段错误,而只是屏蔽错误信息,错误发生了就会存在滴。在10g中,这个参数是隐含参数。
undo_tablespace
为每个实例制定的唯一当前使用的回滚段表空间。
面我们就模拟一下1555错误发生的情况:
首先建立测试环境。由于我们只是要模拟1555错误的发生,所以需要建立一个小的回滚表空间,并且设置undo_retention时间为1(秒),以便回滚数据尽快被覆盖(呵呵,要防止1555错误发生,这就一定要避免的)。
CREATE UNDO TABLESPACE rbs_tsDATAFILE rbs_ts2.dbf SIZE10MAUTOEXTEND OFF;?
altersystem set undo_retention=1 scope=spfile;
altersystem set undo_management=auto scope=spfile;
altersystem set undo_tablespace=rbs_tsscope=spfile;
startup force
alter tablespace rbs_tsonline;
create table demo.t_dualas select * from dual;?
insert intot_dual values(1);?
commit;?
一致性读导致的1555错误
开始读取表。
SQL
SQLvar cl refcursor
SQL begin
2open:clfor select * from demo.t_multiver;
3end;
4/
PL/SQL procedure successfully completed.
SQL
更新表数据,产生回滚信息。
SQL updated mo.t_multiver set b = 111 where a = 1;
1 row updated.
SQL commit;
Commit complete.
运行大批其他事务,充满所有回滚段,以致覆盖上面的回滚信息。回滚段可以通
您可能关注的文档
最近下载
- 小学道德与法治(学生读本)高年级:办好中国的事情关键在党三 打铁必须自身硬 -教学课件.pptx VIP
- 主播规章制度.docx
- 液压电梯液压及电控系统的设计与维护.doc VIP
- 山西省五台县东腰庄马沟金矿有限公司金矿资源开发利用、地质环境保护与土地复垦方案.pdf
- 英皇幼儿园省一级幼儿园评估自评报告.doc
- 2021-2022学年北京市西城区人教版五年级下册期末测试数学试卷(原卷及解析版汇编).pdf VIP
- 银行业自律公约自查报告.doc
- DB34∕T 2182-2014 水利工程白蚁防治技术规程.docx
- 剧毒、易制毒、易制爆化学品试剂防盗、防抢、防破坏以及系统故障应急处置预案.pdf
- 运动损伤与康复-全套PPT课件.pptx
文档评论(0)