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

Oracle
Oracle 中文字段进行排序的sql语句
oracle SQL解析步骤小结
ORACLE实例的后台进程
Oracle 游标使用总结
oracle 优化的一点体会
在oracle 数据库中查看一个sql语句的执行时间和SP2-0027错误
Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法
Oracle 创建监控账户 提高工作效率
Oracle 子程序参数模式,IN,OUT,NOCOPY
Oracle 存储过程加密方法
oracle 多个字符替换实现
Oracle 存储过程教程
oracle 更改数据库名的方法
Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
Oracle字符集修改查看方法
一些实用的sql语句
Oracle中sys和system的区别小结
oracle 存储过程和触发器复制数据
Oracle 多行记录合并/连接/聚合字符串的几种方法
ORACLE常用数值函数、转换函数、字符串函数

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 153 ::
收藏到网摘: 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;

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