Oracle可恢复空间分配技术是怎样的

65次阅读
没有评论

共计 3129 个字符,预计需要花费 8 分钟才能阅读完成。

今天就跟大家聊聊有关 Oracle 可恢复空间分配技术是怎样的,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

许多操作因为空间不够而失败,如果启用了可恢复空间分配,当操作遇到空间问题而不是因为错误而失败时,操作将暂停,显示为会话挂起。当错误得到解决时,它将继续。所有挂起的会话(当前挂起的和之前挂起但现在再次运行的)列在视图 dba_resumable 中。会话关闭后,视图中的记录将消除。

要在会话级别启用可恢复空间分配,命令如下:

alter session
enable resumable [timeout seconds] [name opname

timeout 选项指定语句将挂起多长时间。如果到达这个时间,但问题没有解决,语句失败,返回错误。如果没有指定 timeout,会话将无限期挂起。name 选项指定在视图 dba_resumable 中显示的名称,帮助确定在多语句进程的哪个点出现空间问题。

执行该命令需要授予会话用户相应的权限:

grant
resumable to username

也可以通过设置实例参数 resumable_timeout 为所有会话启用可恢复空间。这是一个动态参数,如要设置一分钟的超时:

alter system
set resumable_timeout=60;

这将导致所有会话在遇到空间问题时挂起一分钟。

Data
Pump 实用程序 expdp 和 impdp 有一个命令行开关 resumable=y(默认为 n),允许 Data Pump 作业如果遇到空间问题就挂起。

当会话挂起时,它将保持对使用的所有资源的控制,包括撤销空间、临时空间、PGA 内存和记录锁定。

在遇到问题时,可以通过另一个会话交互式的进行修复。或者可以创建一个在会话挂起时将运行的 after suspend on database 触发器。这个触发器可以报告问题,如通过电子邮件,或包括检查并自动修复问题的代码,这就意味着可以在一些操作如插入数据导致表空间容量不够时,通过触发器程序确认后自动给表空间分配容量。

以下实验测试可恢复空间分配功能的使用:

1、创建表空间和表

create
tablespace test datafile
d:\oradata\mes\test01.dbf
size 2m;

create
table scott.t1(c1 char(1000))
tablespace test;

2、授予会话可恢复空间分配的权限

grant
resumable to scott;

3、在会话级别设定可恢复空间分配

conn
scott/tiger

alter
session enable resumable name t1_insert

4、向表中插入数据,因空间不足会话将被挂起

begin

  for i in 1 .. 2000 loop

  insert into scott.t1 values (a row

  end loop;

  commit;

end;

/

5、查看因空间分配问题挂起的会话

col name
for a10

col
sql_text for a30

error_parameter1 for a10

error_parameter2 for a10

error_parameter3 for a10

error_parameter4 for a10

error_parameter5 for a10

col
error_msg for a30

select user_id,

  session_id,

  instance_id,

  status,

  timeout,

  start_time,

  suspend_time,

  resume_time,

  name,

  sql_text,

  error_number,

  error_parameter1,

  error_parameter2,

  error_parameter3,

  error_parameter4,

  error_parameter5,

  error_msg

  from dba_resumable;

  USER_ID SESSION_ID INSTANCE_ID STATUS  TIMEOUT START_TIME  SUSPEND_TIME  RESUME_TIME  NAME  SQL_TEXT  ERROR_NUMBER ERROR_PARA
ERROR_PARA ERROR_PARA ERROR_PARA ERROR_PARA ERROR_MSG

———- ———-
———– ——— ———- ——————– ——————–
——————– ———- —————————— ————
———- ———- ———- ———- ———-
——————————

  84  74  1 SUSPENDED  7200 01/25/18 09:42:18  01/25/18 09:42:18  t1_insert  INSERT INTO SCOTT.T1 VALUES (  1653 SCOTT  T1 
128  TEST  ORA-01653: 表 SCOTT.T1 无法通过
128

 
a row ) 
(在表空间 TEST 中) 扩展

6、修复问题,会话将继续执行

alter database datafile
d:\oradata\mes\test01.dbf resize 4m;

7、再次查看因空间分配问题挂起的会话,显示会话已经恢复

select user_id,

  session_id,

  instance_id,

  status,

  timeout,

  start_time,

  suspend_time,

  resume_time,

  name,

  sql_text,

  error_number,

  error_parameter1,

  error_parameter2,

  error_parameter3,

  error_parameter4,

  error_parameter5,

  error_msg

  from dba_resumable;

  USER_ID SESSION_ID INSTANCE_ID STATUS  TIMEOUT START_TIME  SUSPEND_TIME  RESUME_TIME  NAME  SQL_TEXT  ERROR_NUMBER ERROR_PARA
ERROR_PARA ERROR_PARA ERROR_PARA ERROR_PARA ERROR_MSG

———- ———-
———– ——— ———- ——————– ——————–
——————– ———- —————————— ————
———- ———- ———- ———- ———-
——————————

  84  74  1 NORMAL  7200 
01/25/18 10:00:39 
t1_insert 

8、删除表并清理表空间

drop table scott.t1;

drop
tablespace test including contents and datafiles;

看完上述内容,你们对 Oracle 可恢复空间分配技术是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计3129字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)