原因分析
1,登录数据库,查看主机日志,报错内容为ORA-01652,temp表空间不足
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP01
2,让业务部门重新执行相关脚本,发现占用temp表空间的具体语句如下,目前temp表空间96GB,大约1个小时会被该sql使用满,sql异常退出
Sql具体如下
INSERT INTO www.WWW_BILL_DTL_TEMP_0101(ACCT_ID,SERV_ID,FEE,BRAND,
PHONE_ID,USER_TYPE) SELECT ACCT_ID, SERV_ID, sum(FEE) FEE,BRAND
,PHONE_ID,USER_TYPE FROM ( SELECT ACCT_ID, SERV_ID, SUM(FEE) F
EE,BRAND,PHONE_ID,USER_TYPE FROM (select a.acct_id,e.serv_id,s
um(b.unpay_fee) FEE,a.brand,a.phone_id,a.user_type from www.ACC_B
ILL_010120121010 A , www.WWW_BILL_DTL_010120121010 B , www.OWE_MO
NITOR_QUEUE_ACTION E where a.bill_id=b.bill_id and A.ACCT_ID=E.
ACCT_ID and a.brand in (:"SYS_B_00",:"SYS_B_01",:"SYS_B_02",:"SY
S_B_03",:"SYS_B_04",:"SYS_B_05") and b.fee_item_id>:"SYS_B_06"
group by a.acct_id,e.serv_id,a.brand,a.phone_id,a.user_type ) g
roup by ACCT_ID, SERV_ID,BRAND,PHONE_ID,USER_TYPE UNION ALL SE
LECT ACCT_ID, SERV_ID, -:"SYS_B_07"*SUM(FEE) FEE,BRAND,PHONE_ID,
USER_TYPE FROM (select a.acct_id,e.serv_id,sum(b.unpay_fee) FE
E,a.brand,a.phone_id,a.user_type from www.WWW_BILL_010120121005 A
, www.WWW_BILL_DTL_010120121005 B , www.WWW_MONITOR_QUEUE_ACTION
E where a.bill_id=b.bill_id and A.ACCT_ID=E.ACCT_ID and a.bran
d in (:"SYS_B_08",:"SYS_B_09",:"SYS_B_10",:"SYS_B_11",:"SYS_B_12
",:"SYS_B_13") and b.fee_item_id>:"SYS_B_14" group by a.acct_id
,e.serv_id,a.brand,a.phone_id,a.user_type ) group by ACCT_ID, S
ERV_ID,BRAND,PHONE_ID,USER_TYPE ) GROUP BY ACCT_ID, SERV_ID,BRAN
D,PHONE_ID,USER_TYPE
执行计划如下
Plan hash value: 3236377944
--------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | | | 19281 (100)| |
| 1 | HASH GROUP BY | | 2 | 184 | 19281 (2)| 00:03:52 |
| 2 | VIEW | | 2 | 184 | 19280 (2)| 00:03:52 |
| 3 | UNION-ALL | | | | | |
| 4 | SORT GROUP BY | | 1 | 92 | 19271 (2)| 00:03:52 |
| 5 | VIEW | | 1 | 92 | 19271 (2)| 00:03:52 |
| 6 | SORT GROUP BY | | 1 | 144 | 19271 (2)| 00:03:52 |
|* 7 | HASH JOIN | | 1 | 144 | 19270 (2)| 00:03:52 |
| 8 | MERGE JOIN CARTESIAN | | 1 | 65 | 8717 (2)| 00:01:45 |
| 9 | TABLE ACCESS FULL | WWW_MONITOR_QUEUE_ACTION | 1 | 26 | 2 (0)| 00:00:01 |
| 10 | BUFFER SORT | | 257K| 9810K| 8715 (2)| 00:01:45 |
|* 11 | TABLE ACCESS FULL | WWW_BILL_DTL_010120121010 | 257K| 9810K| 8715 (2)| 00:01:45 |
|* 12 | TABLE ACCESS FULL | WWW_BILL_010120121010 | 16755 | 1292K| 10552 (1)| 00:02:07 |
| 13 | SORT GROUP BY | | 1 | 53 | 9 (12)| 00:00:01 |
| 14 | VIEW | | 1 | 53 | 9 (12)| 00:00:01 |
| 15 | SORT GROUP BY | | 1 | 79 | 9 (12)| 00:00:01 |
| 16 | TABLE ACCESS BY INDEX ROWID | WWW_BILL_DTL_010120121005 | 1 | 18 | 3 (0)| 00:00:01 |
| 17 | NESTED LOOPS | | 1 | 79 | 8 (0)| 00:00:01 |
| 18 | NESTED LOOPS | | 1 | 61 | 5 (0)| 00:00:01 |
| 19 | TABLE ACCESS FULL | WWW_MONITOR_QUEUE_ACTION | 1 | 26 | 2 (0)| 00:00:01 |
|* 20 | TABLE ACCESS BY INDEX ROWID| WWW_BILL_010120121005 | 1 | 35 | 3 (0)| 00:00:01 |
|* 21 | INDEX RANGE SCAN | ITDX_ACCT_ID_10120121005 | 1 | | 2 (0)| 00:00:01 |
|* 22 | INDEX RANGE SCAN | TPK_BILL_DTL_ID_10120121005 | 1 | | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------------
- 大小: 53.3 KB
分享到:
相关推荐
ORA-01654处理表空间不足问题 Oracle 数据库中,表空间不足是非常常见的问题,主要体现在两个方面:一是原表空间大小不够,二是表空间自动扩展功能未开启。今天我们就来详细讨论如何解决ORA-01654处理表空间不足...
3. 如果REQUEXT_FAILURES>0并且LAST_FAILURE_SIZE>SHARED_POOL_RESERVED_MIN_ALLOC,那么ORA-04031错误就是因为共享池中保留空间缺少连续空间所致。 4. 解决方法是通过加大SHARED_POOL_RESERVED_MIN_ALLOC来降低缓冲...
- `java.sql.SQLException: ORA-01652: unable to extend temp segment by X in tablespace TEMP`: 临时表空间不足。增加临时表空间大小或优化使用临时表空间的查询。 以上是Oracle数据库操作中常见的`java.sql....
"Oracle 解决 ORA-01187:无法从...这些步骤包括删除所有临时文件、创建新的临时表空间、切换默认临时表空间、重新创建 TEMP 表空间和切换回默认临时表空间。通过这些步骤,我们可以成功解决 ORA-01187 的错误信息。
### Oracle的Temp表空间与UNDO表空间处理详解 #### 一、Temp表空间处理 在Oracle数据库中,Temp表空间主要用于存储临时对象,如排序、分组等操作产生的临时数据。这些操作可能会导致Temp表空间迅速增大。然而,...
其中一种常见问题是ORA-01652错误,即“无法在指定表空间扩展临时段”。这通常发生在对临时表空间的操作上。当Oracle数据库执行涉及排序、连接等操作时,会使用临时表空间来存储临时数据。如果这些操作所需的空间...
其次,错误`ORA-01652: unable to extend temp segment by num in tablespace name`是由于临时表空间不足造成的。临时表空间主要用于存储排序和临时结果。当Oracle无法在当前临时表空间找到连续的空间来扩展临时段时...
**ORA-01652: unable to extend temp segment by num in tablespace name** 这个错误表示Oracle在尝试扩展临时段时遇到了空间不足的问题。临时段用于存储排序和临时结果集,当无法分配连续空间时,就会出现这个错误...
7. 其他错误如ORA-01630至ORA-01633涉及到表空间的temp段和数据段达到最大扩展限制,需要检查表空间的扩展策略,或者考虑增加新的数据文件。 解决这些Oracle错误通常需要对数据库的内部工作原理有深入理解,包括...
5. ORA-01652: 无法在temp表空间扩展 当临时表空间不足以完成操作,如排序或连接,就会出现这个错误。增加临时表空间的大小,或者分配更多的临时段,可以解决这个问题。 6. ORA-01722: 无效数字 这个错误表示在尝试...
本文将深入解析两个常见的Oracle错误及其解决方案:ORA-01650和ORA-01652,并提供相关的排查和解决策略。 **ORA-01650: unable to extend rollback segment NAME by NUM in tablespace NAME** 这个错误表明回滚段...
4. Oracle临时表空间满的问题:当临时表空间的磁盘空间被全部占用后,可能会出现错误消息,例如“ORA-1652: unable to extend temp segment by %s in tablespace %s”。这会导致用户无法完成如排序、并行查询等操作...
10. ORA-01652:无法在临时表空间扩展 - 解决:增大临时表空间的大小,或调整SQL语句以减少排序需求。 学习Oracle命令和理解错误类型是掌握Oracle数据库管理的关键步骤。通过实践这些命令和解决常见错误,可以提高...
3. **创建表空间**:根据需要创建新的表空间。 ```sql CREATE TABLESPACE NNC_DATA01 DATAFILE 'D:\tablespace\nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K; ...
除了数据文件(如`.DBF`)、控制文件(如`.CTL`)、日志文件(如`.LOG`)外,还应考虑重做日志文件、回滚段文件(Undo `.DBF`)以及临时表空间文件(Temp `.DBF`)。此外,用户提到可能丢失了部分索引文件(如`INDEX...
##### ORA-01652: unable to extend temp segment by num in tablespace name **产生原因**: ORACLE临时段表空间不足。这是因为ORACLE总是尽量分配足够的临时空间给临时段使用,但在某些情况下,可能会导致临时段表...
5. **ORA-01652: unable to extend temp segment by 128 in tablespace TEMP** 当临时表空间不足以存储临时数据时,会出现这个错误。解决方式是增大临时表空间大小,或者调整SQL语句以减少临时空间的需求。 6. **...
在进行数据库导入导出时,还有可能出现一些其他问题,比如权限不足、文件路径不存在等。这就需要进行用户创建、表空间创建、文件转移等一系列操作。 例如,首先需要创建一个用户,并授予必要的权限: ``` CREATE ...
合理的管理和优化临时表空间不仅可以提高系统的性能,还可以帮助解决空间不足等问题。本文将详细介绍如何通过SQL脚本进行临时表空间的查询、创建、修改以及删除操作。 #### 一、查询临时表空间信息 首先,我们来...
当Oracle数据库在执行排序操作或其他需要临时空间的操作时,如果临时表空间中没有足够的空间来扩展临时段,则会抛出ORA-01652错误。 **原因分析:** 1. **临时表空间空间不足:** 如果临时表空间的总容量不足以...