`

ORA-01555处理

 
阅读更多
有时表太大,导出时出现1555错误,可以采用分段方式处理。
以下原理也不是很清楚,先记录一下,再研究。
select dbms_rowid.rowid_create(1, oid1, fid1, bid1, 0) rowid1, 
       dbms_rowid.rowid_create(1, oid2, fid2, bid2, 9999) rowid2 
  from (select a.*, rownum rn 
          from (select chunk_no, 
                       min(oid1) oid1, 
                       max(oid2) oid2, 
                       min(fid1) fid1, 
                       max(fid2) fid2, 
                       min(bid1) bid1, 
                       max(bid2) bid2 
                  from (select chunk_no, 
                               FIRST_VALUE(data_object_id) OVER(PARTITION BY chunk_no ORDER BY data_object_id, relative_fno, block_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) oid1, 
                               LAST_VALUE(data_object_id) OVER(PARTITION BY chunk_no ORDER BY data_object_id, relative_fno, block_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) oid2, 
                               FIRST_VALUE(relative_fno) OVER(PARTITION BY chunk_no ORDER BY data_object_id, relative_fno, block_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) fid1, 
                               LAST_VALUE(relative_fno) OVER(PARTITION BY chunk_no ORDER BY data_object_id, relative_fno, block_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) fid2, 
                               FIRST_VALUE(block_id) OVER(PARTITION BY chunk_no ORDER BY data_object_id, relative_fno, block_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) bid1, 
                               LAST_VALUE(block_id + blocks - 1) OVER(PARTITION BY chunk_no ORDER BY data_object_id, relative_fno, block_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) bid2 
                          from (select data_object_id, 
                                       relative_fno, 
                                       block_id, 
                                       blocks, 
                                       ceil(sum2 / chunk_size) chunk_no 
                                  from (select /*+ rule */ b.data_object_id, 
                                               a.relative_fno, 
                                               a.block_id, 
                                               a.blocks, 
                                               sum(a.blocks) over(order by b.data_object_id, a.relative_fno, a.block_id) sum2, 
                                               ceil(sum(a.blocks) 
                                                    over() / &trunks) chunk_size 
                                          from dba_extents a, dba_objects b 
                                         where a.owner = b.owner 
                                           and a.segment_name = b.object_name 
                                           and nvl(a.partition_name, '-1') = 
                                               nvl(b.subobject_name, '-1') 
                                           and b.data_object_id is not null 
                                           and a.owner = upper('&owner') 
                                           and a.segment_name = upper('&table_name')))) 
                 group by chunk_no 
                 order by chunk_no) a);
分享到:
评论

相关推荐

    [Oracle] 浅析令人抓狂的ORA-01555问题

    ORA-01555错误是Oracle数据库中一个常见的运行时异常,通常会让数据库管理员感到头疼。这个错误并不会对数据造成实际的丢失或破坏,但它会导致查询操作无法正常完成,从而影响应用程序的正常运行。本文将深入探讨ORA...

    oracle+ora-各种常见java.sq

    - `java.sql.SQLException: ORA-01555: snapshot too old: rollback segment number with name "" too small`: 回滚段不足以支持事务回滚。可能需要增大回滚段大小或者优化事务处理。 11. **内存问题** - `java....

    ora 01555 snapshot too old

    ### ORA-01555 "Snapshot too old" — 详细解释与解决方案 #### 概述 在Oracle数据库操作过程中,可能会遇到ORA-01555 "snapshot too old" 错误,该错误主要发生在多版本读一致性环境下,当回滚段中的数据不足以...

    oracle错误及解决方法

    - **ORA-01555:快照过旧**:考虑增大_undo表空间或者优化查询以减少回滚段的使用。 - **ORA-27037:无法打开文件**:检查文件路径、权限或磁盘空间。 - **ORA-01405:不能检索隐藏列**:确保没有尝试访问不应...

    ORA错误分析及解决

    本文将详述如何分析和处理两种特定的ORA错误:ORA-01555和ORA-07445,同时也会探讨与FAST_START_MTTR_TARGET参数相关的四个设置,这些参数对数据库的性能和恢复速度有着直接影响。 首先,让我们深入理解ORA-01555...

    Oracle错误代码及解决方法

    6. ORA-01555:快照过旧。这是因为回滚段空间不足,导致无法读取旧版本的数据。增加回滚段大小、优化事务管理或提升数据库实例的内存配置可缓解此问题。 7. ORA-29913:执行错误。当调用存储过程或函数时,如果参数...

    oracle10g服务器断电恢复

    - 导出数据时遇到 ora-01555 快照过旧问题,调整 undo 表空间大小和 undo_retention 参数无效。 - 创建新的 undo 表空间并删除旧的,但在删除时由于 ora-01548 错误,发现仍有基于旧 undo 表空间的活动事务。 5. ...

    oracle 数据库错误一览表

    三、ORA-01555:快照过旧 这个错误表示在事务中尝试回滚到一个不再可用的数据库快照。这可能是因为回滚段空间不足或回滚段被重用。解决方法包括增加回滚段大小,优化事务,或使用更大的undo表空间。 四、ORA-02091...

    Oracle数据库常见问题诊断-常见错误篇

    - **ORA-01555:** 当查询返回的结果基于过期的快照版本时发生此错误。通常是由于事务回滚段 (UNDO) 太小或事务处理时间过长所导致。 **解决办法:** - 增大 UNDO 表空间的大小,以容纳更长时间的事务处理。 - 调整...

    oracle错误一览表

    5. **存储问题**:包括表空间满(ORA-01652:无法扩展临时段达到XXX字节)、回滚段问题(ORA-01555:快照过旧)等,这些问题通常需要调整数据库的存储策略或增加额外的磁盘空间。 6. **并发控制**:如ORA-00054...

    oracle 回滚段

    精确的回滚段的数量及大小的计算涉及很多方面,包括应用类型、同时进行的事务数量、DML 语句的类型、每个事务处理的数据量等等。需要根据实际情况进行计算和调整。 需要注意的是,OLTP 系统应使用小但较多的回滚段...

    Oracle--errorCode.zip_oracle

    7. **性能优化**:某些错误代码与性能问题相关,比如ORA-01555,通过优化索引、调整表空间或提高redo log大小可能避免这类问题。 8. **最佳实践**:文档可能还会提供避免某些错误的最佳实践,比如正确设计约束、...

    ORACLE 错误一览表part6

    3. **ORA-01555**:快照过旧。这通常是由于回滚段不足,导致无法回溯到事务的早期状态。可能需要增大回滚段大小或者优化事务处理。 4. **ORA-06502**:PL/SQL:数值或字符串缓冲区太小。当分配的内存不足以存储返回...

    Oracle数据库常见问题诊断方法

    除了上述错误外,文章还提到了其他常见的ORA错误,如ORA-01545、ORA-0165x、ORA-01555、ORA-04031、ORA-04091、ORA-01242和ORA-01113,涵盖了从空间管理、性能瓶颈、到内存不足等各种数据库操作场景中可能遇到的问题...

    Ora92ErrMsg.zip_oracle

    除此之外,Oracle还有一系列其他错误码,如"ORA-01555"(快照过旧),可能是因为回滚段空间不足导致的,需要增大回滚段或者调整事务管理策略;"ORA-02091"(事务被中断)可能是因为在一个嵌套的事务中,外部事务被...

    ORACLE-ERRORS.zip_oracle

    5. **ORA-01555**: 快照过旧。当试图访问的数据被修改或删除,而回滚段不足以回溯到之前的状态时,会出现这个错误。可能需要增大回滚段大小或优化事务处理。 6. **ORA-12154**: TNS:无法解析指定的连接标识符。这是...

    ORACLE错误大全

    ORA-01555(快照过旧)表示查询无法使用缓存的块,可能需要优化查询,增加共享池大小,或者调整回滚段设置。 8. **网络连接问题**: ORA-12154(无法解析服务名)或ORA-12541(无监听程序)等错误通常与网络配置...

    Oracle错误码大全

    4. ORA-01555: 快照过旧 - 数据库回滚段空间不足,导致无法回滚事务。可以增大回滚段大小,或者优化事务以减少回滚数据的需求。 5. ORA-01652: 无法扩展临时表空间 - 执行大查询或操作时,临时表空间不足。增加临时...

Global site tag (gtag.js) - Google Analytics