登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

Oracle Resumable Space Allocation   

2009-06-05 11:56:53|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Oracle Resumable Space Allocation

自Oracle9i起, Oracle数据库为空间分配错误事件提供一个挂起长时间运行的事务的方法.一旦DBA解决该问题,则挂起事务继续运行至完成, 不需要再从头开始执行.

Resumable Space Allocation可用于三类空间管理问题:
1. 超出表空间范围
2. 达到段的最大扩展(extent)
3. 超出用户的空间限制

DBA可配置初始化参数RESUMABLE_TIMEOUT的值不为0启用可恢复空间配置, 在用户会话级可使用ALTER SESSION ENABLE RESUMABLE命令.
SQL> alter session enable resumable timeout 3600;

这里表明事务可以被挂起3600秒(60分),若故障在该时间内没得到解决,事务语句失败.

以下为测试过程:

SQL> revoke unlimited tablespace from wind;

Revoke succeeded.

SQL> alter user wind quota 10M on users;

User altered.

SQL> conn wind/wind
Connected.

SQL> create table t
  2  as
  3  select * from all_objects;

Table created.

SQL> insert into t
  2  select * from all_objects;
insert into t
            *
ERROR at line 1:
ORA-01536: space quota exceeded for tablespace 'USERS'

SQL> alter session enable resumable timeout 3600;

Session altered.

SQL> insert into t
  2  select * from all_objects;

执行到这里事务已经被挂起, 用户并不会收到消息, 但DBA会收到警告信息.

可在alert log中看到如下信息:

<msg time='2008-06-30T22:57:38.232+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
module='SQL*Plus' pid='28008'>
<txt>    ORA-01536: space quota exceeded for tablespace 'USERS'
</txt>
</msg>

也可查询数据字典视图DBA_RESUMABLE:

SQL> select user_id,instance_id,status,name,error_msg
  2  from dba_resumable;

USER_ID INSTANCE_ID  STATUS           NAME                         
----------- ------------------ --------------     ----------------------------------------------------
ERROR_MSG
-------------------------------------------------------------------------------------------------
        91      1                  SUSPENDED    User WIND(91), Session 110, Instance 1
ORA-01536: space quota exceeded for tablespace 'USERS'

增加用户使用空间:

SQL> alter user wind quota 100M on users;

User altered.

用户插入语句执行完成.可通过DBA_RESUMABLE和alter log得到事务恢复操作的信息.

SQL> select user_id,instance_id,status,name,error_msg
  2  from dba_resumable;

USER_ID INSTANCE_ID  STATUS      NAME                         
----------- ------------------ ----------     ----------------------------------------------------
ERROR_MSG
---------------------------------------------------------------------------------------------
        91      1                   NORMAL    User WIND(91), Session 110, Instance 1

alter log中信息:

<msg time='2008-06-30T23:01:08.543+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
module='SQL*Plus' pid='28008'>
<txt>statement in resumable session &apos;User WIND(91), Session 110, Instance 1&apos; was resumed
</txt>
</msg>

wind 发表于 2008年7月 1日 00:02

相关日记

最新日记
Oracle中加密PL/SQL源码

主要是为了保护PL/SQL源代码,防止PL/SQL...

PL/SQL中报ORA-00942错误的解决

在PL/SQL Developer调试Proced...

Google Apps邮件客户端设置

前段时间申请开通了Google Apps服务,但一...

VMware虚拟网卡

VMware虚拟网卡为虚拟机,服务控制台和VMke...

Service Console Configura...




引文来源  Oracle Resumable Space Allocation - 自由自在
  评论这张
 
阅读(479)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018