2014-01-07 3 views
2

В Oracle трассировка работает нормально, когда я изменяю параметры сеанса и устанавливаю tracefile_identifier, как показано ниже.Как использовать один файл трассировки для всех сеансов в Oracle?

alter session set max_dump_file_size = unlimited; 
alter session set timed_statistics=true; 
alter session set statistics_level=ALL; 
alter session set tracefile_identifier=mytracefile; 
alter session set sql_trace=true; 
alter session set events '10046 trace name context forever, level 12'; 

Но я хочу, чтобы создать единый файл трассировки для всех подключений в базе данных в течение определенного периода времени. Я пробовал одни и те же команды, но изменяя систему вместо сеанса. Я не могу изменить tracefile_identifier. Я получаю ORA-02096: specified initialization parameter is not modifiable with this. Пожалуйста, дайте мне знать, как этого достичь.

ответ

2

Короче говоря, это невозможно.

Файлы трассировки Oracle записываются на основе каждого процесса. Таким образом, любой фоновый процесс (PMON, SMON и т. Д.) Будет писать собственный файл трассировки, как и любой процесс сервера пользователя.

Если вы запускаете общий сервер, вы получите вывод трассировки нескольких сеансов в одном файле, так как эти сеансы совместно используют определенный серверный процесс.

Но, чтобы получить все, чтобы написать в один файл трассировки, невозможно.

Если вы хотите добавить дополнительную информацию в вопрос о требованиях к бизнесу и о том, чего вы на самом деле пытаетесь достичь, я могу предложить более качественное решение или альтернативное решение.

2

Инструмент trcsess действительно классный и, возможно, то, что вам нужно. Я использую его для трассировки приложений с использованием пула соединений - вы не знаете, какой сеанс будет активным.

Oracle 10g представил утилиту trcsess, которая позволяет идентифицировать и объединять информацию трассировки из нескольких файлов трассировки в один файл трассировки.

trcsess [output=<output file name >] [session=<session ID>] [clientid=<clientid>] 
     [service=<service name>] [action=<action name>] [module=<module name>] <trace file names> 

output=<output file name> output destination default being standard output. 
session=<session Id> session to be traced. 
Session id is a combination of session Index & session serial number e.g. 8.13. 
clientid=<clientid> clientid to be traced. 
service=<service name> service to be traced. 
action=<action name> action to be traced. 
module=<module name> module to be traced. 
<trace_file_names> Space separated list of trace files with wild card '*' supported. 
Смежные вопросы