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

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

164

积分

0

好友

16

主题
1#
发表于 2012-1-15 08:25:39 | 查看: 5097| 回复: 2
请教下,在aix5.3下oracle10g的temp被占用65535M怎么查是哪些进程在占用,能否通过sql查出后用语句杀这会话达到释放?或查看这个为什么占用?
2#
发表于 2012-1-15 16:58:23
有个v$temp_used的视图可以看是那个回话在使用temp表空间,俺记不太清了呵呵

回复 只看该作者 道具 举报

3#
发表于 2012-1-15 21:41:37
action plan:

跑一下 这个脚本 并上传结果:
  1. REM SORT ACTIVITY

  2. set linesize 150 pagesize 1400;

  3. SELECT *
  4.   FROM (SELECT matching_criteria,
  5.                TO_CHAR(force_matching_signature) force_matching_signature,
  6.                sql_id,
  7.                child_number,
  8.                sql_text,
  9.                executions,
  10.                elapsed_time / 1000,
  11.                operation_type,
  12.                policy,
  13.                estimated_optimal_size,
  14.                last_memory_used,
  15.                last_execution,
  16.                active_time / 1000,
  17.                num_sort_operations,
  18.                tot_active_time / 1000,
  19.                tot_optimal_executions,
  20.                tot_onepass_executions,
  21.                tot_multipasses_executions,
  22.                all_tot_active_time / 1000,
  23.                max_tempseg_size,
  24.                parsing_schema_name
  25.           FROM (SELECT force_matching_signature,
  26.                        sql_id,
  27.                        child_number,
  28.                        sql_text,
  29.                        matching_criteria,
  30.                        SUM(executions) OVER(PARTITION BY matching_criteria) executions,
  31.                        SUM(elapsed_time) OVER(PARTITION BY matching_criteria) elapsed_time,
  32.                        operation_type,
  33.                        policy,
  34.                        estimated_optimal_size,
  35.                        last_memory_used,
  36.                        last_execution,
  37.                        active_time,
  38.                        num_sort_operations,
  39.                        SUM(tot_active_time) OVER(PARTITION BY matching_criteria) tot_active_time,
  40.                        SUM(tot_optimal_executions) OVER(PARTITION BY matching_criteria) tot_optimal_executions,
  41.                        SUM(tot_onepass_executions) OVER(PARTITION BY matching_criteria) tot_onepass_executions,
  42.                        SUM(tot_multipasses_executions) OVER(PARTITION BY matching_criteria) tot_multipasses_executions,
  43.                        MAX(max_tempseg_size) OVER(PARTITION BY matching_criteria) max_tempseg_size,
  44.                        SUM(tot_active_time) OVER() all_tot_active_time,
  45.                        ROW_NUMBER() OVER(PARTITION BY matching_criteria ORDER BY tot_multipasses_executions DESC, tot_onepass_executions DESC, last_memory_used DESC) rnum,
  46.                        parsing_schema_name
  47.                   FROM (SELECT s.sql_id,
  48.                                s.child_number,
  49.                                s.sql_text,
  50.                                s.executions,
  51.                                s.elapsed_time,
  52.                                s.force_matching_signature,
  53.                                CASE
  54.                                  WHEN s.force_matching_signature > 0 THEN
  55.                                   TO_CHAR(s.force_matching_signature)
  56.                                  ELSE
  57.                                   s.sql_id
  58.                                END matching_criteria,
  59.                                ROW_NUMBER() OVER(PARTITION BY s.sql_id, s.child_number ORDER BY sw.multipasses_executions DESC, sw.onepass_executions DESC, sw.last_memory_used DESC) rnum,
  60.                                sw.operation_type,
  61.                                sw.policy,
  62.                                sw.estimated_optimal_size,
  63.                                sw.last_memory_used,
  64.                                sw.last_execution,
  65.                                MAX(sw.max_tempseg_size) OVER(PARTITION BY s.sql_id, s.child_number) max_tempseg_size,
  66.                                sw.active_time * sw.total_executions active_time,
  67.                                SUM(sw.active_time * sw.total_executions) OVER(PARTITION BY s.sql_id, s.child_number) tot_active_time,
  68.                                COUNT(*) OVER(PARTITION BY s.sql_id, s.child_number) num_sort_operations,
  69.                                SUM(sw.optimal_executions) OVER(PARTITION BY s.sql_id, s.child_number) tot_optimal_executions,
  70.                                SUM(sw.onepass_executions) OVER(PARTITION BY s.sql_id, s.child_number) tot_onepass_executions,
  71.                                SUM(sw.multipasses_executions) OVER(PARTITION BY s.sql_id, s.child_number) tot_multipasses_executions,
  72.                                NVL(u.username, s.parsing_schema_name) parsing_schema_name
  73.                           FROM v$sql s, v$sql_workarea sw, all_users u
  74.                          WHERE sw.sql_id = s.sql_id
  75.                            AND sw.child_number = s.child_number
  76.                            AND u.user_id(+) = s.parsing_user_id)
  77.                  WHERE rnum = 1)
  78.          WHERE rnum = 1
  79.          ORDER BY tot_multipasses_executions DESC,
  80.                   tot_onepass_executions     DESC,
  81.                   last_memory_used           DESC)
  82. WHERE ROWNUM <= 200
  83. /

  84. SELECT *
  85.   FROM (SELECT s.sid,
  86.                s.machine,
  87.                s.program,
  88.                s.module,
  89.                s.osuser,
  90.                NVL(DECODE(TYPE,
  91.                           'BACKGROUND',
  92.                           'SYS (' || b.ksbdpnam || ')',
  93.                           s.username),
  94.                    SUBSTR(p.program, INSTR(p.program, '('))) username,
  95.                NVL(SUM(CASE
  96.                          WHEN sn.name = 'sorts (memory)' THEN
  97.                           ss.VALUE
  98.                          ELSE
  99.                           0
  100.                        END),
  101.                    0) sorts_memory,
  102.                NVL(SUM(CASE
  103.                          WHEN sn.name = 'sorts (disk)' THEN
  104.                           ss.VALUE
  105.                          ELSE
  106.                           0
  107.                        END),
  108.                    0) sorts_disk,
  109.                NVL(SUM(CASE
  110.                          WHEN sn.name = 'sorts (rows)' THEN
  111.                           ss.VALUE
  112.                          ELSE
  113.                           0
  114.                        END),
  115.                    0) sorts_rows,
  116.                NVL(SUM(CASE
  117.                          WHEN sn.name = 'physical reads direct temporary tablespace' THEN
  118.                           ss.VALUE
  119.                          ELSE
  120.                           0
  121.                        END),
  122.                    0) reads_direct_temp,
  123.                NVL(SUM(CASE
  124.                          WHEN sn.name = 'physical writes direct temporary tablespace' THEN
  125.                           ss.VALUE
  126.                          ELSE
  127.                           0
  128.                        END),
  129.                    0) writes_direct_temp,
  130.                NVL(SUM(CASE
  131.                          WHEN sn.name = 'workarea executions - optimal' THEN
  132.                           ss.VALUE
  133.                          ELSE
  134.                           0
  135.                        END),
  136.                    0) workarea_exec_optimal,
  137.                NVL(SUM(CASE
  138.                          WHEN sn.name = 'workarea executions - onepass' THEN
  139.                           ss.VALUE
  140.                          ELSE
  141.                           0
  142.                        END),
  143.                    0) workarea_exec_onepass,
  144.                NVL(SUM(CASE
  145.                          WHEN sn.name = 'workarea executions - multipass' THEN
  146.                           ss.VALUE
  147.                          ELSE
  148.                           0
  149.                        END),
  150.                    0) workarea_exec_multipass
  151.           FROM v$session  s,
  152.                v$sesstat  ss,
  153.                v$statname sn,
  154.                v$process  p,
  155.                x$ksbdp    b
  156.          WHERE s.paddr = p.addr
  157.            AND b.inst_id(+) = USERENV('INSTANCE')
  158.            AND p.addr = b.ksbdppro(+)
  159.            AND s.TYPE = 'USER'
  160.            AND s.sid = ss.sid
  161.            AND ss.statistic# = sn.statistic#
  162.            AND sn.name IN ('sorts (memory)',
  163.                            'sorts (disk)',
  164.                            'sorts (rows)',
  165.                            'physical reads direct temporary tablespace',
  166.                            'physical writes direct temporary tablespace',
  167.                            'workarea executions - optimal',
  168.                            'workarea executions - onepass',
  169.                            'workarea executions - multipass')
  170.          GROUP BY s.sid,
  171.                   s.machine,
  172.                   s.program,
  173.                   s.module,
  174.                   s.osuser,
  175.                   NVL(DECODE(TYPE,
  176.                              'BACKGROUND',
  177.                              'SYS (' || b.ksbdpnam || ')',
  178.                              s.username),
  179.                       SUBSTR(p.program, INSTR(p.program, '(')))
  180.          ORDER BY workarea_exec_multipass DESC,
  181.                   workarea_exec_onepass DESC,
  182.                   reads_direct_temp + writes_direct_temp DESC,
  183.                   sorts_rows DESC)
  184. WHERE ROWNUM <= 200
  185. /

  186. SELECT rawtohex(workarea_address) workarea_address,
  187.        sql_id,
  188.        sql_text,
  189.        operation_type,
  190.        policy,
  191.        sid,
  192.        active_time,
  193.        work_area_size,
  194.        expected_size,
  195.        actual_mem_used,
  196.        max_mem_used,
  197.        number_passes,
  198.        tempseg_size,
  199.        tablespace,
  200.        complete_ratio,
  201.        elapsed,
  202.        time_remaining,
  203.        opname,
  204.        machine,
  205.        program,
  206.        module,
  207.        osuser,
  208.        username
  209.   FROM (SELECT swa.workarea_address,
  210.                swa.sql_id,
  211.                sa.sql_text,
  212.                swa.operation_type,
  213.                swa.policy,
  214.                swa.sid,
  215.                swa.active_time / 1000 active_time,
  216.                swa.work_area_size,
  217.                swa.expected_size,
  218.                swa.actual_mem_used,
  219.                swa.max_mem_used,
  220.                swa.number_passes,
  221.                swa.tempseg_size,
  222.                swa.tablespace,
  223.                (CASE
  224.                  WHEN sl.totalwork <> 0 THEN
  225.                   sl.sofar / sl.totalwork
  226.                  ELSE
  227.                   NULL
  228.                END) complete_ratio,
  229.                sl.elapsed_seconds * 1000 elapsed,
  230.                sl.time_remaining * 1000 time_remaining,
  231.                sl.opname,
  232.                s.machine,
  233.                s.program,
  234.                s.module,
  235.                s.osuser,
  236.                NVL(DECODE(TYPE,
  237.                           'BACKGROUND',
  238.                           'SYS (' || b.ksbdpnam || ')',
  239.                           s.username),
  240.                    SUBSTR(p.program, INSTR(p.program, '('))) username,
  241.                ROW_NUMBER() OVER(PARTITION BY swa.sql_id ORDER BY sl.last_update_time DESC) rnum
  242.           FROM v$sql_workarea_active swa,
  243.                v$sqlarea sa,
  244.                (SELECT * FROM v$session_longops WHERE sofar <> totalwork) sl,
  245.                v$session s,
  246.                v$process p,
  247.                x$ksbdp b
  248.          WHERE sl.sid(+) = swa.sid
  249.            AND sl.sql_id(+) = swa.sql_id
  250.            AND swa.sid <> USERENV('sid')
  251.            AND sa.sql_id = swa.sql_id
  252.            AND s.sid = swa.sid
  253.            AND s.paddr = p.addr
  254.            AND b.inst_id(+) = USERENV('INSTANCE')
  255.            AND p.addr = b.ksbdppro(+)
  256.          ORDER BY swa.number_passes DESC, swa.work_area_size DESC)
  257. WHERE rnum = 1
  258. /
复制代码

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-12-23 19:36 , Processed in 0.061100 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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