понедельник, 22 марта 2010 г.

Как обрезать errorlog не останавливая сервер Sybase ASE.

Способы выполнения этой задачи зависят от версии ASE и платформы, на которой он работает.

Unix-подобные системы.
Здесь стандартный способ обрезать открытый другим процессом - это скопировать в него файл /dev/null. Т.е. :

cat /dev/null > /opt/sybase/YOUSERVERLOG.log

В вашей системе путь к файлу лога может быть другим.
Для выполнения этой команды из ASE можно воспользоваться системной процедурой xp_cmdshell.
Надо также заметить что в силу особенностей работы файловой подсистемы этих ОС, удаление файла лога или переименование пустого файла в файл лога не поможет - ASE будет все так же писать в свой старый файл.

Win32 (все Windows-ы)
Лог может быть обрезан открытием файла лога в редакторе Notepad, удалением всех строк и сохранением его. На самом деле конечно это может быть любой редактор, который не открывает файл в монопольном режиме для чтения и записи.
Кроме того, нужно отметить, что все особенности файловой системы Unix-подобных систем присущи и файловой системе NTFS, так что трюк с cat /dev/null > yourlog
также работает. Утилиту cat можно взять например в пакете CygWin.

Начиная с ASE 12.5 лог можно привязать к прокси-таблице ( в 12.5 появилась возможность делать прокси-таблицы на файлы ОС ) и тогда лог очищается коммандой

SQL>truncate table MYERRORLOG

где MYERRORLOG - прокси-таблица, привязанная к файлу лога ASE.
Этот способ работает на всех платформах, где работает ASE.

Комментариев нет:

Отправить комментарий