Сигурен съм, че някой, който чете това, ще попита:„Как не знаехте това?“. Но понякога най-простите неща ни идват късно в играта, докато други са го знаели рано.
Поправям Oracle на Windows от дните на Windows NT. Всеки, който кърпи Oracle на Windows, знае, че OPatch често ще се откаже от факта, че някои DLL файлове са заключени от други процеси. Най-лесният начин да заобиколя това е просто да преименувам DLL файловете, които ще бъдат заменени от корекцията. Операционната система няма да ви позволи да изтриете DLL файловете, но можете да ги преименувате и след това OPatch може да продължи. В първите дни на OPatch стартирах приложението, то щеше да изплюе DLL, който беше заключен. Бих преименувал DLL файла и след това бих стартирал отново OPatch, за да получа следващия DLL файл, който беше заключен. Този процес ще се повтори около 20 пъти, докато OPatch не намери заключени DLL файлове. Поне сега, когато стартирате OPatch, той ви дава пълен списък с DLL файлове, които са заключени.
Понякога искам да знам процес, който заключва DLL файла. В миналото бих изтеглял една от тези свободно достъпни помощни програми, за да ми покаже процеса(ите), които заключват въпросния файл и да прекратят процеса. Но не обичам безплатната програма да раздува сървърите ми, така че често премахвам помощната програма, когато свърша. До следващия път, когато имам нужда от тази помощна програма...
Някой наскоро ме насочи към Metalink Note 294350.1, който съдържаше едно малко самородно парче, което не бях запознат, преди да прочета този документ. Очевидно Windows включва помощна програма от командния ред, за да покаже кои процеси заключват DLL файлове. Вече мога да направя:
tasklist /m
Резултатът може да бъде дълъг, така че е полезно да съхраните изхода във файл и след това да отворите файла в текстов редактор:
tasklist /m > c:\oracle\task_list.txt notepad c:\oracle\task_list.txt
След това мога да използвам функцията за търсене на текстовия редактор, за да намеря въпросната DLL.
Как така тази малка помощна програма убягва от вниманието ми през всичките тези години?