powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
20 сообщений из 20, страница 1 из 1
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37094629
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
И если да, то как?
Аудит и интим не предлагать :)
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37094747
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,

The Ribo utility captures, translates, and displays the Tabular Data
Stream™ (TDS) protocol flowing between a TDS client and TDS server

Sybase\jutils-3_0\ribo\doc
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37094753
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAV4SAVImperous,

The Ribo utility captures, translates, and displays the Tabular Data
Stream™ (TDS) protocol flowing between a TDS client and TDS server

Sybase\jutils-3_0\ribo\doc
Извиняюсь, в 12.5 клиенте будет в составе jutils-2_0
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37094815
VitaliyM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Embarcadero DSAuditor
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37094831
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пасиб, смотрю :)
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37094885
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ribo не подходит
Embarcadero DSAuditor наверное тоже

интересовал больше вопрос по части сделать это силами самого ASE.
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37094943
VitaliyM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
then:
1.logon triggers with custom audit - heavy option
2.mda tables might be used but would be tricky in configuration and can utilize up to 25% of existing resources.

Anyway there is no solution to be used constantly. These two and ribo can be used to solve some existing issues only.

DSAuditor may be better option but its price makes things worse.
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37095277
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще нужно сделать что-то типа transaction log самодельного. Желательно, чтоб была возможность подключения/отключения этого лога на таблички по выбору. Допустим, мне нужно неделю отслеживать, кто, что, когда добавил, удалил, изменил в одной табличке. Т.е. не хотелось бы для этого включать разные мониторы, которые тупо завалят производительность всего сервера. А вот на триггер повесить процедурку какбы хотелось, но не получается тогда узнать что именно было в записи ДО выполнения действия. Т.е. нет before.
Adaptive Server Enterprise/12.5.4/EBF 16831 ESD#9.1/P/x86_64/Enterprise Linux/ase1254/2146/64-bit/OPT/Wed Apr 15 03:57:32 2009

Может можно как-то расколупать его собственный транзакционный файл? Или это не реально? Мож у кого есть какие идеи?
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37095292
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jab А вот на триггер повесить процедурку какбы хотелось, но не получается тогда узнать что именно было в записи ДО выполнения действия. Т.е. нет before.


снять копию таблицы, накатить триггеры и получить следующее:
1) что было ДО (копия таблицы)
2) что было удалено
3) что было добавлено
4) что было изменено

?
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37095349
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

В принципе такое возможно и мы нечто подобное уже не раз делали,
единственная проблема в хранении полей типа image, text короче
всего того что не влазит в varchar
1.создаем 3 таблицы
create table LO (
LO_ID numeric(6,0) not null ,
LO_RFN varchar(50) null ,
LO_ISN varchar(30) null ,
LO_TYPE char(1) null
)
create table LL (
LL_ID numeric(16,0) not null ,
LL_DATE datetime not null ,
LO_ID numeric(6,0) null ,
LL_OPER char(1) null ,
LL_COND varchar(256) null ,
COMM varchar(256) null ,
USER_ID numeric(6,0) null ,
hostname char(10) null ,
ipaddr char(15) null ,
program_name varchar(30) null
)
create table LD (
LL_ID numeric(16,0) not null ,
LO_ID numeric(6,0) not null ,
COL_NAME varchar(30) not null ,
COL_VAL varchar(256) null
)
2.Создаем процедуру
/* примечание:
у нас есть такая таблица CA_SYS в которой есть поле NO_LOG и всего ОДНА зарпись
NO_LOG = 1 - не журанлировать ничего, но в принципе можно в таблице LO сделать флаги
по отключению журнала индивидуально
*/

CREATE PROCEDURE dbo.sp_ll
/* Запись в системный журнал */
@ll_id numeric(16,0) output /* Id записи журнала (если not null то к старой записи добавляет детализацию по колонкам ) */ ,
@lo_id numeric(6,0) output /* Id объекта (для детализации) */ ,
@LO_RFN varchar(50) , /* Полное наименование объекта (надо для авт. вставки) */
@LO_ISN varchar(30) , /* Краткое наименование объекта (надо для авт. вставки) */
@LO_TYPE char(1) , /* Тип обьекта P,T (надо для авт. вставки) */
@ll_OPER char(1) , /* Тип операции A,U,D,E*/
@LL_COND varchar(256), /* Условие поиска записи */
@COMM varchar(256), /* Комментарий */
@COL_NAME varchar(30) , /* Имя колонки */
@COL_VAL varchar(256) /* Новое значение */

AS
BEGIN
if @ll_id is null /* если записи в журнале еще нет - вставить, если есть то добавить детальную информацию (например изменение по списку колонок) */
begin
/* определение пользователя если нет - то не журналировать*/
declare @user_id numeric(6,0), @program_name varchar(30)

if isnull( (select no_log from ca_sys),1) = 1 return /* отключение */

select @user_id = null

select @user_id = user_id, @program_name = program_name
from usersession
where spid = @@spid
and isnull(no_log, 0) = 0

if @USER_ID is null select @USER_ID = 1
if @USER_ID = 1 return

if @USER_ID is not null or @LL_OPER='E' /* запись не выполняется если нет @user_id или он отключен(no_log<>0) кроме типа 'E'*/
begin
/* определение id объекта - таблицы */
if @lo_id is null
begin
select @LO_ID = null
select @LO_ID = LO_ID
from LO
where LO_ISN = @LO_ISN
and LO_TYPE = @LO_TYPE
end

if @LO_ID is null /* если записи нет в таблице объектов - вставить */
begin
exec sp_next_key 'LO', @LO_ID output
insert into LO (LO_ID, LO_RFN, LO_ISN, LO_TYPE)
values (@LO_ID, @LO_RFN, @LO_ISN, @LO_TYPE)
end

exec sp_next_key 'LL', @LL_ID output
insert into LL (LL_ID, LL_DATE, LO_ID, LL_OPER, LL_COND, COMM, USER_ID, hostname, ipaddr, program_name )
select @LL_ID, getdate(), @LO_ID, @LL_OPER, @LL_COND, @COMM, @USER_ID, hostname, ipaddr, @program_name
from master..sysprocesses
where spid = @@spid

end
end
if @LO_ID is not null and @LL_ID is not null and @COL_NAME is not null
begin
/* вставка в LOC имени поля если такого там нет */
if not exists (select COL_NAME from LOC where LO_ID=@LO_ID and COL_NAME=@COL_NAME)
insert into LOC(DW, DW_COL, LO_ID, COL_NAME)
values ('default', @COL_NAME, @LO_ID, @COL_NAME)
/* значения полей */
insert into LD(LL_ID, LO_ID, COL_NAME, COL_VAL)
values (@LL_ID,@LO_ID, @COL_NAME,@COL_VAL)
end
return
end

3. В триггерах на таблицы пишем
create trigger ti_sg_drugs on SG_DRUGS for insert as
begin
....
-- в этой таблице два поля SG_ID, DRUG_ID

if isnull( (select no_log from ca_sys),1)=1 return
declare
@ll_id numeric(16,0),
@lo_id numeric(6,0),
@col_val varchar(255),
@ll_cond varchar(255),

@SG_IDs varchar(255),
@DRUG_IDs varchar(255)

declare cColCur cursor
for select rtrim(convert(varchar(255),SG_ID)),
rtrim(convert(varchar(255),DRUG_ID))
from inserted
open cColCur
fetch cColCur into @SG_IDs, @DRUG_IDs
while (@@sqlstatus = 0)
begin
select @LL_COND='SG_ID='+@SG_IDs+' AND DRUG_ID='+@DRUG_IDs

exec sp_ll @ll_id output, @lo_id output, 'SANET', 'SG_DRUGS' ,'T','A',@LL_COND, null,'SG_ID',@SG_IDs
exec sp_ll @ll_id output, @lo_id output, 'SANET', 'SG_DRUGS' ,'T','A',@LL_COND, null,'DRUG_ID',@DRUG_IDs
select @ll_id = null
fetch cColCur into @SG_IDs, @DRUG_IDs
end
....

Вот как то так
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37095379
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В дополнение к предыдущему посту

1.таблица usersession заполняется нашей прогой в момент коннекта
2.процедура нужна потому что в таблице LD, LL нельзя делать identity
create procedure sp_next_key
@table_name varchar(128),
@max_id numeric(16) out
AS
begin
declare @table_id int
select @max_id = null
select @table_id = table_id
from table_key
where upper(table_name) = upper(rtrim(@table_name))

if @table_id is null return

begin tran
update table_key
set max_id = max_id + 1
where table_id = @table_id

select @max_id = max_id
from table_key
where table_id = @table_id
commit tran
return 0
end

3.Таблица TABLE_KEY
create table TABLE_KEY (
TABLE_ID int not null ,
TABLE_NAME varchar(128) not null ,
MAX_ID numeric(16,0) not null ,
CHANGE_DATE timestamp null
)
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37095449
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 03.02.2011 11:36, Imperous wrote:

> интересовал больше вопрос по части сделать это силами самого ASE.

ribo -- это ASE-шная утилита.

А так есть ещё аудит.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37095465
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Drive_ , получается в лог сбрасывается столько записей, сколько полей было в таблице?

Просто вот в FoxPro делалось так:
for countField=1 to nField
cField=arrField(countField,1)
arrChange(countField,1)=cField
arrChange(countField,2)=oldval(cField)
arrChange(countField,3)=&cField
if !lIsChange and cRecOper="U"
lIsChange=oldval(cField)#&cField
else
lIsChange=.T.
endif
next
select &cAlias
if lIsChange
insert into &cAlias (dat_tran,nam_user,nam_tabl,nam_prog,oper);
values(datetime(),sys(0),cTable,Program(0),cRecOper)
SAVE TO MEMO What_do ALL LIKE arrChange
endif

Сбрасывалось в таблицу лога 1 запись, но в мемо поле загонялся массив из значений до изменения и значений после.
Тут както можно узнать значение до? типа oldval(cField)

В общем всеравно спасибо. Надо в этом посидеть разобраться ещё...
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37095535
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jab,

конечно можно
в триггерах для ASE можно обращаться к "виртуальным" таблицам
inserted (это новые значения) и deleted (это старые значения) ... например

create trigger tu_ret on RET for update as
begin

declare
@ll_id numeric(16,0),
@lo_id numeric(6,0),
@col_val varchar(255),
@ll_cond varchar(255)

declare @RET_ID varchar(10),
@NEW_ORGFNAME varchar(255),
@OLD_ORGFNAME varchar(255)

declare cColCur cursor for select
rtrim(convert(varchar(10),N.RET_ID)),
rtrim(convert(varchar(255),N.ORGFNAME)),
rtrim(convert(varchar(255),O.ORGFNAME)),
from inserted N, deleted O
where N.RET_ID = O.RET_ID
open cColCur
fetch cColCur into @RET_ID,
@NEW_ORGFNAME,
@OLD_ORGFNAME,
while (@@sqlstatus = 0)
begin
select @ll_cond = 'RET_ID='+@RET_ID
select @where = ' WHERE RET_ID='+@RET_ID
-- в @NEW_ORGFNAME - новое значение
-- в @OLD_ORGFNAME - старое значение

end

в триггере на insert есть только INSERTED
в триггере на update есть INSERTED и DELETED
в триггере на delete есть только DELETED
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37096014
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Drive_в триггере на update есть INSERTED и DELETED

Ух тыш блин.. Это как в MSSQL получается.. я чот не подумал.. даа... эт получается он типа на апдейте делает по сути 2 операции с таблицей... чот на курсах както давно рассказывали проэто и уже забыл благополучно. :) Спасибо.
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37096938
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 03.02.2011 13:47, jab wrote:

> Вообще нужно сделать что-то типа transaction log самодельного. Желательно, чтоб
> была возможность подключения/отключения этого лога на таблички по выбору.

Объясни пож. какое отношение ты имеешь к топикстартеру. А то непонятно как-то.

> процедурку какбы хотелось, но не получается тогда узнать что именно было в
> записи ДО выполнения действия. Т.е. нет before.

Есть INSERTED, там как раз записи ДО изменения.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37096944
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 03.02.2011 17:28, jab wrote:

> Ух тыш блин.. Это как в MSSQL получается..

Это у MSSQL получается "как в ASE".
Если ты не в курсе, MSSQLServer -- это переделанный
одноплатформенный старый Sybase ASE. (10-ка почти).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37098822
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv , я в курсе, что мелкомягкие перекупили у сайба версию. Просто так вот словосочетание получилось. Не в этом суть. Просто забывается, когда редко пользуешся. В основном пользовательским интерфейсом приходится заниматься и отчетами. А к топикстартеру имею отношение по работе. Работаем на одно предприятие. Но это тоже особо не имеет отношения к вопросу. Просто я попробовал переформулировать его вопрос, чтоб было более понятно, что нам нужно в конечном итоге.
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37101147
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все, задолбался я основательно, соорудил один вариант - работает, но мне не очень нравится, а вот второй сооруженный вариант нравится больше, но не работает...
подскажите что там не так.

во вложениях - ddl-ки всех объектов, их нужно только запустить на выполнение чтоб создались таблицы и процедуры, а затем выполнить инсерт

заранее пасиба

ps
не выполняется exec()
...
Рейтинг: 0 / 0
Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
    #37111976
Imperousribo не подходит
Embarcadero DSAuditor наверное тоже

Подскажите пожалуйста почему для капчи ТДС не подходит РИБа и ВСАудитор !?

Собственно хотел задать тоже вопрос уважаемым форумчанам по теме - Capture TDS

Имеем - Sybase Adaptive Server Enterprise/12.5.4/EBF 16800 ESD#10/P/x86_64/Enterprise Linux/ase1254/2159/64-bit/

Для тестирования и прогнозирования нагрузки при миграции между серверами, расчета запаса производительности озадачился вопросом съема потока данных о приложения к СУБД. Вопрос собственно поставлен - как получить TDS ?

Для начала остановился на Quest SQL Optimizer for Sybase / подменю Sybase Monitoring Tables/QP Metrics. Он позволяет снять запросы из монтаблиц.

Решение замечательно снимает огромное кол-во запросов которые без проблем импортируются в Quest Benchmark Factory и оттуда уже в заданном количестве потоков «отыгрывается» на тестовой БД.
Но при этом при съеме в итоговую выборку не попадают все запросы и очень интенсивно забивается БД mon_db (sp_mda_collect – thank you Rob V. ).

Проблемы:
1. В итоговой выборке довольно часто вываливается «SQL text unavailable».
2. В режиме SQL inspector при уменьшении интервала съема даже до 1 милисекунды все равно не попадают все запросы, к тому же в лог СУБД падает ошибка:
kernel Internal error, FDP API, fdp_get_memory(): Failed to allocate 101727 bytes.
kernel Allocating a shared memory segment of size 576702464 bytes.


Изучив предварительно оф.доку, форумы остались вопросы собственно по SQL Optimizer:
1) каким образом оптимизер снимает данные и какие условия работы его пула к СУБД при которых происходит неудачное распределение памяти.
2) можно ли анализиром снять весь распознанный поток из монтаблиц. Может я что-то упустил в настройках !?

И самый главный вопрос какие еще можно использовать инструменты для съема TDS !?
Предварительно смотрю на Ribo.

Заранее благодарен за подсказки.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возможен ли перехват всех запросов посылаемых на Sybase 12.5?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]