今天客戶反映說udump下生成很多TRACE文件,導致系統空間不足。他們自己檢查發現系統設置了event
SQL> show parameter event
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
event string 10203 trace name context forever
客戶詢問該怎麼關閉trace。剛好借這個機會翻譯一下metalink上的文章:How To Set EVENTS In The SPFILE (文檔 ID 160178.1)
1、文本參數文件設置語法如下:
event="10325 trace name context forever, level 10"
event="10015 trace name context forever, level 1"
在這些行中間插入其他參數,僅僅最後一個是有效的
2a、通過spfile設置的語法如下:
SQL> ALTER SYSTEM SET
EVENT='10325 trace name context forever, level 10',
'10015 trace name context forever, level 1'
COMMENT='Debug tracing of control and rollback' SCOPE=SPFILE;
System altered.
也可以通過如下方法來設置:
SQL> alter system set event='10325 trace name context forever, level 10:10015 trace name context forever, level 1' scope=spfile;
上述設置必須重啓instance來使參數生效。
2b、實例必須已spfile啓動,否則alter命令將報錯
SQL> ALTER SYSTEM SET
EVENT='10325 trace name context forever, level 10',
'10015 trace name context forever, level 1'
COMMENT='Debug tracing of control and rollback' SCOPE=SPFILE;
ALTER SYSTEM SET
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
2c、不可按如下方式設置
SQL> ALTER SYSTEM SET
EVENT='10325 trace name context forever, level 10',
'10015 trace name context forever, level 1'
COMMENT='Debug tracing of control and rollback' SCOPE=BOTH;
EVENT='10325 trace name context forever,
*
ERROR at line 2:
ORA-02095: specified initialization parameter cannot be modified
如果遇到上述錯誤,需要使用SCOPE=SPFILE,並重啓數據庫。
2d、上述設置可以在nomount狀態下進行,無需mount或者open數據庫
3、如果需要增加或刪除events,需要完整的輸入ALTER SYSTEM命令,並重啓數據庫
4、移除所有的events設置
SQL> ALTER SYSTEM RESET EVENT SCOPE=SPFILE SID='*' ;
如果是RAC環境,需要將*替換爲具體的實例名。
5、爲了dumping或者tracing,一般要使設置的events立即生效
SQL> ALTER SESSION SET EVENTS 'immediate trace name controlf level 2' ;
System altered.
6、配置系統級的triggered事件,可使用如下命令
SQL> alter system set events '942 trace name ERRORSTACK level 3';
System altered.
7、關閉系統或者session級別的events事件,可使用如下語句
SQL> alter system set events '942 trace name ERRORSTACK off';
System altered
SQL> alter system set events='10325 trace name context off';
System altered
"SESSION" vs "SYSTEM", "EVENTS" vs "EVENT", 關鍵字"level"前沒有逗號(",") .
另外, 也可以通過獨立的ALTER SESSION命令指定不同的event.
關於取消events設置,有一個bug需要注意
bug:2942335:ALTER SYSTEM RESET EVENT SCOPE=SPFILE SID='*' NOT RESETING EVENTS