如何在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

 

posted on 2009-12-23 12:06  一江水  阅读(1685)  评论(0编辑  收藏  举报