ITPub博客

首页 > 数据库 > Oracle > [20210407]完善ti.sql脚本.txt

[20210407]完善ti.sql脚本.txt

原创 Oracle 作者:lfree 时间:2021-04-07 10:11:23 0 删除 编辑

[20210407]完善ti.sql脚本.txt

--//tanel poder提供一个脚本ti.sql,更改跟踪文件名称。不过他的脚本要调用saveset,loadset保存和加载sqlplus的设置。
--//首先我的测试他的脚本确实有用,我以前为了避免跟踪文件的混乱,经常选择退出再登录,而且这样的缺点就是不好做系列分析比较。
--//主要还是文件名比较混乱。

--//但是在测试ti.sql时,我个人不是很习惯一些操作:

1.环境:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> @ ti
Enter value for _ti_sequence:
old   1: select trim(to_char( &_ti_sequence + 1 , '0999' )) "_ti_sequence" from dual
new   1: select trim(to_char(  + 1 , '0999' )) "_ti_sequence" from dual
old   1: alter session set tracefile_identifier="&_ti_sequence"
new   1: alter session set tracefile_identifier="0001"
New tracefile_identifier=/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_33696_0001.trc

SYS@book> @ ti
old   1: select trim(to_char( &_ti_sequence + 1 , '0999' )) "_ti_sequence" from dual
new   1: select trim(to_char( 0001 + 1 , '0999' )) "_ti_sequence" from dual
old   1: alter session set tracefile_identifier="&_ti_sequence"
new   1: alter session set tracefile_identifier="0002"
New tracefile_identifier=/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_33696_0002.trc

--//首先要求要给_ti_sequence赋值,当然不赋值也可以。很讨厌的是我给盲打几个回车。
--//实际上主要问题,我改名目录里面的login.sql文件,这样启动sqlplus时不会调用。里面会调用init.sql
--//里面就存在_ti_sequence的定义。

-- some internal variables required for TPT scripts

    define _ti_sequence=0
    define _tptmode=normal
    define _xt_seq=0

--//如果我改名login.sql回来,每次登录就会显示如下:
USERNAME             INST_NAME            HOST_NAME                 SID   SERIAL#  VERSION    STARTED  SPID            OPID  CPID            SADDR            PADDR
-------------------- -------------------- ------------------------- ----- -------- ---------- -------- --------------- ----- --------------- ---------------- ----------------
SYS                  book                 xxxxydg4                  48    417      11.2.0.4.0 20210406 34253           27    34252           0000000086382890 000000008620F338

SYS@book> @ ti
New tracefile_identifier=/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_34253_0001.trc

SYS@book> @ ti
New tracefile_identifier=/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_34253_0002.trc

--//我个人并喜欢这样操作。最简单的方式调用前执行改名的login.sql,在调用ti。

SYS@book> @ login.sql.old
USERNAME             INST_NAME            HOST_NAME                 SID   SERIAL#  VERSION    STARTED  SPID            OPID  CPID            SADDR            PADDR
-------------------- -------------------- ------------------------- ----- -------- ---------- -------- --------------- ----- --------------- ---------------- ----------------
SYS                  book                 xxxxydg4                  48    419      11.2.0.4.0 20210406 34299           27    34298           0000000086382890 000000008620F338

SYS@book> @ ti
New tracefile_identifier=/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_34299_0001.trc

--//我决定还是自己改写一个。
 $ cat tix.sql
--@@saveset
column _ti_sequence noprint new_value _ti_sequence
set feedback off heading off
select trim(to_char( &&_ti_sequence + 1 , '0999' )) "_ti_sequence" from dual;
alter session set tracefile_identifier="&&_ti_sequence";
set feedback on heading on
set termout off
column tracefile noprint new_value trc
        select value ||'/'||(select instance_name from v$instance) ||'_ora_'||
               (select spid||case when traceid is not null then '_'||traceid else null end
                from v$process where addr = (select paddr from v$session
                                                 where sid = (select sid from v$mystat
                                                            where rownum = 1
                                                       )
                                            )
               ) || '.trc' tracefile
        from v$parameter where name = 'user_dump_dest';

set termout on
--@@loadset

prompt New tracefile_identifier=&&trc
col tracefile clear
set feedback 6 heading on

--//将define _ti_sequence=0定义写入文件:
--///u01/app/oracle/product/11.2.0.4/dbhome_1/sqlplus/admin/glogin.sql就ok了。

--//不过12c以后这个脚本就变得无用了,指示的目录名字不对。主要是oracle转储不再放在user_dump_dest定义的目录。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2766793/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2891
  • 访问量
    6669809