resumable oracle,ORACLE resumable session功能

从9i开始,Oracle提供了一种避免因为space Error而导致事务异常的操作,那就是resumable.通常,DBA在日常工作中,往往忽略了对空间资源上的需求,比如一个大的事务所需要的 temp,undo,data space等等。直到出现了经典的ORA-01652才恍然大悟,10G版本又对它做了增强,下面做个实验

SQL> create tablespace smailtbs datafile '/u01/app/oracle/oradata/ORCL/datafile/smailtbs.dbf' size 2m;

Tablespace created.

SQL> conn system/oracle

Connected.

SQL> create table anbob.testobj

2  as select * from dba_objects;

Table created.

SQL> conn anbob/anbob

Connected.

SQL> select bytes/1024/1024 from user_segments where segment_name='TESTOBJ'

2  ;

BYTES/1024/1024

---------------

6

SQL> create table tt tablespace smailtbs

2  as

3  select * from testobj;

select * from testobj

*

ERROR at line 3:

ORA-01652: unable to extend temp segment by 128 in tablespace SMAILTBS

SQL> conn system/oracle

Connected.

SQL> grant resumable to anbob

2  ;

Grant succeeded.

SQL> conn anbob/anbob

Connected.

SQL> alter session enable resumalb;

alter session enable resumalb

*

ERROR at line 1:

ORA-00922: missing or invalid option

SQL> alter session enable resumable;

Session altered.

SQL> create table tt tablespace smailtbs

2  as

3  select * from testobj;

挂起.....

打开另一个session anbob监控

SQL>  select session_id,status,start_time,suspend_time,sql_text,error_number,error_msg

2* from user_resumable

SESSION_ID STATUS             START_TIME                               SUSPEND_TIME

---------- ------------------ ---------------------------------------- ----------------------------------------

SQL_TEXT                                                                         ERROR_NUMBER

-------------------------------------------------------------------------------- ------------

ERROR_MSG

------------------------------------------------------------------------------------------------------------------------------------------------------

153 SUSPENDED          05/03/11 18:13:50                        05/03/11 18:13:51

create table tt tablespace smailtbs as select * from testobj                             1652

ORA-01652: unable to extend temp segment by 128 in tablespace SMAILTBS

SQL> conn system/oracle

Connected.

SQL> alter database datafile  '/u01/app/oracle/oradata/ORCL/datafile/smailtbs.dbf' resize 20m;

Database altered.

修改后发现第一个session的事务建表成功!

当我们在建立一个大表,或往表里面插入大量数据时,如果中途因为表空间剩余空间不足并且没有开启自动扩展的话,会报 OUT-OF-SPACE错误,如果等了两个小时换来这个错误,是非常痛苦的事情

这种情况往往出现在我们还无法预估将要插入的数据量时,除了个一个极大的表空间或自动扩展来解决之外。

Oracle还为我们提供了一个很好的功能:resumable

在resumable开启的情况下,如果Oracle执行某一个SQL申请不到空间了,会停顿下来(时间可以由TIMEOUT来控制),但是不会报OUT-OF-SPACE这个错误。等你把空间的问题解决了,Oracle会继续从停下来的部分开始刚才的SQL。

「喜欢文章,快来给作者赞赏墨值吧」 赞赏

【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

请登录后发表评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值