暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

LOB对象与临时段

eygle 2019-10-17
532

根据LOB对象的处理机制,在LOB对象的操作过程中,Oracle会生成临时的LOB数据,这部分数据也会适用临时段,这也是一个产品数据库中经常可以观察到的临时段使用方式。如果在并发很高的环境中,此类的LOB操作可能会导致数据库的TEMP表空间的不足。所以这也是DBA需要注意的一个地方。


通过以下一小段代码我们可以很容易的再现这类问题:

declare               
  A CLOB;             
BEGIN                 
  A := 'ABC';           
  DBMS_LOCK.SLEEP(120);
END;                 
/


在一个Session中执行这段代码,在另外Session中查询,可以得到当前临时段的使用情况:

SQL> SELECT   s.username, s.SID, u.TABLESPACE, u.CONTENTS, u.segtype,
  2           ROUND (u.blocks * 8192 / 1024 / 1024, 2) mb
  3      FROM v$session s, v$tempseg_usage u
  4     WHERE s.saddr = u.session_addr AND u.CONTENTS = 'TEMPORARY'
  5  ORDER BY mb DESC;
 
USERNAME          SID TABLESPACE CONTENTS  SEGTYPE           MB
---------- ---------- ---------- --------- --------- ----------
SYS                11 TEMP       TEMPORARY LOB_DATA           1


这个临时空间使用需要等到Session退出后才会释放,那么在并发很高的情况下,这一空间使用就将值得关注。


在SQL执行过程中,我们可以通过之前提到的SQL来获取这些引发临时空间使用的SQL语句:

SQL> SELECT          /*+ rule */
  2         DISTINCT a.SID, a.process, a.serial#,
  3                  TO_CHAR (a.logon_time, 'YYYYMMDD HH24:MI:SS') LOGON, a.osuser,
  4                  TABLESPACE, b.sql_text
  5             FROM v$session a, v$sql b, v$sort_usage c
  6            WHERE a.sql_address = b.address AND a.saddr = c.session_addr
  7  /
 
 SID PROCESS         SERIAL# LOGON             OSUSER   TABLESPACE
---- ------------ ---------- ----------------- -------- ----------
SQL_TEXT
--------------------------------------------------
 136 15785             10850 20070410 10:58:19 oracle   TEMP
declare   A CLOB; BEGIN   A := 'ABC';   DBMS_LOCK.
SLEEP(120); END;


以下是我的一个Oracle9i生产环境中的数据,我们看到这种情况在现实应用中是非常常见的:

SQL> SELECT   s.username, s.SID, u.TABLESPACE, u.CONTENTS, u.segtype,
  2           ROUND (u.blocks * 8192 / 1024 / 1024, 2) mb
  3      FROM v$session s, v$tempseg_usage u
  4     WHERE s.saddr = u.session_addr AND u.CONTENTS = 'TEMPORARY'
  5  ORDER BY mb DESC;
 
USERNAME                    SID TABLESPACE CONTENTS  SEGTYPE           MB
-------------------- ---------- ---------- --------- --------- ----------
GENCOMMU                    204 TEMP       TEMPORARY LOB_DATA           1
GENCOMMU                    376 TEMP       TEMPORARY LOB_DATA

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

评论