[20210407]完善ti.sql指令碼.txt

lfree發表於2021-04-07

[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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章