首页 > 数据库 > Oracle > [20210407]完善ti.sql脚本.txt
[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博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2766793/ ,如需转载,请注明出处,否则将追究法律责任。