ORACLE學習筆記 效能優化5

2021-09-08 03:26:52 字數 2647 閱讀 6607

18.怎麼清理臨時段

可以使用如下辦法

<1>、 使用如下語句檢視一下認誰在用臨時段

select username,sid,serial#,sql_address,machine,program,

tablespace,segtype, contents

from v$session se,v$sort_usage su

where se.saddr=su.session_addr

<2>、 那些正在使用臨時段的程序

sql>alter system kill session 'sid,serial#';

<3>、把temp表空間回縮一下

sql>alter tablespace temp coalesce;

還可以使用診斷事件

<1>、 確定temp表空間的ts#

sql> select ts#, name from v$tablespace;

ts# name

-----------------------

0 sysyem

1 rbs

2 users

3* temp

...

<2>、 執行清理操作

alter session set events 'immediate trace name drop_segments level ts#+1'

說明:

temp表空間的ts# 為 3*, so ts#+ 1= 4,如果想清除所有表空間的臨時段,則,ts# = 2147483647

19.怎麼樣dump資料庫內部結構,如上面顯示的控制檔案的結構

常見的有

1、分析資料檔案塊,轉儲資料檔案n的塊m

alter system dump datafile n block m

2、分析日誌檔案

alter system dump logfile logfilename;

3、分析控制檔案的內容

alter session set events 'immediate trace name controlf level 10'

4、分析所有資料檔案頭

alter session set events 'immediate trace name file_hdrs level 10'

5、分析日誌檔案頭

alter session set events 'immediate trace name redohdr level 10'

6、分析系統狀態,最好每10分鐘一次,做三次對比

alter session set events 'immediate trace name systemstate level 10'

7、分析程序狀態

alter session set events 'immediate trace name processstate level 10'

8、分析library cache的詳細情況

alter session set events 'immediate trace name library_cache level 10'

20.如何獲得所有的事件**

事件**範圍一般從10000 to 10999,以下列出了這個範圍的事件**與資訊

set serveroutput on

declare

err_msg varchar2(120);

begin

dbms_output.enable (1000000);

for err_num in 10000..10999

loop

err_msg := sqlerrm (-err_num);

if err_msg not like '%message '||err_num||' not found%' then

dbms_output.put_line (err_msg);

end if;

end loop;

end;/

在unix系統上,事件資訊放在乙個文字檔案裡

$oracle_home/rdbms/mesg/oraus.msg

可以用如下指令碼檢視事件資訊

event=10000

while [ $event -ne 10999 ]

doevent=`expr $event + 1`

oerr ora $event

done

對於已經確保的/正在跟蹤的事件,可以用如下指令碼獲得

set serveroutput on

declare

l_level number;

begin

for l_event in 10000..10999

loop

dbms_system.read_ev (l_event,l_level);

if l_level > 0 then

dbms_output.put_line ('event '||to_char (l_event)||

' is set at level '||to_char (l_level));

end if;

end loop;

end;

/

ORACLE學習筆記 效能優化1

1.查詢正在執行語句的執行計畫 也就是實際語句執行計畫 select from v sql plan where hash value select sql hash value from v session where sid 1111 其中id和parent id表示了執行數的結構,數值最大的為...

ORACLE學習筆記 效能優化4

13.怎麼樣能固定我的執行計畫 可以使用outline來固定sql語句的執行計畫,用如下語句可以建立乙個outline create oe replace outline outln name on select col1,col2 from table where 如果要刪除outline,可以採...

ORACLE學習筆記 效能優化4

13.怎麼樣能固定我的執行計畫 可以使用outline來固定sql語句的執行計畫,用如下語句可以建立乙個outline create oe replace outline outln name on select col1,col2 from table where 如果要刪除outline,可以採...