Wednesday, October 30, 2019

Too many spool files: Which outqs, users, and the oldest

spool file reporting using output_queue_entires sql view

At work we monitor the percentage of ASP used to make sure we do not cross the threshold into "critical storage". Recently the amount of ASP has be slowly climbing, and I was part of a trio asked to determine what could be done to reduce the percentage. One looked for unapplied PTFs, another for exceedingly large files, and I was told to look at "everything else".

I know that one long neglected aspect, that is often overlooked, are the number, size, and age of the spool files on this IBM i partition. There are some spool files that need to keep, certain financial period end reports, but others, compile listing, job logs, do not.

First thing is to determine the size of the problem. Fortunately there is a SQL View that allows me to do this easily, OUTPUT_QUEUE_ENTRIES. I can just run the following statement and have the total number of spool files and total size returned to me:

Wednesday, October 23, 2019

More tips for using Temporal tables

db2 for i temporal tables audit user, recovering deleted row, how to delete tables

I first wrote about using Temporal tables when they were introduced as part of IBM i 7.3, back in 2016. I thought they would become widely used, as they provide a way to look at the same data as it was at different times in the past.

Having had three years to "play" with Temporal tables, I have learned many things I can do with them, that I did not know when I first wrote about them. I thought this would be a good opportunity to revisit them, and to share some of the extra tips and tricks I have learned.

One thing to remember, and I always forget, is that all of the tables used must be journaled. For the easiest way to do this refer to my original post about Temporal tables.

For a Temporal table I need a table that will be the "live" table. I have deliberately kept this example very simple, so the data does not get in the way of the important columns needed for a Temporal table. My example table will only contain two "data" columns, the rest are used by the Temporal table process. This is the example table I will be using:

Tuesday, October 22, 2019

The end of developerWorks is nigh

I noticed at the top of all the IBM developerWorks pages I visit there is the following message:

The developerWorks Connections platform will be sunset on December 31, 2019. On January 1, 2020, this community and its content (wikis, blogs, forums, files, activities) will no longer be available.

Wednesday, October 16, 2019

Finding the machine number and retrieving data from the job log

machine type of the power systems server you are using

The following question was posed on Twitter last week:

For the life of me I can't figure how to get an IBM i machine type programmatically. Suggestions?

While I was looking in all the places I could think of ex-IBM-er Dawn May provided an answer I could not better:

Thursday, October 10, 2019

Additions to RPG in new TRs

rpg enhancements to ibm i 7.4 tr1 and 7.3 tr7

On Tuesday I wrote about the new additions to Db2 for i in the latest Technology Refreshes, IBM i 7.2 TR1 and 7.3 TR7. Today I bring you the additions to the RPG programming language.

Barbara Morris, lead developer for the RPG compilers at IBM, published a blog in the RPG Cafe part of the IBM Community website. In this blog she introduces us to the three additions coming with these TRs:

Wednesday, October 9, 2019

Putting multiple SQL Selects together to make one row

multiple sql select statements within 1 select statement to make a single row

I was working with one of the Tech Support guys at work putting together bits of information into a one row of data that would allow him to display information on any IBM i partition. This is not something I had done before, and after a little while "playing" I had a statement that put bits of information from different sources together into one row.

I am sure we are familiar with using a Select to get information from a table/file, or perhaps join tables/files together, to get the results. But they are always related, with columns/fields that can be used to link the tables/files together. In this scenario I am running several independent Select statements, each producing one row of results, I want to combine into one. The information want is:

  1. Partition name
  2. Date and time
  3. Default CCSID, from system value
  4. Number of spool files in QEZJOBLOG output queue
  5. Model number
  6. Release of IBM i

Tuesday, October 8, 2019

Db2 enhancements in IBM i 7.4 TR1 and 7.3 TR7

ibmi 7.4 tr1 and 7.3 tr7

It is a good job I checked the pages for the new Technology Refreshes today as they now contain data, and I can find announcement documents too. But there has been no fanfare on platforms like Twitter that I would have expected.

It would appear that the two TRs contain the same Db2 for i enhancements. Just having a quick look I can see several I am very interested in trying:

  • Views to see which modules and service programs and bound to programs
  • Db2 services for data queues
  • Db2 services for the IFS
  • A way to use SQL to write directly to the job log

In other words lots of good stuff to play with and write about in the future.

Thursday, October 3, 2019

Waiting for the new TRs

waiting for new trs

It is now October, and I am impatiently waiting for the new Technology Refreshes for IBM i.

In previous years the announcement had been made in August or September for the second round of the biannual TRs. This year we are still waiting.

Pages were added to the IBM Community wiki on September 29, which makes me think it cannot be too long before the announcement is made.

You can find the pages here...

As soon as the announcements are made you will be able to read about them here.

Wednesday, October 2, 2019

Getting database relationships using SQL

get list of dependent objects for a file using sql

I was asked if it was possible to get the same information that is shown using the Display Database Relations command, DSPDBR, via SQL. You can generate an output file using the DSPDBR command, but that was not what was wanted.

There is a Db2 for i view SYSVIEWDEP which returns the dependencies of a view to its "parent". But it just contains only SQL views and indexes, no information for logical files. As I work in an environment where there are thousands of logical files in the ERP application this view does not give the dependency information I needed.

If the information is available via a command it must be contained somewhere within the IBM i operating system. In this case the dependency information is in the file QADBFDEP in QSYS.