Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

1

好友

14

主题
1#
发表于 2014-6-18 13:29:03 | 查看: 3817| 回复: 8
使用的是10.2.0.4.0的数据库,操作系统用的是AIX
以前临时表空间大小为32G,结果昨天报ORA-01652(临时表空间不够),
我用查了一下临时表空间的使用情况,发如上SQL:
1、查看使用率
select TABLESPACE_NAME, BYTES_USED/1024/1024 used_MB,BYTES_FREE/1024/1024 free_MB
from V$TEMP_SPACE_HEADER;
--这个查出来,看起来快使用完了

2、查看哪些SQL在使用:
select * from (
select sess.SID,  segtype, blocks*8/1000 "MB" ,sql_text
from v$sort_usage sort, v$session sess ,v$sql sql
where sort.SESSION_ADDR = sess.SADDR
and sql.ADDRESS = sort.SQLADDR (+)
order by blocks desc
) a
where rownum<10
--这个查出来,看起来没使用多少,我就没搞懂了。

请教!!
2#
发表于 2014-6-18 15:15:08
1、是否为RAC?
2、给出v$sort_usage的内容
3、给出

   SELECT d.tablespace_name "Name",
                TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",
                TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999')  "HWM (M)",
                TO_CHAR(NVL(t.hwm / a.bytes * 100, 0), '990.00') "HWM % " ,
                TO_CHAR(NVL(t.bytes/1024/1024, 0),'99999999.999') "Using (M)",
                TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Using %"
           FROM sys.dba_tablespaces d,
                (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,
                (select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes from v$temp_extent_pool group by tablespace_name) t
          WHERE d.tablespace_name = a.tablespace_name(+)
            AND d.tablespace_name = t.tablespace_name(+)
            AND d.extent_management like 'LOCAL'
            AND d.contents like 'TEMPORARY'
/

回复 只看该作者 道具 举报

3#
发表于 2014-6-20 23:47:29
能让刘先生在百忙之中回复我的贴子,我感到很荣幸。
是RAC环境。
这几天出差,明天回公司,再把您需要的信息贴出来。

回复 只看该作者 道具 举报

4#
发表于 2014-6-21 13:24:36
Maclean Liu(刘相兵 发表于 2014-6-18 15:15
1、是否为RAC?
2、给出v$sort_usage的内容
3、给出

1、是RAC环境
2、select * from v$sort_usage
没有数据。

3、
SELECT d.tablespace_name "Name",
                 TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",
                 TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999')  "HWM (M)",
                 TO_CHAR(NVL(t.hwm / a.bytes * 100, 0), '990.00') "HWM % " ,
                 TO_CHAR(NVL(t.bytes/1024/1024, 0),'99999999.999') "Using (M)",
                 TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Using %"
            FROM sys.dba_tablespaces d,
                 (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,
                 (select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes from v$temp_extent_pool group by tablespace_name) t
           WHERE d.tablespace_name = a.tablespace_name(+)
             AND d.tablespace_name = t.tablespace_name(+)
             AND d.extent_management like 'LOCAL'
             AND d.contents like 'TEMPORARY'
/
结果如下:
Name       Size (M)             HWM (M)         HWM %          Using (M)       Using %
---------- -------------------- --------------- -------------- --------------- --------------
TEMP            40,954.984           2365.000      5.77                 .000      0.00

4、
select TABLESPACE_NAME, BYTES_USED/1024/1024 used_MB,BYTES_FREE/1024/1024 free_MB
from V$TEMP_SPACE_HEADER;
结果如下:
TABLESPACE    USED_MB    FREE_MB
---------- ---------- ----------
TEMP       6919.99219       1272
TEMP             8190          0
TEMP             8190          0
TEMP             8191          0
TEMP       8191.99219          0

回复 只看该作者 道具 举报

5#
发表于 2014-6-21 16:40:39
因为是RAC 所以需要关注2个节点上的信息,对于RAC上的temp 存在例如【案例分享】RAC中可能由于节点cache temp space导致ora-1652错误 这样的bug http://www.askmaclean.com/archiv ... segment-in-rac.html

回复 只看该作者 道具 举报

6#
发表于 2014-6-21 18:30:18
嗯,明白了,谢谢
还有一个问题:
V$TEMP_SPACE_HEADER 视图中 BYTES_USED 字段表示什么,如果表示正在使用的空间,那么跟v$sort_usage 中的信息完全不附合。如果表示高水位,它又时常在变小。

回复 只看该作者 道具 举报

7#
发表于 2014-6-21 21:04:20
GV$TEMP_SPACE_HEADER
select /*+ ordered use_nl(hc) */ hc.inst_id, ts.name, hc.ktfthctfno, (hc.ktfthcsz - hc.ktfthcfree)*ts.blocksize, (hc.ktfthcsz - hc.ktfthcfre
e), hc.ktfthcfree*ts.blocksize, hc.ktfthcfree, hc.ktfthcfno from ts$ ts, x$ktfthc hc where ts.contents$ = 1 and ts.bitmapped <> 0 and ts.onl
ine$ = 1 and ts.ts# = hc.ktfthctsn and hc.ktfthccval = 0




SQL> desc       GV$TEMP_SPACE_HEADER
Name                                                                          Null?    Type
----------------------------------------------------------------------------- -------- ----------------------------------------------------
INST_ID                                                                                NUMBER
TABLESPACE_NAME                                                               NOT NULL VARCHAR2(30)
FILE_ID                                                                                NUMBER
BYTES_USED                                                                             NUMBER
BLOCKS_USED                                                                            NUMBER
BYTES_FREE                                                                             NUMBER
BLOCKS_FREE                                                                            NUMBER
RELATIVE_FNO                                                                           NUMBER


回复 只看该作者 道具 举报

8#
发表于 2014-6-21 21:13:55
ktfthcfree How many blocks are free
hc.ktfthcsz - hc.ktfthcfree = blocks_used How many blocks are in use

回复 只看该作者 道具 举报

9#
发表于 2014-6-22 08:47:47
thank you Maclean Liu.

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-21 02:06 , Processed in 0.048243 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569