- 浏览: 60882 次
- 性别:
- 来自: 深圳
文章分类
最新评论
有时表太大,导出时出现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);
以下原理也不是很清楚,先记录一下,再研究。
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);
发表评论
-
oracle11g提示服务不可用
2014-09-26 17:36 570今天遇到一个问题,本地1521端口启用,但远程不能访问 修改监 ... -
手工用户创建,老是记不住,记录
2014-09-18 13:53 317Oracle创建表空间、创建用户以及授权、查看权限 创建临 ... -
gdul
2014-08-15 15:16 469一直想自己也写个dul工具,无奈理解得不够深入 几天前看到别人 ... -
SQL调优
2014-06-20 14:14 379网上看到如下sql: 留一个线索在此 select /*+ ... -
表闪回
2014-06-19 16:13 330使用delete删除数据的情况,如果是truncate只能用数 ... -
外键约束
2014-06-19 16:02 389删除一个表时,提示有外键约束,ORA-02292: 违反完整约 ... -
get_ddl使用
2014-05-19 16:45 421查看oracle中表定义等,需要使用dbms_metadata ... -
PL/SQL语法
2014-05-09 11:38 375今天写plsql,很久没写了,很简单的,也不想参看以前写的,怎 ... -
归档日志满的处理
2014-05-04 10:07 750只是一个记录贴,方便查阅。完全没有新意 归档日志一般需要保留 ... -
数据的导出导入
2013-12-30 12:41 352异构数据库之间数据交换,主要使用txt文本文件 以下记录一个工 ... -
exp增量
2013-12-17 17:09 342很久没有写文章了,今天遇到一个老问题,exp增量备份 记 ... -
查找oracle的操作日志
2013-12-17 16:48 551今天程序有些功能不能用了,查了一下,发现某些表对象删除了 ... -
数结构的查询
2013-09-27 18:33 0很早之前就使用过该功能,每次都记不住,每次都要搜索 索性记录一 ... -
面试中的SQL
2013-09-27 12:07 450虽然有些时间没有面试过了 在我的印象中,sql中行列转换的问题 ... -
oracle SQL特性使用
2013-09-27 11:25 377oracle分析函数 统计记录中类似1/222这样的记录 se ... -
oracle内部原理
2013-09-26 11:17 951总是以为对oracle很了解,已经使用了好多年,基本是增、删、 ... -
oracle跟踪程序执行的SQL
2013-09-24 15:34 1104专门记录一下,对于系统调优很重要 1.oracle的10046 ... -
BLOB字段操作
2013-09-18 10:00 884置为空或NULL update blob_test set b ... -
统计表的大小
2013-09-11 17:29 360统计用户表的大小: SELECT * FROM ( SEL ... -
UTL_FILE写文件
2013-09-09 16:16 661oracle内部提供的很多使用的包,为应用提供了可能! 在我们 ...
相关推荐
ORA-01555错误是Oracle数据库中一个常见的运行时异常,通常会让数据库管理员感到头疼。这个错误并不会对数据造成实际的丢失或破坏,但它会导致查询操作无法正常完成,从而影响应用程序的正常运行。本文将深入探讨ORA...
- `java.sql.SQLException: ORA-01555: snapshot too old: rollback segment number with name "" too small`: 回滚段不足以支持事务回滚。可能需要增大回滚段大小或者优化事务处理。 11. **内存问题** - `java....
### ORA-01555 "Snapshot too old" — 详细解释与解决方案 #### 概述 在Oracle数据库操作过程中,可能会遇到ORA-01555 "snapshot too old" 错误,该错误主要发生在多版本读一致性环境下,当回滚段中的数据不足以...
- **ORA-01555:快照过旧**:考虑增大_undo表空间或者优化查询以减少回滚段的使用。 - **ORA-27037:无法打开文件**:检查文件路径、权限或磁盘空间。 - **ORA-01405:不能检索隐藏列**:确保没有尝试访问不应...
本文将详述如何分析和处理两种特定的ORA错误:ORA-01555和ORA-07445,同时也会探讨与FAST_START_MTTR_TARGET参数相关的四个设置,这些参数对数据库的性能和恢复速度有着直接影响。 首先,让我们深入理解ORA-01555...
6. ORA-01555:快照过旧。这是因为回滚段空间不足,导致无法读取旧版本的数据。增加回滚段大小、优化事务管理或提升数据库实例的内存配置可缓解此问题。 7. ORA-29913:执行错误。当调用存储过程或函数时,如果参数...
- 导出数据时遇到 ora-01555 快照过旧问题,调整 undo 表空间大小和 undo_retention 参数无效。 - 创建新的 undo 表空间并删除旧的,但在删除时由于 ora-01548 错误,发现仍有基于旧 undo 表空间的活动事务。 5. ...
三、ORA-01555:快照过旧 这个错误表示在事务中尝试回滚到一个不再可用的数据库快照。这可能是因为回滚段空间不足或回滚段被重用。解决方法包括增加回滚段大小,优化事务,或使用更大的undo表空间。 四、ORA-02091...
- **ORA-01555:** 当查询返回的结果基于过期的快照版本时发生此错误。通常是由于事务回滚段 (UNDO) 太小或事务处理时间过长所导致。 **解决办法:** - 增大 UNDO 表空间的大小,以容纳更长时间的事务处理。 - 调整...
5. **存储问题**:包括表空间满(ORA-01652:无法扩展临时段达到XXX字节)、回滚段问题(ORA-01555:快照过旧)等,这些问题通常需要调整数据库的存储策略或增加额外的磁盘空间。 6. **并发控制**:如ORA-00054...
精确的回滚段的数量及大小的计算涉及很多方面,包括应用类型、同时进行的事务数量、DML 语句的类型、每个事务处理的数据量等等。需要根据实际情况进行计算和调整。 需要注意的是,OLTP 系统应使用小但较多的回滚段...
7. **性能优化**:某些错误代码与性能问题相关,比如ORA-01555,通过优化索引、调整表空间或提高redo log大小可能避免这类问题。 8. **最佳实践**:文档可能还会提供避免某些错误的最佳实践,比如正确设计约束、...
3. **ORA-01555**:快照过旧。这通常是由于回滚段不足,导致无法回溯到事务的早期状态。可能需要增大回滚段大小或者优化事务处理。 4. **ORA-06502**:PL/SQL:数值或字符串缓冲区太小。当分配的内存不足以存储返回...
除了上述错误外,文章还提到了其他常见的ORA错误,如ORA-01545、ORA-0165x、ORA-01555、ORA-04031、ORA-04091、ORA-01242和ORA-01113,涵盖了从空间管理、性能瓶颈、到内存不足等各种数据库操作场景中可能遇到的问题...
除此之外,Oracle还有一系列其他错误码,如"ORA-01555"(快照过旧),可能是因为回滚段空间不足导致的,需要增大回滚段或者调整事务管理策略;"ORA-02091"(事务被中断)可能是因为在一个嵌套的事务中,外部事务被...
5. **ORA-01555**: 快照过旧。当试图访问的数据被修改或删除,而回滚段不足以回溯到之前的状态时,会出现这个错误。可能需要增大回滚段大小或优化事务处理。 6. **ORA-12154**: TNS:无法解析指定的连接标识符。这是...
ORA-01555(快照过旧)表示查询无法使用缓存的块,可能需要优化查询,增加共享池大小,或者调整回滚段设置。 8. **网络连接问题**: ORA-12154(无法解析服务名)或ORA-12541(无监听程序)等错误通常与网络配置...
4. ORA-01555: 快照过旧 - 数据库回滚段空间不足,导致无法回滚事务。可以增大回滚段大小,或者优化事务以减少回滚数据的需求。 5. ORA-01652: 无法扩展临时表空间 - 执行大查询或操作时,临时表空间不足。增加临时...