各位好:
我有一个procedure,在测试环境运行正常,但生产环境执行报01652错误。我跟踪了一下后台的临时表空间文件temp01.dbf,测试环境420多M就够了,但生产环境在执行过程中就一直增加,增加到1G以上还没有执行完,如果将该临时表空间设为非扩展的,设置1G大小,则报这个错误。
当然我的脚本效率确实不高,只是怎么也不会花这么大的临时表空间啊!并且测试环境都ok了,这可能是什么原因呢?
我有一个procedure,在测试环境运行正常,但生产环境执行报01652错误。我跟踪了一下后台的临时表空间文件temp01.dbf,测试环境420多M就够了,但生产环境在执行过程中就一直增加,增加到1G以上还没有执行完,如果将该临时表空间设为非扩展的,设置1G大小,则报这个错误。
当然我的脚本效率确实不高,只是怎么也不会花这么大的临时表空间啊!并且测试环境都ok了,这可能是什么原因呢?
解决方案 »
- oracle 查看表结构??
- 在linux下安装了oracle,使用“./dbstart”启动数据库,为何报错?cat: /var/opt/oracle/oratab: 没有那个文件或目录
- oracle执行存储过程返回多行查询数据?
- 查询一个表的字段信息?
- Oracle的使用问题
- 为何在存储过程中执行取SID代码报错?
- 请推荐ORACLE9i的书
- 在OCI中怎样传递数组给PL/SQL?
- 大爱帮帮小弟响,oracle安装好后,管理用户名,口令不知道??怎么办??
- 如何使用Oracle和windows2000中集成认证的用户远程链接oracle???多谢各位!
- oracle 安装 vista
- 紧急,存储过程速度问题
应用程序在执行一个存储过程时报如下错误:
ORA-01652: 无法通过256(在表空间NEW_TEMP中)扩展 temp 段
ORA-06512: 在"NEW1.PACK_DATA_FX", line 60
ORA-06512: 在"NEW1.PROC_FXTZ0", line 7 ORA-06512: 在line 1
通常来说如果出现该错误是由于临时表空间空间不足所致,只要给表空间添加数据文件就能解决问题(alter tablespace ts_name add tempfile file_name size n M)。当然最好是检查应用程序的设计,以优化排序操作。
但通过检查发现应用程序没有大的排序操作。这时我们就把注意力放在表空间的数据文件上,检查一下数据文件的状态。
SQL> select file#,status from v$tempfile; FILE# STATUS
---------- -------
1 ONLINE
2 ONLINE
3 ONLINE
4 OFFLINE
果不其然,问题就出现在数据文件上,我们看到编号为4的临时文件状态为不在线。我们首先找出对应的临时文件:
SQL> select tablespace_name,file_name from dba_temp_files where file_id=4;TABLESPACE_NAME FILE_NAME
------------------------------ ----------------------------------------
NEW_TEMP D:\ORACLE\ORADATA\HSMIS\NEW_TEMP01.DBF再把临时文件的状态改为在线:SQL> alter database tempfile 'd:\oracle\oradata\hsmis\new_temp01.dbf' online;数据库已更改。这样问题就得以良好解决。
http://www.itpub.net/266090.htmlhttp://bbs.chinaunix.net/archiver/?tid-348973.html
ORA-01652: 无法通过(在表空间中)扩展 temp 段,如何解决?本地和对端数据库版本都是 Oralce9,通过 dbLink 方式建立连接。
报错的语句是
insert into t
select * from t@dbLink;
错误信息是“ORA-01652: 无法通过(在表空间中)扩展 temp 段”。网上搜了一下文章,找到原因有 2 条,一是临时表空间不够,二是需要调整表空间的参数(ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);)。因为我对表空间的参数不熟悉,所以只采用增加表空间的方法,但是我已经把表空间额外增加了 3G 的空间,结果问题依然(不过对端的表的记录总数为 73926307,我仍不知道 3G 空间是否足够)。查了一下临时表空间的信息:SELECT * FROM SYS.DBA_TABLESPACES;
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE
TEMP 4096 1048576 1048576 1 0MIN_EXTLEN STATUS CONTENTS LOGGING EXTENT_MANAGEMENT ALLOCATION_TYPE PLUGGED_IN SEGMENT_SPACE_MANAGEMENT
1048576 ONLINE TEMPORARY NOLOGGING LOCAL UNIFORM NO MANUAL临时表空间的参数INITIAL_EXTENT、NEXT_EXTENT值都是 1048576(1G),问题是不是出在这里(我额外增加的 3G 空间是分别创建 3 个大小为 1G 的数据文件),不能“跨越”第二个 1G 的数据库文件?