如何在spfile中设置events
使用spfile的情况下设置trace和debug的多个events的方法:
1) 使用init.ora作为参数文件的events设置,在init$ORACLE_SID.ora中增加如下的参数项:
event='10325 trace name context forever, level 10'
event='10015 trace name context forever, level 1'
在这些项中间插入的参数,仅仅是最后一个时间有效.
2a) 使用sql命令设置spfile方式下的events:
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.
instance必须重启后这些参数才能生效.
2b) instance使用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;
ALTER SYSTEM SET
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
2c) 使用sql命令无法立即生效events:
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选项来设置修改spfile,并通过重启来生效.
2d) 这个命令也可以在NOMOUNT状态下执行,没必要mount或者open数据库.
3) 如果需要修改、增加或者移除一个event,则必须要在alter system命令中输入所有的events,并重启instance.
4) 清空所有events,使用命令:
SQL> ALTER SYSTEM RESET EVENT SCOPE=SPFILE SID='*' ;
System altered.
星号("*") 的使用不能在RAC模式下.在RAC模式下,必须要指定具体的instance名称.
5) 要使设置的events立即生效, 一般为了dumping或者tracing, 可以使用如下命令:
SQL> ALTER SESSION SET EVENTS='immediate trace name controlf level 2' ;
System altered.
注意语法的不同之处:
- "SESSION" vs "SYSTEM", "EVENTS" vs "EVENT", 关键字"level"前没有逗号(",") .
- 另外, 也可以通过独立的ALTER SESSION命令指定不同的event.
使用命令ALTER SYSTEM RESET EVENT SCOPE=SPFILE SID='*'可能无法清空events, Bug号2942335