Ik weet zeker dat iemand die dit leest, zal vragen:"hoe wist je dat niet?". Maar soms komen de eenvoudigste dingen laat in het spel tot ons, terwijl anderen het al vroeg wisten.
Ik patch Oracle op Windows sinds de Windows NT-dagen. Iedereen die Oracle patcht op Windows weet dat OPatch er vaak niet tegen kan dat sommige DLL-bestanden door andere processen worden vergrendeld. De gemakkelijkste manier voor mij om dit te omzeilen, is door de DLL-bestanden die door de patch worden vervangen, gewoon te hernoemen. Met het besturingssysteem kunt u de DLL-bestanden niet verwijderen, maar u kunt ze wel hernoemen en vervolgens kan OPatch doorgaan. In de begindagen van OPatch zou ik de toepassing uitvoeren, het zou de DLL uitspugen die was vergrendeld. Ik zou het DLL-bestand hernoemen en vervolgens OPatch opnieuw uitvoeren om het volgende DLL-bestand te krijgen dat was vergrendeld. Dit proces zou ongeveer 20 keer worden herhaald totdat OPatch geen vergrendelde DLL-bestanden vond. Als je OPatch nu uitvoert, krijg je in ieder geval een volledige lijst met DLL-bestanden die zijn vergrendeld.
Soms wil ik het proces weten dat het DLL-bestand vergrendelt. In het verleden zou ik een van die gratis beschikbare hulpprogramma's downloaden om me de processen te laten zien die het bestand in kwestie vergrendelen en het proces beëindigen. Maar ik hou er niet van dat freeware mijn servers opblaast, dus ik verwijder het hulpprogramma vaak als ik klaar ben. Tot de volgende keer dat ik dat hulpprogramma nodig heb...
Iemand wees me onlangs op Metalink Note 294350.1 die een klein goudklompje bevatte dat ik niet kende voordat ik dit document las. Blijkbaar bevat Windows een opdrachtregelprogramma om te laten zien welke processen DLL-bestanden vergrendelen. Ik kan nu het volgende doen:
tasklist /m
De uitvoer kan lang zijn, dus het is nuttig om de uitvoer in een bestand op te slaan en het bestand vervolgens in een teksteditor te openen:
tasklist /m > c:\oracle\task_list.txt notepad c:\oracle\task_list.txt
Ik kan dan de zoekfunctie van de teksteditor gebruiken om de betreffende DLL te lokaliseren.
Hoe komt het dat dit kleine hulpprogramma al die jaren aan mijn aandacht is ontsnapt?