Question Kevin McGinn · Jun 5, 2023

I need to mount a database from another system. We have copied a device from another systems and mounted the device. I want to mount the cache database on this new device to our current instance of cache. If I add the name and path of this new device to the cpf file, the instance fails to start stating the database does not exist. If I attempt to create the database via the management portal, the new device is not accessible. I am missing something but I am not sure what it is. What do I need to do to make the imported device accessible by my cache instance?

3
0 226
Question Kevin McGinn · Apr 20, 2023

Reviewing a client console log, I am finding the message:

Terminal disconnect: The specified network name is no longer available.
 

This message is repeated in the log dozens of times per day over the last month. The client has not raised a concern and our monitoring has not detected any issues with client ops. The client is not aware of any recent changes with their apps. I am not familiar with this message and whether this message is benign or whether there is any action required,

1
0 427
Question Kevin McGinn · Sep 19, 2022

In my Python script I import intersys2.pythonbind3 to create the connection and define a database object as db

I execute the method 

     res = self.db.run_class_method("%Library.GlobalEdit", "GetGlobalSize",[<db>, allocated,used])

This executes correctly as I loop through a list of databases.

Upon success I see that the return arg of "res" contains the string "status(0,)" which I interpret as successful. This is verified by the returned values of allocated and used being accurate. But I want to use the class/methods to get the status values from the returned structure

5
0 302
Question Kevin McGinn · May 31, 2022

I have a database with almost 1T of free space. I want to run the compaction process to reclaim and subsequently free that space. I am aware that this process is a background process but will the level of processing required to move this volume of space to the end of the file to allow for reclamation impact system usage while this process is running. Essentially, does this process run at a low priority and use  processing as available. I am trying to determine if I should run this over a weekend or can this be run at any time.

2
0 339
Question Kevin McGinn · Apr 26, 2022

I wrote this COS script that I can run in a terminal session to get a view of the cache users:

set hdl = ##class(%Library.ResultSet).%New()
set hdl.ClassName = "Security.Users"
set hdl.QueryName = "Detail"
set sc = hdl.Execute()

while hdl.%Next() { do hdl.%Print() }

I know this is a bit rudimentary  but this seems to be the correct script to get users. But looking at one of the clients AIX based instances there are about 3900 users. But this script returns no results. In fact, after the execute if I issue "w hd.%Next()" it returns 0. I look at "Do DisplayError^%apiOBJ(sc)" and the message is:

4
0 295
Question Kevin McGinn · Apr 15, 2022

When looking at the "Current License Usage Summary" web page, there is a line for both local and distributed "Maximum Connections". I have scrutinized every class that seems reasonable to contain this information but have found nothing that matches the values on the web page. I do not believe these are related to license specifically though I did review all of the potential attributes of the license related classes to no avail.

2
0 348
Question Kevin McGinn · Apr 14, 2022

I am writing a Python tools I want to access the %Monitor.System.License properties:

  1. AvailableDist
  2. AvailableLocal
  3. MaxUsedDist
  4. MaxUsedLocal
  5. CurrentUsedDist
  6. CurrentUsedLocal

Initially I want to develop Objectscript to verify access to the properties. But I can not figure the proper syntax.

I first attempted:

set ans = ##class(%Monitor.System.License).AvailableDist

which failed.

I tried another approach:

set ans = ##CLASS(%Monitor.System.License).%GetParameter("AvailableLocal")

2
0 299
Question Kevin McGinn · Mar 21, 2022

I have the object query:

s Rset=##class(%ResultSet).%New("%SYSTEM.License.UserListAll")

I can loop through that query and it generates the report information that I need.

I have a Python process where I use the intersys import to connect to the Cache instance. But I have been unable to determine the correct syntax in Python for this query. Being that 'UserListAll' is a query I attempted to user:

res = <query>.prepare("select * from %SYSTEM.License_UserListAll")

That failed stating 'UserListAll' did not exist. Though this did not seem to be correct, I also attempted:

2
0 371
Question Kevin McGinn · Mar 15, 2022

I have developed a process that pulls data elements from a cache instance using the tools provided with the "intersys.pythonbind3" import. This is a windows box. After validating the process, the next step is to install the process on a site (Windows) that does not have an installed version of cache and access the cache instance remotely. But, since intersys.pythonbind3 is part of the cache install, I am not sure what to do  to allow this process to function because of the missing import.

1
0 450
Question Kevin McGinn · Mar 10, 2022

I am in the process of creating a python report writer that includes the information contained in "License Usage" page of the management portal. I think I have a handle on the local values contained in the report using the %SYSTEM.License class I have those defined using these methods:

  Current License Units Used -     ->  LUConsumed

  Maximum License Units Used  --> LUMaxConsumed

 License Units Enforced               --> KeyEnforcedUnits

License Units Authorized            --> KeyLicenseUnits

Current Connections                   --> InstanceConnections

5
0 360
Question Kevin McGinn · Mar 9, 2022

I have a python script that is pulling the cache instance key expiration date ( KeyExpirationDate() ) which comes back as an integer. With the queryscript function - $ZDATE(73284) I can derive the actual expiration date. Is there a manner or method of creating an equivalent Python script that will convert the integer return by the KeyExpirationDate()  method into a date string?

1
1 303
Question Kevin McGinn · Mar 4, 2022

I am using the 

import intersys.pythonbind3 as pyb

conn     = pyb.connection()
conn.connect_now(...)
    
db      = pyb.database(conn)
qry        = pyb.query(db)
obj        = pyb.object(db)

for connection to the cache instance

However when I run this class method, The error message  indicates the method does not exist:

print(db.run_class_method("SYS.Database","GetStatus",[]))

intersys.pythonbind3.cache_exception: file=intersys/pythonbind3.c line=3034 err=-1000 message=<METHOD DOES NOT EXIST> 148 runMtdLow+22^%SYS.BINDSRV GetStatus,SYS.Database

3
0 279
Question Kevin McGinn · Mar 1, 2022

I am writing a Python tool to query our cache instances for various information. I have set up the connection without issue:

import intersys.pythonbind3 as pyb  

conn     = pyb.connection()
conn.connect_now(.....)
    
db      = pyb.database(conn)
qry     = pyb.query(db)
obj     = pyb.object(db)

I wanted to make the call:

execRes = qry.prepare_class("SYS.Database",'FreeSpace')

But fetching fails because of data mismatches ( as I understand from other posts) and my testing bears out this type of failure.

Instead I opted to attempt a query:

6
0 257
Question Kevin McGinn · Jan 31, 2022

I have a client with cache instance that is growing by 10-30G/day. In order to determine what is consuming space I ran "DO ^%GSIZE" to generate a report. From the report the bulk of the space consumption is from a couple of globals which appear to be built in globals not user defined. I would like to find documentation that details the function of these globals to help me understand how and why space is being consumed at such a rapid pace. The two globals of immediate concern are STRELPERF and STSRCHAUDIT but If there is reference where globals are defined that would be a useful tool going

4
0 439
Question Kevin McGinn · Jan 26, 2022

I am working with a client database that is growing exceptionally fast ( about 15G/day).  As I understand it, the usage of the global ^STMONITS to gather statistics can consume a large amount of database space. This client in question is using this global. I would like to determine of the 1.7T size of the database, how much is being consumed with statistics data by the usage of the ^STMONITS global. Is there a method to get this value whether a size or percentage of the database overall size.

2
0 246
Question Kevin McGinn · Oct 25, 2021

I am relatively new to Intersystems cache database management. As I understand it, a database is set with a maximum size or unlimited and the size of each space allocation for the database is defined. My understanding is that the cache database will then manage the allotment of space to the database as the current space allocation is consumed. Though I do not know why one would want to do this, I have been told that the space allocation to a database can be set to be handled manually. This is something, if true, I was not aware of. If this is true, what is the mechanism to set this up and

6
0 389
Question Kevin McGinn · Sep 28, 2021

I am executing the command:

      set fileComp = ##Class(SYS.Database).FileCompact(obj.Directory, freeSpace, .actualFree)

      where obj.Directory contains the location of the current database

This executes correctly. However, the resultant OREF object does not contain any displayable properties but rather is of the value:

       "0 "_$lb($lb(380,,,,,,,,,$lb(,"%SYS",$lb("e^zFileCompact+38^SYS.Database.1^1","e^^^0"))))/* ERROR #380: Completed but skipped some blocks, details recorded in the console log. */

2
0 261
Question Kevin McGinn · Sep 24, 2021

I have a terminal script that queries sys.process' and then parses the results writing to a logfile. As part of the processing of the results, each row of the result set includes an element from the static string.  But I am not clear on the scoping of the static string. The write statement sees the static string as undefined. What I want is something to the affect:

     set statStr = "aa|bb|.."

   set sqlStatement = xxx

   set tState  = ##class(%SQL.Statement).%New()

   set qStat   = tState.%Prepare(< sql statement> )

   set rset    = tState.%Execute()

2
0 267
Question Kevin McGinn · Sep 21, 2021

I am writing a report for a client that will create a report of the current process with a format that mimicks the Management Portal process display. I am writing a cterm script file to generate the report.

In the loop that process the results I am writing the columns in a formatted manner that will result in a CSV format very similar in content and order the process page. However, it appears that the write statement is limited in size such that I can not write out all of the elements of the sys.process query. My query result processing that works correctly is of this format:

4
0 244
Question Kevin McGinn · Sep 20, 2021

I can start cache without issue. There are no errors in the console log. However, when I access the management portal the page fails to display instead displaying the error page with the error "CSP application closed the connection before sending a complete response". This was working yesterday so the root cause is not clear. Reviewing all log files, the only error I have found is in the csp.log. The error is:

2
0 627
Question Kevin McGinn · Sep 9, 2021

I am trying to get a list of databases using the DatabaseByServer method but I am only getting an empty string. I have not found any useful examples of the proper usage of this class/method.

I have tried 2 formats. First

set dbList=""

set db=##class(Config.Databases).DatabasesByServer("my-host",.dbList)

I also tried:

set db=##class(Config.Databases).DatabasesByServer("my-host",.dbList,"/cachesys/")

In each case dbList is empty string. I can not figure out what I am missing.

2
0 139
Question Kevin McGinn · Sep 2, 2021

I am running csession on AIX. I have been using the command "csession cache -U%SYS". In the session the namespace shows as "%SYS>" as expected. I was simply doing queries to the best of my knowledge. At some point csession starting failing to reference the namespace instead showing /cachesys/mgr which is the main dir for the cache instance. I am not aware of doing anything that would cause this but more importantly, how do I correct it? I

8
0 483
Question Kevin McGinn · Aug 31, 2021

I have a client running cache on an AIX platform. I put together a objectscript to allow for the viewing the processes running against the database using a select from SYS.Process. One of the values I want in the view of the processes information is Jobtype but I want to convert it from the numeric value to a string value. In the Intersystems documentation there is a reference to an include file $syPidTab.inc that should include macros that make this translation. I have not been able to track down this include file. Is there a document that describes the name of the process associated with

2
0 215
Question Kevin McGinn · Feb 28, 2020

I am new to Intersystems cache COS scripts (cache is a client system). ThoughCOS scripts basically appear to be straight forward, I am having issues with the logon credentials. From what I have found in the documentation, the first 2 lines of the script contain the U/P. When running the script, the username is picked up correctly but the password is not. Granted, having U/P in a script is not ideal but will suffice as a matter of learning if I can figure out the formatting/syntax required. Any help on this would be appreciated.

Kevin McGinn

3
0 352
Question Kevin McGinn · Feb 26, 2020

I have a simple python script to pull table information from cache 2018.1.2 which is on a windows 10 machine. I get no results though the same query in the management portal works correctly:

import os
import sys
import intersys.pythonbind3 as ipyb
import numpy as np

# Connect to the Cache' database
url = "localhost[1972]:%SYS"
user = "xxxx"
password = "zzzzz"

accessKey = (url, user, password)

def main(accessKey):

8
0 308
Question Kevin McGinn · Sep 26, 2017

I have a Powershell script to backup up a Cache database. The script runs through and backs up the database  with the normal 4 iterations. The script successfully produces the backup file and an associated log file. However, after completion of the backup there is what appears to be a permission error. I have not been able to find any information that would help me determine if this message impacts the integrity of the back up. From the end of the output of the backup:

2
0 675