编者按:知识整理。
【免责声明】本公众号文章仅代表个人观点,与任何公司无关,仅供参考。
编辑|SQL和数据库技术(ID:SQLplusDB)
对于DB Link收集10046 Trace时需要在DBlink源端和目标端都进行设置,具体如下:
1. 在DB Link目标端定义一个存储过程用于触发10046。
1.1. 事先在DB Link目标端的远程数据库上,赋予登录用户 alter session权限。
例:
SQL> grant alter session to <用户名>;
1.2. 在DB Link目标端定义一个存储过程
例:
CREATE OR REPLACE PROCEDURE set10046trace as
BEGIN
execute immediate 'alter session set timed_statistics=true';
execute immediate 'alter session set max_dump_file_size = UNLIMITED';
execute immediate 'alter session set tracefile_identifier =''10046''';
execute immediate 'alter session set events ''10046 trace name context forever , level 12 ''';
END;
/
CREATE OR REPLACE PROCEDURE end10046trace as
BEGIN
execute immediate 'alter session set events ''10046 trace name context off ''';
END;
/
2.DBlink源端执行如下10046设置操作
例:
alter session set tracefile_identifier='10046';
-- 启用DBlink源端的SQL Trace
alter session set events '10046 trace name context forever, level 12';
-- 启用DBlink目标端的SQL Trace
EXECUTE set10046trace@DBLK1;
-- 执行问题SQL
<SQL语句执行>
-- 关闭DBlink源端的SQL Trace
EXECUTE end10046trace@DBLK1;
-- 关闭DBlink目标端的SQL Trace
alter session set events '10046 trace name context off';