I had my journal files all on one disk which died :(
The database files are all fine, but I having issues. Can I bypass the need for the journal files?
Global journaling records all global update operations performed on a database, and used in conjunction with backup makes it possible to restore a database to its state immediately before a failure or crash.
While backup is the cornerstone of physical recovery, it is not the complete answer. Restoring a database from backup does not recover global updates made since that backup, which may have been created a number of hours before the point at which physical integrity was lost. These post-backup updates can be restored to the database from journal files after the database is restored from backup, bringing the database up to date. Any transactions open at the time of the failure are rolled back to ensure transaction integrity.
I had my journal files all on one disk which died :(
The database files are all fine, but I having issues. Can I bypass the need for the journal files?
Hi,
We have Mirroring established between NODE 1 & Node 2 . We have set the "cachesys" database enabled for Journalling. But we dont see the User Accounts , Roles, Resources created on Node 1 ( favoured Primary) reflected on Node 2 . Is creating them manually again is the only option for this ? . Is there any way to sync them or would adding %SYS to MIRROR a possible solution. Would it be great if anyone has faced this as we have an issue that during failovers Team is locked out .
Best Regards,
Arun Madhan
Currently, we are running 2014.1 on two different servers (OpenVMS, RHEL). The plan is to transition from OpenVMS to RHEL, but our Write Daemon is in a Troubled state on both servers.
On the OpenVMS server, we have a WIJ file that's 26G and can grow to 40G (size of database cache). Since it hasn't grown to 40G, we don't believe the size of the WIJ file to be the issue.
What else should we be looking at regarding the performance of the Write Daemon?
I'm purging a lot of management data from an Ensemble production, which is creating 100s of GBs of journals. Has anybody succeeded in disabling journaling on an Ensemble purge? The user interface doesn't have an option for this, but I'm thinking you might be able to identify the process and externally disable journaling on it.
I need to turn off Journalling for a particular database programmatically.
How can I make it happen?
We are finally planning to migrate some ancient Caché applications that are run on Caché 5.0.21 to a new server with Caché 2016.2.0 or so.
I wonder if we could use Shadowing between those to keep the data on the new server up to date?
We would copy the Caché backup from the old environment to the new and do a RESTORE there and then start shadowing.
I know than 5.0.21 is no more officially supported by ISC.
Hi,
We are using CACHE 2017.2.1, I would like to retrieve data from Journal for killed global. Let say we have global name ^ EMP(123) with data and also have some child nodes and it has been killed by using cache kill command for some reason and we don't know who has executed this and when. My questions are below.
1) Can we get back the data of killed global from journal files,Is it possible or not ?
2) If above question is Yes, then how to find that specific journal file, which has the global which has been killed?
Hi,
I'm having a problem when I'm attempting to freeze the instance.
I have a pre-script and post-script to freeze and unfreeze the instance, but when the script execute:
csession INSTANCE_NAME -U '%SYS' "##Class(Backup.General).ExternalFreeze(\"$SNAPLOG\",,,,,,1800)"
It's give me this error and fails the freeze:
Backup.General.ExternalFreeze: Failed, Unable to switch local journal file, Error: -99,ERROR #1142: Error switching journal file: 0 vi
At cconsole.
I am still working on a generic task where I need to apply journal file records to another database. Initially I didn't want to use Journal.Restore class methods as I need to perform some data transformation, and it seemed that the clearest way to achieve it was to read journal file record by record using %SYS.Journal.Record API.
This approach worked (with some help from @Dmitry Konnov Maslennikov and @Eduard Lebedyuk), while it turned that the processing speed of %SYS.Journal.Record:List query was very slow, about 1MB of journal data per second on a mid-range server.
Prmoetheus is a really good to combine measures, and export them in graphical dashboards
I would like to write some a caché exporter for Prometheus, that will allow to expose some metrics of the database, or even some metrics of my own
Did anyone already tried ?
Thank for the answer
The steps are as follows:
1. create global
For I=1:1:200 Set ^ABC(I)=""
For I=1:1:200 Set ^XYZ(I)=""
For I=1:1:100 Kill ^ABC(I)
2. create ZJRNFILT
ZJRNFILT(jid,dir,glo,type,restmode,addr,time) /*Filter*/
Set restmode=1 /*Return 1 for restore*/
If glo["^ABC",type="K" Set restmode=0 /*except if a kill on ^ABC*/
Quit
;
3. restore
s RestOref=##class(Journal.Restore).%New()
s RestOref.FirstFile="20190717.007"
s RestOref.LastFile="20190717.007"
s RestOref.JournalLog="journal.log"
s RestOref.Filter="^ZJRNFILT"
s Status=RestOref.
I'm a DBA and support Caché databases on AIX. I coded shell scripts for monitoring journaling status, databases size, license end date.
We recently got a new instance of Caché on Windows. I'm just curious to know whether anyone coded database monitoring scripts on Windows using PowerShell or any other scripting language.
If yes, please share the details.
Thanks & Regards,
Bharath Nunepalli.
Just wondering if anyone knows if there is a way to get daily emails or alerts about changes to a cache database. I know that all of that information is contained within the journal files, just wondering if there is a way to bundle it up each day and send it off for auditing, etc.
Any solution where a plain-text/readable format of changes to the cache database could be sent or stored for review would solve the issue.
Thanks!
My fantasy didn't go beyond periodically running %SYS.Journal.System:Progress() class query, while I'd prefer to use an event handler of some kind. Any ideas?
I'm working on a task where I need to apply journal file records to another database. I can't use Journal.Restore class methods as I need to perform some data transformation, therefore I'm reading journal file record by record using %SYS.Journal.Record API.
It seems that there are only few journal records that I need to process, namely:
Type TypeName
No problem, while I'm just curious: which COS command could provide KILLdes record? I've met it only once in the context like this:
KILLdes ^SYS("Task","TaskD",1006,"EmailOnError",1)I see command shortcuts for getting journal details, like Status^JOURNAL for displaying the journal status.
And, I'm using the shortcuts in my shell scripts.
I'm not seeing/finding command shortcuts for getting database details.
If anyone have those details, please share with me.

Thanks,
Bharath Nunepalli.
Is View Journal of Cache Management Portal the only way to search in Cache journals? I need a way to define several search conditions and Portal often breaks on http timeout.
Sorry about my newbie question.
How do you decide the size to give to journal1 and journal2?
PS: I am still in version 2016
Thank you
In System Administration | Configuration | System Configuration | Journal Settings there is a check box for Freeze on error.
From reading the documentation, it sounds like the choice to freeze on error is one of system availability vs system integrity.
Curious to know whether Ensemble users choose to freeze on error or not.
If you have a best practice recommendation based upon your experience or knowledge, that would be helpful information too.
One of my journal spaces has status "IOER" in MSM MUMPS.
I think this is happend during system freeze.

I never seeing a journal file status like that. I did not find anything about it in the intersystems documentation.
I can simply delete the damaged file, but I'd like to know how to prevent this from happening.
Anyone have some idea about it?
My MSM-UNIX Version is 4.4.0.
Thanks
I am new to Cache, we are trying to move a 4 TB database over the internet, but this will be take too long to copy the single backup file. In Oracle and MS-SQL Server there is an option of doing log shipping. Is there such an option in Cache?
I want to copy the initial backup file one weekend, then keep sending the Journals (logs) the new location.
Thank you,
Eudoro
Hello, community!
I've stumbled on some unexpected behavior, and decided to check with you if this is normal. Basically, I'm rebuilding indices and the result is not journaling (which leads to missing indices at shadow server).
The $ZV is "Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2015.2.1 (Build 705U) Mon Aug 31 2015 16:53:38 EDT"
I have an example class
Class tmp.A As %Persistent; Index IP1 On P1; Property P1 As %String;
for example there is one object which have P1 = 1, so
^tmp.AI("IP1",1,1) = ""If I rebuild it wth
I had configured the environment as follows:
OS: Redhat Linux 9.4
IRIS 2025.2 installed on local directory
IRIS Database: One LVM is created with 20 Storage luns and the LVM is mounted on a mount point. IRIS database is created on that
Primary and Alternate Journal: One LVM is created with 5 Storage luns and the LVM is mounted on a mount point. IRIS database is created on that.
WIJ: One LVM is created with 5 Storage luns and the LVM is mounted on a mount point. IRIS database is created on that.
So Data, WIJ and Journal is mounted on 3 separate mount point.