go to post Alexey Maslov · Oct 29, 2016 Certainly yes: SQL quering of Audit database (%SYS.Audit) won't help if Auditing is switched off.
go to post Alexey Maslov · Oct 28, 2016 Using a repository is a good idea for sure, but what about a solution that can help even if an 'intruder' had bypassed it and changed a class, e.g., on production server? Here is one which answers who changed SomeClassName.CLS; this code can be executed in "%SYS" namespace using System Management Portal/SQL: SELECT DISTINCT TOP 1 s.UTCTimeStamp, s.OSUsername, s.Username, s.Description FROM %SYS.Audit as s WHERE s.Event='RoutineChange' AND s.Description LIKE '%SomeClassName.cls%' ORDER BY s.UTCTimeStamp desc It's easy to adapt it for searching the same info for MAC, INT and INC routines.Enjoy!
go to post Alexey Maslov · Oct 26, 2016 Hi Anzelem,May I ask you a couple of questions on your DR solution?Which node would take over on Primary failure: Cache Mirror Backup or VCS secondary if both are alive?More general: what is the main reason of mixing 2 different DR approaches?=Thanks
go to post Alexey Maslov · Oct 6, 2016 Sometimes such strange results are caused by ignoring the fact that usually there are several levels of caching, from high to low:- Caché global cache- filesystem cache (on Linux/UNIX only, as Windows version uses direct i/o)- hdd controller cache.So even restarting Caché can be not enough to drop the cache for clear "cold" testing. The tester should be aware of data volume involved, it should be much more than hdd controller cache (at least). mgstat can help to figure this out, besides it can show when you start reading data mostly from global cache rather than from filesystem/hdd.
go to post Alexey Maslov · Oct 6, 2016 Hi Murray, thank you for keep writing very useful articles.ECP is a rather complex stuff and it seems it does worth addition writing.Just a quick comment to your point: For sustained throughput average write response time for journal sync must be:<=0.5 ms with maximum of <=1 ms.How can one distinguish journal syncs from other journal records looking at iostat log only? It seems that 0.5-1ms limit should be applied to every journal write, not only to sync records.And a couple of small questions. You wrote that1) "...each SET or KILL the current journal buffer is written (or rewritten) to disk. " and2) "On very busy systems journal syncs can be bundled or deferred into multiple sync requests in a single sync operation."Having mgstat logs for a (non-ECP) system, is it possible to predict future journal syncs rate after scaling horizontally to ECP cluster? E.g., if we have average and peak mgstat Gloupds values, can we predict future journal syncs rate? What is the top rate of journal syncs when their bundling/deferring begins?
go to post Alexey Maslov · Oct 3, 2016 However, the Newbie can ignore it all, by using Caché SQLIf so, how do you answer the curious Newbie's question: why should I use Caché at all, as a few SQL implementations are available for free nowadays?Usually those questions were answered like this: Caché provides Unified Data Architecture that allows several access methods to the same data (bla-bla-bla), and the quickest of them is Direct Global Access. If we answer this way, we should teach how to traverse across the globals, so you are doing the very right and useful thing!There is only one IMHO: semantics can be more difficult to catch than syntax. Whether one writes `while (1) { ... }` or `for { ... }`, it's basically all the same, while using $order or $query changes traverse algorithm a lot, and it seems that this stuff should be discussed in more details.
go to post Alexey Maslov · Sep 30, 2016 Google answered that there are 2 options to replace '<' in PS, please see https://blogs.technet.microsoft.com/heyscriptingguy/2011/07/16/working-around-legacy-redirection-issues-with-powershell/ .
go to post Alexey Maslov · Sep 29, 2016 Basic and advanced mode were in an old version of another tool named ^Buttons. With ^pButtons you have an option to reduce the number of OS commands being performed, as it was shown in Tip #4.
go to post Alexey Maslov · Sep 28, 2016 Good Morning, William!To trace logon errors you should be interested in events with Name = LoginFailure
go to post Alexey Maslov · Sep 28, 2016 It is hard to guess what a kind of problem you have without looking at Cache Security audit records of your logon attempts.
go to post Alexey Maslov · Sep 26, 2016 Checking .LCK files is useless in most cases as Caché service auto-starts with OS startup. Of course, switching auto-start off is not a problem for development/testing environment.Frank touched another interesting question: how long WaitToKillServiceTimeout should be? If we set it to ShutdownTimeout + Typical_Real_Shutdown_Time, and Caché hangs during OS shutdown, I bet that typical Windows admin won't wait 5 minutes and finish with hardware reset... Choosing between bad and worse, I'd setWaitToKillServiceTimeout = Typical_Real_Shutdown_Timeletting OS to force Caché down in rare cases when it hangs.
go to post Alexey Maslov · Sep 26, 2016 As to documentation for Caché v. 2015.1, ShutdownTimeout parameter ranges from 120 to a maximum of 100,000 seconds with the default of 300 seconds. In my case its value is 120 seconds, but in the worst cases I've managed to find in my log shutdown performed faster, approx. 40 seconds, e.g.: 05/18/16-18:51:45:817 (3728) 1 Operating System shutdown! Cache performing fast shutdown. 05/18/16-18:52:27:302 (3728) 1 Forced 11 user processes. They may not have completed. 05/18/16-18:52:27:302 (3728) 0 Fast shutdown complete 05/18/16-18:52:27:474 (3728) 0 CONTROL exited due to force 05/18/16-18:52:27:630 (3656) 0 JRNDMN exited due to force 05/18/16-18:52:27:614 (3560) 0 GARCOL exited due to force 05/18/16-18:52:27:802 (1064) 0 EXPDMN exited due to force 05/18/16-18:52:27:786 (3760) 0 No blocks pending in WIJ file 05/18/16-18:52:27:880 (3760) 0 WRTDMN exited due to force while one can see word "force" in the log... It seems that OS shutdown is a special case of forcing Caché down, without waiting ShutdownTimeout seconds. I plan to adjust the registry value as suggested in this article and check what will happen on the next OS shutdown (when I decide to do it).
go to post Alexey Maslov · Sep 26, 2016 Steve, > if I were to see this I would then check that everything closed nicelyHow to do this check? Every Caché startup after its fast shutdown is corresponded with the following message in console log: 09/16/16-13:48:38:305 (2132) 2 Previous system shutdown was abnormal, system forced down or crashed while there are no logged signs of "normal" forcing down (system tables dump, etc). Maybe this rule has exceptions, but I've never seen them. ==Thank you,Alex
go to post Alexey Maslov · Sep 26, 2016 Mike,I fully agree with you that newbies should be aware of dotted syntax and some other old idioms that can be met in legacy code, but it seems that they also need some judgment from "oldies": which coding constructions are more or less acceptable and which should be avoided by any means (like usage of $ZOrder and $ZNext functions).P.S. (offtop) Could we meet each other in Bratislava in 1992?
go to post Alexey Maslov · Sep 26, 2016 Stephen, thank you for the info. May I ask you to clarify a little: should the console log messages like this one 08/29/16-09:41:03:376 (4864) 1 Operating System shutdown! Cache performing fast shutdown. be considered as sympthoms of this issue?
go to post Alexey Maslov · Sep 25, 2016 What is the reason to use $Zo when its standard reincarnation - $Query - exists more than 25 years (as to http://71.174.62.16/Demo/AnnoStd)?Poor newbies... their brains might explode of such amount of methods to do such simple thing.
go to post Alexey Maslov · Sep 24, 2016 We distribute a COS routine which runs after our application update is imported and does all the necessary job: checks if the TASKMGR's task already exists in schedule, and sets it up if not. Some tasks are the subject for manual setup as their settings may depend on local instance specific.
go to post Alexey Maslov · Sep 8, 2016 Bob, I suggested to deploy reporting async just because Kevin mentioned that his boxes have different roles: one is running production system, another is being used for development. How it can fit Kevins's needs depends on several factors, one of which: whether or not his code and data reside in separated databases.
go to post Alexey Maslov · Sep 8, 2016 Kevin, in addition to Bob's point:you can deploy mirror comprises two members: #1 - primary and #2 - async (reporting/RW). Definetely it is not real DR solution, just a way to implement two potentially different systems working with two slightly different copies of the same database.
go to post Alexey Maslov · Sep 8, 2016 Kevin,If your licenses for both platforms (different in InterSystems license model) allow running Mirroring, the question would be 'yes'. AFAIK, you need at least Entree Multi-Server.In most cases Cache programs don't depend on bitness of underlined platform, so you can run all of them in 64bit. The only cases when bitness comes to play occur when you are interacting with external applications, e.g. communicating through SQL GateWay with external DSN with 32bit ODBC driver when 64bit version of the driver is not available.I'd ask another question: Kevin, did you ever try to configure and run Mirroring on Windows 10? Was it working?I tried it a couple of months ago (Cache 2015.1.4 on Windows 10) and completely failed: mirror members could not communicate. Having enough experience in Mirroring deployment on Red Hat EL and MS Windows Server, I was sure that it was a platform issue rather than my own. As it was not of great importance for me, I decided not to disturb WRC and dropped it.