9I数据库中,若对会话作了 enable resumable 设置后,当出现空间不足的问题时,挂起
整个操作以等待操作人员解决空间问题。
环境: windwos 2000 server sp4, oracle 9207
SQL> connect / as sysdba
已连接。
SQL> create tablespace block datafile 'H:oradataMARKETblock01.dbf' size 1m;
表空间已创建。
SQL> grant resumable to scott;
授权成功。
SQL> connect scott/1
已连接。
SQL> select * from user_ts_quotas;
TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS
------------------------------ ---------- ---------- ---------- ----------
USERS 1376256 -1 168 -1
SYSTEM 0 0 0 0
NNC_LOB 0 0 0 0
BLOCK 0 -1 0 -1
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
ALTER SESSION
CREATE TABLE
SELECT ANY TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
PRIVILEGE
----------------------------------------
RESUMABLE
已选择12行。
SQL> create table block (name varchar2(2000))tablespace block;
表已创建。
SQL> alter table block modify name char(2000);
表已更改。
SQL> insert into block (name) select 'asdfsafsdfwefwedfsadasdasdasdadsad' from dual;
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into block select * from block;
已创建 1 行。
SQL> insert into block select * from block;
已创建2行。
SQL> insert into block select * from block;
已创建4行。
SQL> insert into block select * from block;
已创建8行。
SQL> insert into block select * from block;
已创建16行。
SQL> insert into block select * from block;
已创建32行。
SQL> insert into block select * from block;
已创建64行。
SQL> insert into block select * from block;
已创建128行。
SQL> insert into block select * from block;
insert into block select * from block
*
ERROR 位于第 1 行:
ORA-01653: 表SCOTT.BLOCK无法通过8(在表空间BLOCK中)扩展
SQL> rollback;
回退已完成。
SQL> alter session enable resumable timeout 60;
会话已更改。
SQL> insert into block select * from block;
已创建 1 行。
SQL> insert into block select * from block;
已创建2行。
SQL> insert into block select * from block;
已创建4行。
SQL> insert into block select * from block;
已创建8行。
SQL> insert into block select * from block;
已创建16行。
SQL> insert into block select * from block;
已创建32行。
SQL> insert into block select * from block;
已创建64行。
SQL> insert into block select * from block;
已创建128行。
SQL> insert into block select * from block;
insert into block select * from block
*
ERROR 位于第 1 行:
ORA-30032: 挂起的 (可恢复) 语句已超时
ORA-01653: 表SCOTT.BLOCK无法通过8(在表空间BLOCK中)扩展
此时在另外一个窗口查询该session 的等待事件
SQL> connect / as sysdba
已连接。
SQL> select sid from v$session where username='SCOTT';
SID
----------
11
SQL> select * from v$session_wait where sid=11;
SID SEQ# EVENT P1TEXT P1 P1RAW P2TEXT P2 P2RAW P3TEXT P3 P3RAW WAIT_TIME SECONDS_IN_WAIT STATE
---------- ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- -------- ---------------------------------------------------------------- ---------- -------- ---------------------------------------------------------------- ---------- -------- ---------- --------------- -------------------
11 175 statement suspended, wait error to be cleared 0 00 0 00 0 00 0 1 WAITING
SQL>
从警告日志中可以看出其悬挂的时间: Fri Jul 29 10:18:10 2005 - Fri Jul 29 10:17:08 2005
Fri Jul 29 10:17:08 2005
statement in resumable session 'User SCOTT(102), Session 11, Instance 1' was suspended due to
ORA-01653: 表SCOTT.BLOCK无法通过8(在表空间BLOCK中)扩展
Fri Jul 29 10:17:08 2005
ARC1: Media recovery disabled
Fri Jul 29 10:18:08 2005
ARC1: Media recovery disabled
Fri Jul 29 10:18:10 2005
statement in resumable session 'User SCOTT(102), Session 11, Instance 1' was timed out
可以通过查看视图dba_resumable/user_resumable来获取suspended 会话.
再试
SQL> insert into block select * from block;
此时,该窗口悬挂,没反应.
再来到另外一个窗口
SQL> connect / as sysdba
已连接。
扩展该文件的尺寸.
SQL> alter database datafile 'H:ORADATAMARKETBLOCK01.DBF' resize 10m;
数据库已更改。
再回到原来的窗口,已经
SQL> insert into block select * from block;
已创建256行。
总结: 当在会话里打开这个功能后(运行 alter session enable resumable timeout 秒,
默认7200).当运行某些sql导致空间不足(表空间用完了)、或已抵达该表/段的 maxextents,
或者 该用户使用此表空间的配额已经用完(原话:Out of space condition, Maximum extents
reached condition, Space quota exceeded condition.),此时Oracle将不会报错,而是把
语句挂起,让 dba 在 timeout 所指定的时间范围内解决问题,之后语句又可以继续运行。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/1112/viewspace-103707/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/1112/viewspace-103707/