当前位置: 首页 > 图文教程 > 数据库 > Oracle > ORA-01562 和 ORA-01628 问题解决

Oracle
Oracle数据库集复制方法浅议
Oracle 数据表分区的策略
Oracle收购TimesTen 提高数据库软件性能
Oracle中大批量删除数据的方法
一个oracle指令的好网站
ORACLE数据库空间整理心得
如何Shrink Undo表空间,释放过度占用的空间
Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理
收集的ORACLE函数大全
PL/SQL Number数字类型函数
PL/SQL 日期时间类型函数及运算
PL/SQL 类型格式转换
Oracle关于时间/日期的操作
PL/SQL数据类型及操作符
PL/SQL number型数据
ORACLE 常用的SQL语法和数据对象
如何保持Oracle数据库的优良性能
Oracle轻松取得建表和索引的DDL语句
重新编译PLSQL中的无效对象或者指定的对象 的方法
在OracleE数据库的字段上建立索引的方法

Oracle 中的 ORA-01562 和 ORA-01628 问题解决


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 140 ::
收藏到网摘: n/a

    执行一对帐程序,老执行到一半的时候就出错,作者还没有把oracle的error打印出来,只是打印了他自己能看得懂的错误提示,经过修改代码,把oracle错误,put_line出来后,发现是

ORA-01562: failed to extend rollback segment number 12
ORA-01628: max # extents (505) reached for rollback segment RBS12


    看来是回滚段的maxtxtents太小了,系统有20多个回滚段,为了减少类似错误的发生,设置一下:

    给回滚段表空间增加数据文件,并设置大回滚段apprbs的maxextents值为无限大:
$ sqlplus '/as sysdba'
SQL> alter tablespace rbs add datafile '/opt/oracle/db02/oradata/ORCL/rbs02.dbf' size 8192m autoextend on next 10m maxsize unlimited;
SQL> alter rollback segment apprbs storage (maxextents unlimited);

    单独执行大sql前,先设置交易使用此大回滚段:
SQL> set transaction use rollback segment apprbs;

    在存储过程中执行大sql前,设置交易使用此大回滚段:
begin
    dbms_transaction.use_rollback_segment('apprbs');
    <big sql;>
    commit;
end;

    再执行对帐程序,成功结束,就是时间有点长。